commit 5cb1ff372c6eea614942a1d922db716c6115cb74 Author: arDTDev Date: Tue Nov 25 20:14:41 2025 +0900 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..620b2f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +################################################################################ +# 이 .gitignore 파일은 Microsoft(R) Visual Studio에서 자동으로 만들어졌습니다. +################################################################################ + +/VisionCrevis(WinSock)_Euresys_v22 +*.suo +*.user +*.pdb +bin +obj +desktop.ini +.vs +packages +*.zip \ No newline at end of file diff --git a/FrontEnd/.gitignore b/FrontEnd/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/FrontEnd/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/FrontEnd/App.tsx b/FrontEnd/App.tsx new file mode 100644 index 0000000..5ea0e96 --- /dev/null +++ b/FrontEnd/App.tsx @@ -0,0 +1,224 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { HashRouter, Routes, Route } from 'react-router-dom'; +import { Layout } from './components/layout/Layout'; +import { HomePage } from './pages/HomePage'; +import { IOMonitorPage } from './pages/IOMonitorPage'; +import { RecipePage } from './pages/RecipePage'; +import { SystemState, Recipe, IOPoint, LogEntry, RobotTarget, ConfigItem } from './types'; +import { comms } from './communication'; + +// --- MOCK DATA --- + + +const INITIAL_IO: IOPoint[] = [ + ...Array.from({ length: 32 }, (_, i) => { + let name = `DOUT_${i.toString().padStart(2, '0')}`; + if (i === 0) name = "Tower Lamp Red"; + if (i === 1) name = "Tower Lamp Yel"; + if (i === 2) name = "Tower Lamp Grn"; + return { id: i, name, type: 'output' as const, state: false }; + }), + ...Array.from({ length: 32 }, (_, i) => { + let name = `DIN_${i.toString().padStart(2, '0')}`; + let initialState = false; + if (i === 0) name = "Front Door Sensor"; + if (i === 1) name = "Right Door Sensor"; + if (i === 2) name = "Left Door Sensor"; + if (i === 3) name = "Back Door Sensor"; + if (i === 4) { name = "Main Air Pressure"; initialState = true; } + if (i === 5) { name = "Vacuum Generator"; initialState = true; } + if (i === 6) { name = "Emergency Stop Loop"; initialState = true; } + return { id: i, name, type: 'input' as const, state: initialState }; + }) +]; + +// --- MAIN APP --- + +export default function App() { + const [activeTab, setActiveTab] = useState<'recipe' | 'motion' | 'camera' | 'setting' | 'initialize' | null>(null); + const [systemState, setSystemState] = useState(SystemState.IDLE); + const [currentRecipe, setCurrentRecipe] = useState({ id: '0', name: 'No Recipe', lastModified: '-' }); + const [robotTarget, setRobotTarget] = useState({ x: 0, y: 0, z: 0 }); + const [logs, setLogs] = useState([]); + const [ioPoints, setIoPoints] = useState([]); + const [currentTime, setCurrentTime] = useState(new Date()); + const [isLoading, setIsLoading] = useState(true); + const [isHostConnected, setIsHostConnected] = useState(false); + const videoRef = useRef(null); + + // -- COMMUNICATION LAYER -- + useEffect(() => { + const unsubscribe = comms.subscribe((msg: any) => { + if (!msg) return; + + if (msg.type === 'CONNECTION_STATE') { + setIsHostConnected(msg.connected); + addLog(msg.connected ? "HOST CONNECTED" : "HOST DISCONNECTED", msg.connected ? "info" : "warning"); + } + + if (msg.type === 'STATUS_UPDATE') { + if (msg.position) { + setRobotTarget({ x: msg.position.x, y: msg.position.y, z: msg.position.z }); + } + if (msg.ioState) { + setIoPoints(prev => { + const newIO = [...prev]; + msg.ioState.forEach((update: { id: number, type: string, state: boolean }) => { + const idx = newIO.findIndex(p => p.id === update.id && p.type === update.type); + if (idx >= 0) newIO[idx] = { ...newIO[idx], state: update.state }; + }); + return newIO; + }); + } + if (msg.sysState) { + setSystemState(msg.sysState as SystemState); + } + } + }); + + addLog("COMMUNICATION CHANNEL OPEN", "info"); + setIsHostConnected(comms.getConnectionState()); + + const timer = setInterval(() => setCurrentTime(new Date()), 1000); + return () => { + clearInterval(timer); + unsubscribe(); + }; + }, []); + + // -- INITIALIZATION -- + useEffect(() => { + const initSystem = async () => { + addLog("SYSTEM STARTED", "info"); + // Initial IO data will be loaded by HomePage when it mounts + try { + const ioStr = await comms.getIOList(); + const ioData = JSON.parse(ioStr); + setIoPoints(ioData); + addLog("IO LIST LOADED", "info"); + } catch (e) { + addLog("FAILED TO LOAD IO DATA", "error"); + } + setIsLoading(false); + }; + initSystem(); + }, []); + + const addLog = (msg: string, type: 'info' | 'warning' | 'error' = 'info') => { + setLogs(prev => [{ id: Date.now() + Math.random(), timestamp: new Date().toLocaleTimeString(), message: msg, type }, ...prev].slice(0, 50)); + }; + + // Logic Helpers + const doorStates = { + front: ioPoints.find(p => p.id === 0 && p.type === 'input')?.state || false, + right: ioPoints.find(p => p.id === 1 && p.type === 'input')?.state || false, + left: ioPoints.find(p => p.id === 2 && p.type === 'input')?.state || false, + back: ioPoints.find(p => p.id === 3 && p.type === 'input')?.state || false, + }; + const isLowPressure = !(ioPoints.find(p => p.id === 4 && p.type === 'input')?.state ?? true); + const isEmergencyStop = !(ioPoints.find(p => p.id === 6 && p.type === 'input')?.state ?? true); + + // -- COMMAND HANDLERS -- + + const handleControl = async (action: 'start' | 'stop' | 'reset') => { + if (isEmergencyStop && action === 'start') return addLog('EMERGENCY STOP ACTIVE', 'error'); + + try { + await comms.sendControl(action.toUpperCase()); + addLog(`CMD SENT: ${action.toUpperCase()}`, 'info'); + } catch (e) { + addLog('COMM ERROR', 'error'); + } + }; + + const toggleIO = async (id: number, type: 'input' | 'output', forceState?: boolean) => { + if (type === 'output') { + const current = ioPoints.find(p => p.id === id && p.type === type)?.state; + const nextState = forceState !== undefined ? forceState : !current; + await comms.setIO(id, nextState); + } + }; + + const moveAxis = async (axis: 'X' | 'Y' | 'Z', value: number) => { + if (isEmergencyStop) return; + await comms.moveAxis(axis, value); + addLog(`CMD MOVE ${axis}: ${value}`, 'info'); + }; + + const handleSaveConfig = async (newConfig: ConfigItem[]) => { + try { + await comms.saveConfig(JSON.stringify(newConfig)); + addLog("CONFIGURATION SAVED", "info"); + } catch (e) { + console.error(e); + addLog("FAILED TO SAVE CONFIG", "error"); + } + }; + + const handleSelectRecipe = async (r: Recipe) => { + try { + addLog(`LOADING: ${r.name}`, 'info'); + const result = await comms.selectRecipe(r.id); + + if (result.success) { + setCurrentRecipe(r); + addLog(`RECIPE LOADED: ${r.name}`, 'info'); + } else { + addLog(`RECIPE LOAD FAILED: ${result.message}`, 'error'); + } + } catch (error: any) { + addLog(`RECIPE LOAD ERROR: ${error.message || 'Unknown error'}`, 'error'); + console.error('Recipe selection error:', error); + } + }; + + return ( + + + + setActiveTab(null)} + videoRef={videoRef} + /> + } + /> + + } + /> + } + /> + + + + ); +} diff --git a/FrontEnd/README.md b/FrontEnd/README.md new file mode 100644 index 0000000..0403e84 --- /dev/null +++ b/FrontEnd/README.md @@ -0,0 +1,20 @@ +
+GHBanner +
+ +# Run and deploy your AI Studio app + +This contains everything you need to run your app locally. + +View your app in AI Studio: https://ai.studio/apps/drive/1WUaQ4phJ_kZujzyiakV5X8RFgCwgaUDq + +## Run Locally + +**Prerequisites:** Node.js + + +1. Install dependencies: + `npm install` +2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key +3. Run the app: + `npm run dev` diff --git a/FrontEnd/build.bat b/FrontEnd/build.bat new file mode 100644 index 0000000..21413ce --- /dev/null +++ b/FrontEnd/build.bat @@ -0,0 +1,10 @@ +@echo off +echo Building Frontend... +call npm run build +if %ERRORLEVEL% NEQ 0 ( + echo Build Failed! + pause + exit /b %ERRORLEVEL% +) +echo Build Success! +pause diff --git a/FrontEnd/communication.ts b/FrontEnd/communication.ts new file mode 100644 index 0000000..d4e5363 --- /dev/null +++ b/FrontEnd/communication.ts @@ -0,0 +1,289 @@ + +// Check if running in WebView2 +const isWebView = typeof window !== 'undefined' && !!window.chrome?.webview; + +// 비동기 프록시 캐싱 (한 번만 초기화) - 매번 접근 시 오버헤드 제거 +const machine = isWebView ? window.chrome!.webview!.hostObjects.machine : null; + +type MessageCallback = (data: any) => void; + +class CommunicationLayer { + private listeners: MessageCallback[] = []; + private ws: WebSocket | null = null; + private isConnected = false; + + constructor() { + if (isWebView) { + console.log("[COMM] Running in WebView2 Mode"); + this.isConnected = true; // WebView2 is always connected + window.chrome!.webview!.addEventListener('message', (event: any) => { + this.notifyListeners(event.data); + }); + } else { + console.log("[COMM] Running in Browser Mode (WebSocket)"); + this.connectWebSocket(); + } + } + + private connectWebSocket() { + this.ws = new WebSocket('ws://localhost:8081'); + + this.ws.onopen = () => { + console.log("[COMM] WebSocket Connected"); + this.isConnected = true; + this.notifyListeners({ type: 'CONNECTION_STATE', connected: true }); + }; + + this.ws.onmessage = (event) => { + try { + const data = JSON.parse(event.data); + this.notifyListeners(data); + } catch (e) { + console.error("[COMM] JSON Parse Error", e); + } + }; + + this.ws.onclose = () => { + console.log("[COMM] WebSocket Closed. Reconnecting..."); + this.isConnected = false; + this.notifyListeners({ type: 'CONNECTION_STATE', connected: false }); + setTimeout(() => this.connectWebSocket(), 2000); + }; + + this.ws.onerror = (err) => { + console.error("[COMM] WebSocket Error", err); + }; + } + + private notifyListeners(data: any) { + this.listeners.forEach(cb => cb(data)); + } + + public subscribe(callback: MessageCallback) { + this.listeners.push(callback); + return () => { + this.listeners = this.listeners.filter(cb => cb !== callback); + }; + } + + public getConnectionState(): boolean { + return this.isConnected; + } + + // --- API Methods --- + + public async getConfig(): Promise { + if (isWebView && machine) { + return await machine.GetConfig(); + } else { + // WebSocket Request/Response Pattern + return new Promise((resolve, reject) => { + // 1. Wait for Connection (max 2s) + if (!this.isConnected) { + // Simple wait logic (could be improved) + setTimeout(() => { + if (!this.isConnected) reject("WebSocket connection timeout"); + }, 2000); + } + + // 2. Send Request with Timeout (max 10s) + const timeoutId = setTimeout(() => { + this.listeners = this.listeners.filter(cb => cb !== handler); + reject("Config fetch timeout"); + }, 10000); + + const handler = (data: any) => { + if (data.type === 'CONFIG_DATA') { + clearTimeout(timeoutId); + this.listeners = this.listeners.filter(cb => cb !== handler); + resolve(JSON.stringify(data.data)); + } + }; + this.listeners.push(handler); + this.ws?.send(JSON.stringify({ type: 'GET_CONFIG' })); + }); + } + } + + public async getIOList(): Promise { + if (isWebView && machine) { + return await machine.GetIOList(); + } else { + return new Promise((resolve, reject) => { + if (!this.isConnected) { + setTimeout(() => { + if (!this.isConnected) reject("WebSocket connection timeout"); + }, 2000); + } + + const timeoutId = setTimeout(() => { + this.listeners = this.listeners.filter(cb => cb !== handler); + reject("IO fetch timeout"); + }, 10000); + + const handler = (data: any) => { + if (data.type === 'IO_LIST_DATA') { + clearTimeout(timeoutId); + this.listeners = this.listeners.filter(cb => cb !== handler); + resolve(JSON.stringify(data.data)); + } + }; + this.listeners.push(handler); + this.ws?.send(JSON.stringify({ type: 'GET_IO_LIST' })); + }); + } + } + + public async getRecipeList(): Promise { + if (isWebView && machine) { + return await machine.GetRecipeList(); + } else { + return new Promise((resolve, reject) => { + if (!this.isConnected) { + setTimeout(() => { + if (!this.isConnected) reject("WebSocket connection timeout"); + }, 2000); + } + + const timeoutId = setTimeout(() => { + this.listeners = this.listeners.filter(cb => cb !== handler); + reject("Recipe fetch timeout"); + }, 10000); + + const handler = (data: any) => { + if (data.type === 'RECIPE_LIST_DATA') { + clearTimeout(timeoutId); + this.listeners = this.listeners.filter(cb => cb !== handler); + resolve(JSON.stringify(data.data)); + } + }; + this.listeners.push(handler); + this.ws?.send(JSON.stringify({ type: 'GET_RECIPE_LIST' })); + }); + } + } + + public async saveConfig(configJson: string): Promise { + if (isWebView && machine) { + await machine.SaveConfig(configJson); + } else { + this.ws?.send(JSON.stringify({ type: 'SAVE_CONFIG', data: JSON.parse(configJson) })); + } + } + + public async sendControl(command: string) { + if (isWebView && machine) { + await machine.SystemControl(command); + } else { + this.ws?.send(JSON.stringify({ type: 'CONTROL', command })); + } + } + + public async moveAxis(axis: string, value: number) { + if (isWebView && machine) { + await machine.MoveAxis(axis, value); + } else { + this.ws?.send(JSON.stringify({ type: 'MOVE', axis, value })); + } + } + + public async setIO(id: number, state: boolean) { + if (isWebView && machine) { + await machine.SetIO(id, false, state); + } else { + this.ws?.send(JSON.stringify({ type: 'SET_IO', id, state })); + } + } + + public async selectRecipe(recipeId: string): Promise<{ success: boolean; message: string; recipeId?: string }> { + if (isWebView && machine) { + const resultJson = await machine.SelectRecipe(recipeId); + return JSON.parse(resultJson); + } else { + return new Promise((resolve, reject) => { + if (!this.isConnected) { + setTimeout(() => { + if (!this.isConnected) reject({ success: false, message: "WebSocket connection timeout" }); + }, 2000); + } + + const timeoutId = setTimeout(() => { + this.listeners = this.listeners.filter(cb => cb !== handler); + reject({ success: false, message: "Recipe selection timeout" }); + }, 10000); + + const handler = (data: any) => { + if (data.type === 'RECIPE_SELECTED') { + clearTimeout(timeoutId); + this.listeners = this.listeners.filter(cb => cb !== handler); + resolve(data.data); + } + }; + this.listeners.push(handler); + this.ws?.send(JSON.stringify({ type: 'SELECT_RECIPE', recipeId })); + }); + } + } + + public async copyRecipe(recipeId: string, newName: string): Promise<{ success: boolean; message: string; newRecipe?: any }> { + if (isWebView && machine) { + const resultJson = await machine.CopyRecipe(recipeId, newName); + return JSON.parse(resultJson); + } else { + return new Promise((resolve, reject) => { + if (!this.isConnected) { + setTimeout(() => { + if (!this.isConnected) reject({ success: false, message: "WebSocket connection timeout" }); + }, 2000); + } + + const timeoutId = setTimeout(() => { + this.listeners = this.listeners.filter(cb => cb !== handler); + reject({ success: false, message: "Recipe copy timeout" }); + }, 10000); + + const handler = (data: any) => { + if (data.type === 'RECIPE_COPIED') { + clearTimeout(timeoutId); + this.listeners = this.listeners.filter(cb => cb !== handler); + resolve(data.data); + } + }; + this.listeners.push(handler); + this.ws?.send(JSON.stringify({ type: 'COPY_RECIPE', recipeId, newName })); + }); + } + } + + public async deleteRecipe(recipeId: string): Promise<{ success: boolean; message: string; recipeId?: string }> { + if (isWebView && machine) { + const resultJson = await machine.DeleteRecipe(recipeId); + return JSON.parse(resultJson); + } else { + return new Promise((resolve, reject) => { + if (!this.isConnected) { + setTimeout(() => { + if (!this.isConnected) reject({ success: false, message: "WebSocket connection timeout" }); + }, 2000); + } + + const timeoutId = setTimeout(() => { + this.listeners = this.listeners.filter(cb => cb !== handler); + reject({ success: false, message: "Recipe delete timeout" }); + }, 10000); + + const handler = (data: any) => { + if (data.type === 'RECIPE_DELETED') { + clearTimeout(timeoutId); + this.listeners = this.listeners.filter(cb => cb !== handler); + resolve(data.data); + } + }; + this.listeners.push(handler); + this.ws?.send(JSON.stringify({ type: 'DELETE_RECIPE', recipeId })); + }); + } + } +} + +export const comms = new CommunicationLayer(); diff --git a/FrontEnd/components/CameraPanel.tsx b/FrontEnd/components/CameraPanel.tsx new file mode 100644 index 0000000..6e5d987 --- /dev/null +++ b/FrontEnd/components/CameraPanel.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Camera, Crosshair } from 'lucide-react'; +import { PanelHeader } from './common/PanelHeader'; + +interface CameraPanelProps { + videoRef: React.RefObject; +} + +export const CameraPanel: React.FC = ({ videoRef }) => ( +
+ +
+
+
+ + + + +
+
+); diff --git a/FrontEnd/components/IOPanel.tsx b/FrontEnd/components/IOPanel.tsx new file mode 100644 index 0000000..504c2df --- /dev/null +++ b/FrontEnd/components/IOPanel.tsx @@ -0,0 +1,50 @@ +import React, { useState } from 'react'; +import { Activity } from 'lucide-react'; +import { IOPoint } from '../types'; +import { PanelHeader } from './common/PanelHeader'; +import { TechButton } from './common/TechButton'; + +interface IOPanelProps { + ioPoints: IOPoint[]; + onToggle: (id: number, type: 'input' | 'output') => void; +} + +export const IOPanel: React.FC = ({ ioPoints, onToggle }) => { + const [tab, setTab] = useState<'in' | 'out'>('in'); + const points = ioPoints.filter(p => p.type === (tab === 'in' ? 'input' : 'output')); + + return ( +
+ +
+ setTab('in')} className="flex-1">Inputs + setTab('out')} className="flex-1" variant="blue">Outputs +
+
+ {points.map(p => ( +
onToggle(p.id, p.type)} + className={` + aspect-square flex flex-col items-center justify-center p-1 cursor-pointer transition-all border + clip-tech + ${p.state + ? (p.type === 'output' + ? 'bg-neon-green/10 border-neon-green text-neon-green shadow-[0_0_10px_rgba(10,255,0,0.3)]' + : 'bg-neon-yellow/10 border-neon-yellow text-neon-yellow shadow-[0_0_10px_rgba(255,230,0,0.3)]') + : 'bg-slate-900/50 border-slate-700 text-slate-600 hover:border-slate-500'} + `} + > +
+ + {p.type === 'input' ? 'I' : 'Q'}{p.id.toString().padStart(2, '0')} + + + {p.name.replace(/(Sensor|Door|Lamp)/g, '')} + +
+ ))} +
+
+ ); +}; diff --git a/FrontEnd/components/InitializeModal.tsx b/FrontEnd/components/InitializeModal.tsx new file mode 100644 index 0000000..b8ed218 --- /dev/null +++ b/FrontEnd/components/InitializeModal.tsx @@ -0,0 +1,181 @@ +import React, { useState, useEffect } from 'react'; +import { Target, CheckCircle2, Loader2 } from 'lucide-react'; +import { TechButton } from './common/TechButton'; + +interface InitializeModalProps { + isOpen: boolean; + onClose: () => void; +} + +type AxisStatus = 'pending' | 'initializing' | 'completed'; + +interface AxisState { + name: string; + status: AxisStatus; + progress: number; +} + +export const InitializeModal: React.FC = ({ isOpen, onClose }) => { + const [axes, setAxes] = useState([ + { name: 'X-Axis', status: 'pending', progress: 0 }, + { name: 'Y-Axis', status: 'pending', progress: 0 }, + { name: 'Z-Axis', status: 'pending', progress: 0 }, + ]); + const [isInitializing, setIsInitializing] = useState(false); + + // Reset state when modal closes + useEffect(() => { + if (!isOpen) { + setAxes([ + { name: 'X-Axis', status: 'pending', progress: 0 }, + { name: 'Y-Axis', status: 'pending', progress: 0 }, + { name: 'Z-Axis', status: 'pending', progress: 0 }, + ]); + setIsInitializing(false); + } + }, [isOpen]); + + const startInitialization = () => { + setIsInitializing(true); + + // Initialize each axis with 3 second delay between them + axes.forEach((axis, index) => { + const delay = index * 3000; // 0s, 3s, 6s + + // Start initialization after delay + setTimeout(() => { + setAxes(prev => { + const next = [...prev]; + next[index] = { ...next[index], status: 'initializing', progress: 0 }; + return next; + }); + + // Progress animation (3 seconds) + const startTime = Date.now(); + const duration = 3000; + const interval = setInterval(() => { + const elapsed = Date.now() - startTime; + const progress = Math.min((elapsed / duration) * 100, 100); + + setAxes(prev => { + const next = [...prev]; + next[index] = { ...next[index], progress }; + return next; + }); + + if (progress >= 100) { + clearInterval(interval); + setAxes(prev => { + const next = [...prev]; + next[index] = { ...next[index], status: 'completed', progress: 100 }; + return next; + }); + + // Check if all axes are completed + setAxes(prev => { + if (prev.every(a => a.status === 'completed')) { + // Auto close after 500ms + setTimeout(() => { + onClose(); + }, 500); + } + return prev; + }); + } + }, 50); + }, delay); + }); + }; + + if (!isOpen) return null; + + const allCompleted = axes.every(a => a.status === 'completed'); + + return ( +
+
+ + +

+ AXIS INITIALIZATION +

+ +
+ {axes.map((axis, index) => ( +
+
+
+ {axis.status === 'completed' ? ( + + ) : axis.status === 'initializing' ? ( + + ) : ( +
+ )} + + {axis.name} + +
+ + {axis.status === 'completed' + ? 'COMPLETED' + : axis.status === 'initializing' + ? `${Math.round(axis.progress)}%` + : 'WAITING'} + +
+ + {/* Progress Bar */} +
+
+
+
+ ))} +
+ + {allCompleted && ( +
+ + ✓ ALL AXES INITIALIZED SUCCESSFULLY + +
+ )} + +
+ + CANCEL + + + {isInitializing ? 'INITIALIZING...' : 'START INITIALIZATION'} + +
+
+
+ ); +}; diff --git a/FrontEnd/components/Machine3D.tsx b/FrontEnd/components/Machine3D.tsx new file mode 100644 index 0000000..ce6115e --- /dev/null +++ b/FrontEnd/components/Machine3D.tsx @@ -0,0 +1,633 @@ + +import React, { useRef, useMemo } from 'react'; +import { Canvas, useFrame } from '@react-three/fiber'; +import { OrbitControls, Grid, PerspectiveCamera, Text, Box, Environment, RoundedBox } from '@react-three/drei'; +import * as THREE from 'three'; +import { RobotTarget, IOPoint } from '../types'; + +interface Machine3DProps { + target: RobotTarget; + ioState: IOPoint[]; + doorStates: { + front: boolean; + right: boolean; + left: boolean; + back: boolean; + }; +} + +// -- Parts Components -- + +const TowerLamp = ({ ioState }: { ioState: IOPoint[] }) => { + // Outputs 0,1,2 mapped to Red, Yellow, Green + const redOn = ioState.find(io => io.id === 0 && io.type === 'output')?.state; + const yellowOn = ioState.find(io => io.id === 1 && io.type === 'output')?.state; + const greenOn = ioState.find(io => io.id === 2 && io.type === 'output')?.state; + + const redMat = useRef(null); + const yelMat = useRef(null); + const grnMat = useRef(null); + + useFrame((state) => { + const time = state.clock.elapsedTime; + const pulse = (Math.sin(time * 6) * 0.5 + 0.5); + const intensity = 0.5 + (pulse * 3.0); + + if (redMat.current) { + redMat.current.emissiveIntensity = redOn ? intensity : 0; + redMat.current.opacity = redOn ? 1.0 : 0.3; + redMat.current.color.setHex(redOn ? 0xff0000 : 0x550000); + } + if (yelMat.current) { + yelMat.current.emissiveIntensity = yellowOn ? intensity : 0; + yelMat.current.opacity = yellowOn ? 1.0 : 0.3; + yelMat.current.color.setHex(yellowOn ? 0xffff00 : 0x555500); + } + if (grnMat.current) { + grnMat.current.emissiveIntensity = greenOn ? intensity : 0; + grnMat.current.opacity = greenOn ? 1.0 : 0.3; + grnMat.current.color.setHex(greenOn ? 0x00ff00 : 0x005500); + } + }); + + return ( + + {/* Pole */} + + + + + {/* Green */} + + + + + {/* Yellow */} + + + + + {/* Red */} + + + + + + ); +}; + +// -- DIPPING STATION COMPONENTS -- + +const LiquidBath = ({ + position, + label, + liquidColor, +}: { + position: [number, number, number], + label: string, + liquidColor: string, +}) => { + const width = 1.0; + const depth = 0.8; + const height = 0.3; + const wallThick = 0.03; + + const SteelMaterial = ( + + ); + + return ( + + + + + {SteelMaterial} + + + + {SteelMaterial} + + + + {SteelMaterial} + + + + {SteelMaterial} + + + + {SteelMaterial} + + + + + + + + {label} + + + ); +}; + +const HakkoFX305 = ({ position }: { position: [number, number, number] }) => { + return ( + + {/* Main Blue Chassis */} + + + + + + + + + + + + + + + + + + + + + HAKKO + + + FX-305 + + + + + + + + + + + + + + + + + + + + {[-0.12, 0, 0.12, 0.24].map((x, i) => ( + + + + + ))} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2. HAKKO SOLDER + + + ); +}; + +const DippingStations = () => { + return ( + + + + + + + + + + ); +}; + +const Door = ({ + position, + rotation = [0,0,0], + size, + isOpen +}: { + position: [number, number, number], + rotation?: [number, number, number], + size: [number, number], + isOpen: boolean +}) => { + const meshRef = useRef(null); + + useFrame((state, delta) => { + if (!meshRef.current) return; + const targetY = isOpen ? position[1] + 2 : position[1]; + meshRef.current.position.y = THREE.MathUtils.lerp(meshRef.current.position.y, targetY, delta * 5); + }); + + return ( + + + + + + + + + + + + + ); +}; + +const MachineFrame = ({ doorStates }: { doorStates: { front: boolean, right: boolean, left: boolean, back: boolean } }) => { + return ( + + + + + + + + {[[-2, -2], [2, -2], [2, 2], [-2, 2]].map(([x, z], i) => ( + + + + + ))} + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +// --- MISUMI STYLE INDUSTRIAL ACTUATOR COMPONENT --- + +const IndustrialActuatorRail = ({ length, label, hasMotor = true }: { length: number, label?: string, hasMotor?: boolean }) => { + const width = 0.14; // Actuator Width + const height = 0.08; // Actuator Height (Profile) + + return ( + + {/* 1. Main Aluminum Body (White/Light Grey Matte) */} + + + + + {/* 2. Top Stainless Steel Cover Strip */} + + + + + + {/* 3. Black Gap/Slit for Slider */} + + + + + + {/* 4. End Caps (Plastic White) */} + + + + + + + + + + + + {/* 5. Servo Motor Unit (Black & Silver) */} + {hasMotor && ( + + {/* Flange */} + + + + + {/* Motor Body */} + + + + + {/* Encoder Cap */} + + + + + {/* Cable Gland */} + + + + + + )} + + {/* 6. Label/Branding */} + {label && ( + + {label} + + )} + + ); +} + +// The Moving Block on top of the actuator +const IndustrialSlider = ({ width = 0.16, length = 0.18, height = 0.03 }) => { + return ( + + + + + {/* Mounting Holes (Visual) */} + {[-1, 1].map(x => [-1, 1].map(z => ( + + + + + )))} + + ) +} + +// -- MAIN ROBOT ASSEMBLY -- + +const Robot = ({ target }: { target: RobotTarget }) => { + const bridgeGroup = useRef(null); + const carriageGroup = useRef(null); + const zAxisGroup = useRef(null); + + useFrame((state, delta) => { + if (bridgeGroup.current) { + // Y-Axis Movement + bridgeGroup.current.position.z = THREE.MathUtils.lerp(bridgeGroup.current.position.z, target.y, delta * 3); + } + if (carriageGroup.current) { + // X-Axis Movement + carriageGroup.current.position.x = THREE.MathUtils.lerp(carriageGroup.current.position.x, target.x, delta * 3); + } + if (zAxisGroup.current) { + // Z-Axis Movement + zAxisGroup.current.position.y = THREE.MathUtils.lerp(zAxisGroup.current.position.y, target.z, delta * 3); + } + }); + + return ( + + + {/* --- Y-AXIS (Left & Right Fixed Actuators) --- */} + + + + + + + + + + {/* --- MOVING BRIDGE (Y-AXIS CARRIAGE + X-AXIS ACTUATOR) --- */} + + + {/* Y-Sliders (Connecting Bridge to Y-Rails) */} + + + + {/* Bridge Beam Structure */} + + + + + + {/* X-AXIS ACTUATOR (Mounted on top of Bridge) */} + + + + + {/* --- MOVING CARRIAGE (X-AXIS SLIDER + Z-AXIS) --- */} + + + {/* X-Slider */} + + + + + {/* --- Z-AXIS ACTUATOR (Vertical) --- */} + + {/* Z-Actuator Body (Fixed to X-Slider) */} + + + {/* Z-Motor on Top */} + + + + + + + + + {/* MOVING Z-HEAD (The Slider of Z-Axis) */} + + + {/* Connection Plate */} + + + + + + {/* PICKER MECHANISM */} + + + + + + {/* Fingers */} + + + + + + + + + + {/* PCB STRIP */} + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export const Machine3D: React.FC = ({ target, ioState, doorStates }) => { + return ( + + + + + + + + + + + + + + + + ); +}; diff --git a/FrontEnd/components/ModelInfoPanel.tsx b/FrontEnd/components/ModelInfoPanel.tsx new file mode 100644 index 0000000..6f1c66b --- /dev/null +++ b/FrontEnd/components/ModelInfoPanel.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Box, Cpu, Activity } from 'lucide-react'; +import { Recipe } from '../types'; +import { CyberPanel } from './common/CyberPanel'; + +interface ModelInfoPanelProps { + currentRecipe: Recipe; +} + +export const ModelInfoPanel: React.FC = ({ currentRecipe }) => { + return ( + +
+ Model Information + +
+ +
+
+
SELECTED MODEL
+
+ + {currentRecipe.name} +
+
+ +
+
+
Model ID
+
{currentRecipe.id}
+
+
+
Last Mod
+
{currentRecipe.lastModified}
+
+
+ +
+
+ TARGET CYCLE + 12.5s +
+
+
+
+ +
+ EST. YIELD + 99.8% +
+
+
+
+
+
+
+ ); +}; diff --git a/FrontEnd/components/MotionPanel.tsx b/FrontEnd/components/MotionPanel.tsx new file mode 100644 index 0000000..c19adee --- /dev/null +++ b/FrontEnd/components/MotionPanel.tsx @@ -0,0 +1,67 @@ +import React, { useState } from 'react'; +import { Move } from 'lucide-react'; +import { RobotTarget, AxisPosition } from '../types'; +import { PanelHeader } from './common/PanelHeader'; +import { TechButton } from './common/TechButton'; + +const MOCK_POSITIONS: AxisPosition[] = [ + { id: 'p1', name: 'Home Position', axis: 'X', value: 0, speed: 100, acc: 100, dec: 100 }, + { id: 'p2', name: 'Pick Pos A', axis: 'X', value: -1.5, speed: 500, acc: 200, dec: 200 }, + { id: 'p3', name: 'Place Pos B', axis: 'X', value: 1.5, speed: 500, acc: 200, dec: 200 }, + { id: 'p4', name: 'Scan Index', axis: 'X', value: 0.5, speed: 300, acc: 100, dec: 100 }, + { id: 'py1', name: 'Rear Limit', axis: 'Y', value: -1.5, speed: 200, acc: 100, dec: 100 }, + { id: 'pz1', name: 'Safe Height', axis: 'Z', value: 0, speed: 50, acc: 50, dec: 50 }, +]; + +interface MotionPanelProps { + robotTarget: RobotTarget; + onMove: (axis: 'X' | 'Y' | 'Z', val: number) => void; +} + +export const MotionPanel: React.FC = ({ robotTarget, onMove }) => { + const [axis, setAxis] = useState<'X' | 'Y' | 'Z'>('X'); + + return ( +
+ +
+ {['X', 'Y', 'Z'].map(a => ( + + ))} +
+ +
+
Current Position
+
+ {robotTarget[axis.toLowerCase() as 'x' | 'y' | 'z'].toFixed(3)} + mm +
+
+ +
+ {MOCK_POSITIONS.filter(p => p.axis === axis).map(p => ( +
+ {p.name} + +
+ ))} +
+ +
+ onMove(axis, robotTarget[axis.toLowerCase() as 'x' | 'y' | 'z'] - 0.1)}>- + onMove(axis, robotTarget[axis.toLowerCase() as 'x' | 'y' | 'z'] + 0.1)}>+ +
+
+ ); +}; diff --git a/FrontEnd/components/RecipePanel.tsx b/FrontEnd/components/RecipePanel.tsx new file mode 100644 index 0000000..17cf25c --- /dev/null +++ b/FrontEnd/components/RecipePanel.tsx @@ -0,0 +1,119 @@ +import React, { useState, useEffect } from 'react'; +import { Layers, Check, Settings, X, RotateCw } from 'lucide-react'; +import { useNavigate } from 'react-router-dom'; +import { Recipe } from '../types'; +import { TechButton } from './common/TechButton'; +import { comms } from '../communication'; + +interface RecipePanelProps { + isOpen: boolean; + currentRecipe: Recipe; + onSelectRecipe: (r: Recipe) => void; + onClose: () => void; +} + +export const RecipePanel: React.FC = ({ isOpen, currentRecipe, onSelectRecipe, onClose }) => { + const navigate = useNavigate(); + const [recipes, setRecipes] = useState([]); + const [isLoading, setIsLoading] = useState(false); + const [selectedId, setSelectedId] = useState(currentRecipe.id); + + // Fetch recipes when panel opens + useEffect(() => { + if (isOpen) { + const fetchRecipes = async () => { + setIsLoading(true); + try { + const recipeStr = await comms.getRecipeList(); + const recipeData: Recipe[] = JSON.parse(recipeStr); + setRecipes(recipeData); + } catch (e) { + console.error('Failed to fetch recipes:', e); + } + setIsLoading(false); + }; + fetchRecipes(); + } + }, [isOpen]); + + // Update selected ID when currentRecipe changes + useEffect(() => { + setSelectedId(currentRecipe.id); + }, [currentRecipe.id]); + + const handleConfirm = () => { + const selected = recipes.find(r => r.id === selectedId); + if (selected) { + onSelectRecipe(selected); + onClose(); + } + }; + + if (!isOpen) return null; + + return ( +
+
+ {/* Header */} +
+
+ RECIPE SELECTION +
+ +
+ + {/* List (Max height for ~5 items) */} +
+ {isLoading ? ( +
+ +
LOADING RECIPES...
+
+ ) : ( +
+ {recipes.map(recipe => ( +
setSelectedId(recipe.id)} + className={` + p-3 rounded border cursor-pointer transition-all flex items-center justify-between + ${selectedId === recipe.id + ? 'bg-neon-blue/20 border-neon-blue text-white shadow-[0_0_10px_rgba(0,243,255,0.2)]' + : 'bg-white/5 border-white/10 text-slate-400 hover:bg-white/10 hover:border-white/20'} + `} + > +
+
{recipe.name}
+
ID: {recipe.id} | MOD: {recipe.lastModified}
+
+ {selectedId === recipe.id && } +
+ ))} +
+ )} +
+ + {/* Footer Actions */} +
+ navigate('/recipe')} + > + MANAGEMENT + + + + SELECT + +
+
+
+ ); +}; diff --git a/FrontEnd/components/SettingsModal.tsx b/FrontEnd/components/SettingsModal.tsx new file mode 100644 index 0000000..86b59b6 --- /dev/null +++ b/FrontEnd/components/SettingsModal.tsx @@ -0,0 +1,166 @@ +import React from 'react'; +import { Settings, RotateCw, ChevronDown, ChevronRight } from 'lucide-react'; +import { ConfigItem } from '../types'; +import { comms } from '../communication'; + +interface SettingsModalProps { + isOpen: boolean; + onClose: () => void; + onSave: (config: ConfigItem[]) => void; +} + +const TechButton = ({ children, onClick, active = false, variant = 'blue', className = '' }: any) => { + const colors: any = { + blue: 'from-blue-600 to-cyan-600 hover:shadow-glow-blue border-cyan-400/30', + red: 'from-red-600 to-pink-600 hover:shadow-glow-red border-red-400/30', + amber: 'from-amber-500 to-orange-600 hover:shadow-orange-500/50 border-orange-400/30', + green: 'from-emerald-500 to-green-600 hover:shadow-green-500/50 border-green-400/30' + }; + + return ( + + ); +}; + +export const SettingsModal: React.FC = ({ isOpen, onClose, onSave }) => { + const [localConfig, setLocalConfig] = React.useState([]); + const [expandedGroups, setExpandedGroups] = React.useState>(new Set()); + const [isRefreshing, setIsRefreshing] = React.useState(false); + + // Fetch config data when modal opens + React.useEffect(() => { + if (isOpen) { + const fetchConfig = async () => { + setIsRefreshing(true); + try { + const configStr = await comms.getConfig(); + const config: ConfigItem[] = JSON.parse(configStr); + setLocalConfig(config); + // Auto-expand all groups initially + const groups = new Set(config.map(c => c.Group)); + setExpandedGroups(groups); + } catch (e) { + console.error('Failed to fetch config:', e); + } + setIsRefreshing(false); + }; + fetchConfig(); + } + }, [isOpen]); + + const handleChange = (idx: number, newValue: string) => { + setLocalConfig(prev => { + const next = [...prev]; + next[idx] = { ...next[idx], Value: newValue }; + return next; + }); + }; + + const toggleGroup = (group: string) => { + setExpandedGroups(prev => { + const next = new Set(prev); + if (next.has(group)) next.delete(group); + else next.add(group); + return next; + }); + }; + + // Group items by category + const groupedConfig = React.useMemo(() => { + const groups: { [key: string]: { item: ConfigItem, originalIdx: number }[] } = {}; + localConfig.forEach((item, idx) => { + if (!groups[item.Group]) groups[item.Group] = []; + groups[item.Group].push({ item, originalIdx: idx }); + }); + return groups; + }, [localConfig]); + + if (!isOpen) return null; + + return ( +
+
+ +

+ SYSTEM CONFIGURATION +

+ + {isRefreshing ? ( +
+ +
FETCHING CONFIGURATION...
+
+ ) : ( +
+
+ {Object.entries(groupedConfig).map(([groupName, items]) => ( +
+ + + {expandedGroups.has(groupName) && ( +
+ {items.map(({ item, originalIdx }) => ( +
+
+
{item.Key}
+
{item.Description}
+
+ +
+ {item.Type === 'Boolean' ? ( +
+ + + {item.Value.toUpperCase()} + +
+ ) : ( + handleChange(originalIdx, e.target.value)} + className="w-full bg-black/50 border border-slate-700 text-white font-mono text-sm px-3 py-2 focus:border-neon-blue focus:outline-none transition-colors hover:border-slate-500" + /> + )} +
+
+ ))} +
+ )} +
+ ))} +
+
+ )} + +
+ CANCEL + { onSave(localConfig); onClose(); }}>SAVE CONFIG +
+
+
+ ); +}; diff --git a/FrontEnd/components/common/CyberPanel.tsx b/FrontEnd/components/common/CyberPanel.tsx new file mode 100644 index 0000000..5558603 --- /dev/null +++ b/FrontEnd/components/common/CyberPanel.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +interface CyberPanelProps { + children?: React.ReactNode; + className?: string; +} + +export const CyberPanel: React.FC = ({ children, className = "" }) => ( +
+ {/* Decorative Corners */} + + + + + + + + + + + + + + {/* Inner Content */} +
+ {children} +
+
+); diff --git a/FrontEnd/components/common/PanelHeader.tsx b/FrontEnd/components/common/PanelHeader.tsx new file mode 100644 index 0000000..06534a7 --- /dev/null +++ b/FrontEnd/components/common/PanelHeader.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { LucideIcon } from 'lucide-react'; + +interface PanelHeaderProps { + title: string; + icon: LucideIcon; +} + +export const PanelHeader: React.FC = ({ title, icon: Icon }) => ( +
+
+ +
+

+ {title} +

+
+
+); diff --git a/FrontEnd/components/common/TechButton.tsx b/FrontEnd/components/common/TechButton.tsx new file mode 100644 index 0000000..ed0fdad --- /dev/null +++ b/FrontEnd/components/common/TechButton.tsx @@ -0,0 +1,54 @@ +import React from 'react'; + +interface TechButtonProps { + children?: React.ReactNode; + onClick?: () => void; + active?: boolean; + variant?: 'blue' | 'red' | 'amber' | 'green' | 'default' | 'danger'; + className?: string; + disabled?: boolean; + title?: string; +} + +export const TechButton: React.FC = ({ + children, + onClick, + active = false, + variant = 'blue', + className = '', + disabled = false, + title +}) => { + const colors = { + blue: 'from-blue-600 to-cyan-600 hover:shadow-glow-blue border-cyan-400/30', + red: 'from-red-600 to-pink-600 hover:shadow-glow-red border-red-400/30', + amber: 'from-amber-500 to-orange-600 hover:shadow-orange-500/50 border-orange-400/30', + green: 'from-emerald-500 to-green-600 hover:shadow-green-500/50 border-green-400/30', + default: 'from-slate-600 to-slate-500 hover:shadow-slate-500/50 border-slate-400/30', + danger: 'from-red-600 to-pink-600 hover:shadow-glow-red border-red-400/30' + }; + + const variantKey = variant === 'danger' ? 'red' : (variant === 'default' ? 'blue' : variant); + + return ( + + ); +}; diff --git a/FrontEnd/components/layout/Footer.tsx b/FrontEnd/components/layout/Footer.tsx new file mode 100644 index 0000000..d3b417f --- /dev/null +++ b/FrontEnd/components/layout/Footer.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { RobotTarget } from '../../types'; + +interface FooterProps { + isHostConnected: boolean; + robotTarget: RobotTarget; +} + +export const Footer: React.FC = ({ isHostConnected, robotTarget }) => { + return ( +
+
+ {['PLC', 'MOTION', 'VISION', 'LIGHT'].map(hw => ( +
+
+ {hw} +
+ ))} +
+
+ HOST +
+
+
+ POS.X: {robotTarget.x.toFixed(3)} + POS.Y: {robotTarget.y.toFixed(3)} + POS.Z: {robotTarget.z.toFixed(3)} +
+
+ ); +}; diff --git a/FrontEnd/components/layout/Header.tsx b/FrontEnd/components/layout/Header.tsx new file mode 100644 index 0000000..048f870 --- /dev/null +++ b/FrontEnd/components/layout/Header.tsx @@ -0,0 +1,101 @@ +import React from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; +import { Activity, Settings, Move, Camera, Layers, Cpu, Target } from 'lucide-react'; + +interface HeaderProps { + currentTime: Date; + onTabChange: (tab: 'recipe' | 'motion' | 'camera' | 'setting' | 'initialize' | null) => void; + activeTab: 'recipe' | 'motion' | 'camera' | 'setting' | 'initialize' | null; + +} + +export const Header: React.FC = ({ currentTime, onTabChange, activeTab }) => { + const navigate = useNavigate(); + const location = useLocation(); + + const isWebView = typeof window !== 'undefined' && !!window.chrome?.webview; + const isIOPage = location.pathname === '/io-monitor'; + + return ( +
+
{ + navigate('/'); + onTabChange(null); + }} + > +
+ +
+
+

+ EQUI-HANDLER PRO +

+
+ SYS.VER 4.2.0 + | + + LINK: {isWebView ? "NATIVE" : "SIMULATION"} + +
+
+
+ + {/* Top Navigation */} +
+ {/* IO Tab Switcher (only on IO page) */} + + +
+ {[ + { id: 'recipe', icon: Layers, label: 'RECIPE', path: '/' }, + { id: 'io', icon: Activity, label: 'I/O MONITOR', path: '/io-monitor' }, + { id: 'motion', icon: Move, label: 'MOTION', path: '/' }, + { id: 'camera', icon: Camera, label: 'VISION', path: '/' }, + { id: 'setting', icon: Settings, label: 'CONFIG', path: '/' }, + { id: 'initialize', icon: Target, label: 'INITIALIZE', path: '/' } + ].map(item => { + const isActive = item.id === 'io' + ? location.pathname === '/io-monitor' + : activeTab === item.id; + + return ( + + ); + })} +
+
+ +
+
+ {currentTime.toLocaleTimeString('en-GB')} +
+
+ {currentTime.toLocaleDateString().toUpperCase()} +
+
+
+ ); +}; diff --git a/FrontEnd/components/layout/Layout.tsx b/FrontEnd/components/layout/Layout.tsx new file mode 100644 index 0000000..eb0aaa1 --- /dev/null +++ b/FrontEnd/components/layout/Layout.tsx @@ -0,0 +1,61 @@ +import React from 'react'; +import { Header } from './Header'; +import { Footer } from './Footer'; +import { RobotTarget } from '../../types'; + +interface LayoutProps { + children: React.ReactNode; + currentTime: Date; + isHostConnected: boolean; + robotTarget: RobotTarget; + onTabChange: (tab: 'recipe' | 'motion' | 'camera' | 'setting' | 'initialize' | null) => void; + activeTab: 'recipe' | 'motion' | 'camera' | 'setting' | 'initialize' | null; + isLoading: boolean; +} + +export const Layout: React.FC = ({ + children, + currentTime, + isHostConnected, + robotTarget, + onTabChange, + activeTab, + isLoading +}) => { + return ( +
+ {/* Animated Nebula Background */} +
+
+
+ + {/* LOADING OVERLAY */} + {isLoading && ( +
+
+
+
+
+
+
+

SYSTEM INITIALIZING

+

ESTABLISHING CONNECTION...

+
+
+ )} + +
+ + {/* Main Content Area */} +
+ {children} +
+ +
+
+ ); +}; diff --git a/FrontEnd/index.css b/FrontEnd/index.css new file mode 100644 index 0000000..5a2b186 --- /dev/null +++ b/FrontEnd/index.css @@ -0,0 +1,108 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +/* Custom Scrollbar */ +::-webkit-scrollbar { + width: 4px; + height: 4px; +} + +::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0.2); +} + +::-webkit-scrollbar-thumb { + background: rgba(0, 243, 255, 0.3); + border-radius: 2px; +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(0, 243, 255, 0.6); +} + +/* Holographic Glass */ +.glass-holo { + background: linear-gradient(135deg, rgba(10, 15, 30, 0.7) 0%, rgba(20, 30, 50, 0.5) 100%); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(0, 243, 255, 0.1); + box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.5); + position: relative; + overflow: hidden; +} + +.glass-holo::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(0, 243, 255, 0.5), transparent); +} + +/* Active Element */ +.glass-active { + background: rgba(0, 243, 255, 0.1); + border: 1px solid rgba(0, 243, 255, 0.4); + box-shadow: 0 0 15px rgba(0, 243, 255, 0.2); +} + +/* Text Glows */ +.text-glow-blue { + color: #00f3ff; + text-shadow: 0 0 8px rgba(0, 243, 255, 0.6); +} + +.text-glow-purple { + color: #bc13fe; + text-shadow: 0 0 8px rgba(188, 19, 254, 0.6); +} + +.text-glow-red { + color: #ff0055; + text-shadow: 0 0 8px rgba(255, 0, 85, 0.6); +} + +.text-glow-green { + color: #0aff00; + text-shadow: 0 0 8px rgba(10, 255, 0, 0.6); +} + +/* Grid Background */ +.grid-bg { + background-size: 50px 50px; + background-image: + linear-gradient(to right, rgba(0, 243, 255, 0.05) 1px, transparent 1px), + linear-gradient(to bottom, rgba(0, 243, 255, 0.05) 1px, transparent 1px); + mask-image: radial-gradient(circle at center, black 40%, transparent 100%); +} + +/* CRT Scanline Effect */ +.scanlines { + background: linear-gradient(to bottom, + rgba(255, 255, 255, 0), + rgba(255, 255, 255, 0) 50%, + rgba(0, 0, 0, 0.2) 50%, + rgba(0, 0, 0, 0.2)); + background-size: 100% 4px; + pointer-events: none; +} + +/* Tech Clip Path */ +.clip-tech { + clip-path: polygon(0 0, + 100% 0, + 100% calc(100% - 10px), + calc(100% - 10px) 100%, + 0 100%); +} + +.clip-tech-inv { + clip-path: polygon(10px 0, + 100% 0, + 100% 100%, + 0 100%, + 0 10px); +} \ No newline at end of file diff --git a/FrontEnd/index.html b/FrontEnd/index.html new file mode 100644 index 0000000..bb6e3a3 --- /dev/null +++ b/FrontEnd/index.html @@ -0,0 +1,197 @@ + + + + + + Industrial HMI - Holographic + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/FrontEnd/index.tsx b/FrontEnd/index.tsx new file mode 100644 index 0000000..6d2c552 --- /dev/null +++ b/FrontEnd/index.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import '@fontsource/inter/300.css'; +import '@fontsource/inter/400.css'; +import '@fontsource/inter/500.css'; +import '@fontsource/rajdhani/500.css'; +import '@fontsource/rajdhani/600.css'; +import '@fontsource/rajdhani/700.css'; +import './index.css'; + +const rootElement = document.getElementById('root'); +if (!rootElement) { + throw new Error("Could not find root element to mount to"); +} + +const root = ReactDOM.createRoot(rootElement); +root.render( + + + +); \ No newline at end of file diff --git a/FrontEnd/metadata.json b/FrontEnd/metadata.json new file mode 100644 index 0000000..cd4ac4c --- /dev/null +++ b/FrontEnd/metadata.json @@ -0,0 +1,7 @@ +{ + "name": "Industrial HMI 3D", + "description": "A Next-Gen Human Machine Interface with 3D simulation, motion control, and I/O monitoring.", + "requestFramePermissions": [ + "camera" + ] +} \ No newline at end of file diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json new file mode 100644 index 0000000..5216068 --- /dev/null +++ b/FrontEnd/package-lock.json @@ -0,0 +1,3556 @@ +{ + "name": "industrial-hmi-3d", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "industrial-hmi-3d", + "version": "1.0.0", + "dependencies": { + "@fontsource/inter": "^5.2.8", + "@fontsource/rajdhani": "^5.2.7", + "@react-three/drei": "^9.96.1", + "@react-three/fiber": "^8.15.12", + "clsx": "^2.1.0", + "lucide-react": "^0.303.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^7.9.6", + "tailwind-merge": "^2.2.0", + "three": "^0.160.0" + }, + "devDependencies": { + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@types/three": "^0.160.0", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "tailwindcss": "^3.4.0", + "typescript": "^5.3.3", + "vite": "^5.0.10" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fontsource/inter": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@fontsource/inter/-/inter-5.2.8.tgz", + "integrity": "sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/rajdhani": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@fontsource/rajdhani/-/rajdhani-5.2.7.tgz", + "integrity": "sha512-7Gy10U688fCdeFfYKebUF2TZotdgH/ghKyMsseXPmB60lpaUHC8aoCSJl5/OpZ+KHKSU2TqBfKfteVkcIXxTAQ==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mediapipe/tasks-vision": { + "version": "0.10.17", + "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", + "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==", + "license": "Apache-2.0" + }, + "node_modules/@monogrid/gainmap-js": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.3.0.tgz", + "integrity": "sha512-KZHLPi66rC0iyzVEWe9HP1DdAH1DfrnN7lx8i09zOusDckGKu6ckHf5h1Wfa4hpQWpIeJXg20RiLbh8E8O3PQQ==", + "license": "MIT", + "dependencies": { + "promise-worker-transferable": "^1.0.4" + }, + "peerDependencies": { + "three": ">= 0.159.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@react-spring/animated": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz", + "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==", + "license": "MIT", + "dependencies": { + "@react-spring/shared": "~9.7.5", + "@react-spring/types": "~9.7.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/core": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz", + "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==", + "license": "MIT", + "dependencies": { + "@react-spring/animated": "~9.7.5", + "@react-spring/shared": "~9.7.5", + "@react-spring/types": "~9.7.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-spring/donate" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/rafz": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz", + "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==", + "license": "MIT" + }, + "node_modules/@react-spring/shared": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz", + "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==", + "license": "MIT", + "dependencies": { + "@react-spring/rafz": "~9.7.5", + "@react-spring/types": "~9.7.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/three": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.7.5.tgz", + "integrity": "sha512-RxIsCoQfUqOS3POmhVHa1wdWS0wyHAUway73uRLp3GAL5U2iYVNdnzQsep6M2NZ994BlW8TcKuMtQHUqOsy6WA==", + "license": "MIT", + "dependencies": { + "@react-spring/animated": "~9.7.5", + "@react-spring/core": "~9.7.5", + "@react-spring/shared": "~9.7.5", + "@react-spring/types": "~9.7.5" + }, + "peerDependencies": { + "@react-three/fiber": ">=6.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "three": ">=0.126" + } + }, + "node_modules/@react-spring/types": { + "version": "9.7.5", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz", + "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==", + "license": "MIT" + }, + "node_modules/@react-three/drei": { + "version": "9.122.0", + "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-9.122.0.tgz", + "integrity": "sha512-SEO/F/rBCTjlLez7WAlpys+iGe9hty4rNgjZvgkQeXFSiwqD4Hbk/wNHMAbdd8vprO2Aj81mihv4dF5bC7D0CA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mediapipe/tasks-vision": "0.10.17", + "@monogrid/gainmap-js": "^3.0.6", + "@react-spring/three": "~9.7.5", + "@use-gesture/react": "^10.3.1", + "camera-controls": "^2.9.0", + "cross-env": "^7.0.3", + "detect-gpu": "^5.0.56", + "glsl-noise": "^0.0.0", + "hls.js": "^1.5.17", + "maath": "^0.10.8", + "meshline": "^3.3.1", + "react-composer": "^5.0.3", + "stats-gl": "^2.2.8", + "stats.js": "^0.17.0", + "suspend-react": "^0.1.3", + "three-mesh-bvh": "^0.7.8", + "three-stdlib": "^2.35.6", + "troika-three-text": "^0.52.0", + "tunnel-rat": "^0.1.2", + "utility-types": "^3.11.0", + "zustand": "^5.0.1" + }, + "peerDependencies": { + "@react-three/fiber": "^8", + "react": "^18", + "react-dom": "^18", + "three": ">=0.137" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/@react-three/fiber": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.18.0.tgz", + "integrity": "sha512-FYZZqD0UUHUswKz3LQl2Z7H24AhD14XGTsIRw3SJaXUxyfVMi+1yiZGmqTcPt/CkPpdU7rrxqcyQ1zJE5DjvIQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.17.8", + "@types/react-reconciler": "^0.26.7", + "@types/webxr": "*", + "base64-js": "^1.5.1", + "buffer": "^6.0.3", + "its-fine": "^1.0.6", + "react-reconciler": "^0.27.0", + "react-use-measure": "^2.1.7", + "scheduler": "^0.21.0", + "suspend-react": "^0.1.3", + "zustand": "^3.7.1" + }, + "peerDependencies": { + "expo": ">=43.0", + "expo-asset": ">=8.4", + "expo-file-system": ">=11.0", + "expo-gl": ">=11.0", + "react": ">=18 <19", + "react-dom": ">=18 <19", + "react-native": ">=0.64", + "three": ">=0.133" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "expo-asset": { + "optional": true + }, + "expo-file-system": { + "optional": true + }, + "expo-gl": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@react-three/fiber/node_modules/zustand": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "license": "MIT", + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/draco3d": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz", + "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/offscreencanvas": { + "version": "2019.7.3", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/react-reconciler": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz", + "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/stats.js": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", + "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==", + "license": "MIT" + }, + "node_modules/@types/three": { + "version": "0.160.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.160.0.tgz", + "integrity": "sha512-jWlbUBovicUKaOYxzgkLlhkiEQJkhCVvg4W2IYD2trqD2om3VK4DGLpHH5zQHNr7RweZK/5re/4IVhbhvxbV9w==", + "license": "MIT", + "dependencies": { + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.6.10", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/@types/webxr": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", + "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==", + "license": "MIT" + }, + "node_modules/@use-gesture/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", + "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==", + "license": "MIT" + }, + "node_modules/@use-gesture/react": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", + "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", + "license": "MIT", + "dependencies": { + "@use-gesture/core": "10.3.1" + }, + "peerDependencies": { + "react": ">= 16.8.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/camera-controls": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.10.1.tgz", + "integrity": "sha512-KnaKdcvkBJ1Irbrzl8XD6WtZltkRjp869Jx8c0ujs9K+9WD+1D7ryBsCiVqJYUqt6i/HR5FxT7RLASieUD+Q5w==", + "license": "MIT", + "peerDependencies": { + "three": ">=0.126.1" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001756", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", + "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/detect-gpu": { + "version": "5.0.70", + "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.70.tgz", + "integrity": "sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==", + "license": "MIT", + "dependencies": { + "webgl-constants": "^1.1.1" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/draco3d": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz", + "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==", + "license": "Apache-2.0" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.259", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz", + "integrity": "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glsl-noise": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz", + "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==", + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hls.js": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.15.tgz", + "integrity": "sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/its-fine": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.2.5.tgz", + "integrity": "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==", + "license": "MIT", + "dependencies": { + "@types/react-reconciler": "^0.28.0" + }, + "peerDependencies": { + "react": ">=18.0" + } + }, + "node_modules/its-fine/node_modules/@types/react-reconciler": { + "version": "0.28.9", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz", + "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.303.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.303.0.tgz", + "integrity": "sha512-B0B9T3dLEFBYPCUlnUS1mvAhW1craSbF9HO+JfBjAtpFUJ7gMIqmEwNSclikY3RiN2OnCkj/V1ReAQpaHae8Bg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/maath": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz", + "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==", + "license": "MIT", + "peerDependencies": { + "@types/three": ">=0.134.0", + "three": ">=0.134.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/meshline": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz", + "integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==", + "license": "MIT", + "peerDependencies": { + "three": ">=0.137" + } + }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", + "license": "ISC" + }, + "node_modules/promise-worker-transferable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", + "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", + "license": "Apache-2.0", + "dependencies": { + "is-promise": "^2.1.0", + "lie": "^3.0.2" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-composer": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/react-composer/-/react-composer-5.0.3.tgz", + "integrity": "sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.6.0" + }, + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-reconciler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz", + "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.21.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.6.tgz", + "integrity": "sha512-Y1tUp8clYRXpfPITyuifmSoE2vncSME18uVLgaqyxh9H35JWpIfzHo+9y3Fzh5odk/jxPW29IgLgzcdwxGqyNA==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.6.tgz", + "integrity": "sha512-2MkC2XSXq6HjGcihnx1s0DBWQETI4mlis4Ux7YTLvP67xnGxCvq+BcCQSO81qQHVUTM1V53tl4iVVaY5sReCOA==", + "license": "MIT", + "dependencies": { + "react-router": "7.9.6" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-use-measure": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz", + "integrity": "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.13", + "react-dom": ">=16.13" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", + "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stats-gl": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.4.2.tgz", + "integrity": "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==", + "license": "MIT", + "dependencies": { + "@types/three": "*", + "three": "^0.170.0" + }, + "peerDependencies": { + "@types/three": "*", + "three": "*" + } + }, + "node_modules/stats-gl/node_modules/three": { + "version": "0.170.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz", + "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==", + "license": "MIT" + }, + "node_modules/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/suspend-react": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz", + "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=17.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", + "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/three": { + "version": "0.160.1", + "resolved": "https://registry.npmjs.org/three/-/three-0.160.1.tgz", + "integrity": "sha512-Bgl2wPJypDOZ1stAxwfWAcJ0WQf7QzlptsxkjYiURPz+n5k4RBDLsq+6f9Y75TYxn6aHLcWz+JNmwTOXWrQTBQ==", + "license": "MIT" + }, + "node_modules/three-mesh-bvh": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.8.tgz", + "integrity": "sha512-BGEZTOIC14U0XIRw3tO4jY7IjP7n7v24nv9JXS1CyeVRWOCkcOMhRnmENUjuV39gktAw4Ofhr0OvIAiTspQrrw==", + "deprecated": "Deprecated due to three.js version incompatibility. Please use v0.8.0, instead.", + "license": "MIT", + "peerDependencies": { + "three": ">= 0.151.0" + } + }, + "node_modules/three-stdlib": { + "version": "2.36.1", + "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.36.1.tgz", + "integrity": "sha512-XyGQrFmNQ5O/IoKm556ftwKsBg11TIb301MB5dWNicziQBEs2g3gtOYIf7pFiLa0zI2gUwhtCjv9fmjnxKZ1Cg==", + "license": "MIT", + "dependencies": { + "@types/draco3d": "^1.4.0", + "@types/offscreencanvas": "^2019.6.4", + "@types/webxr": "^0.5.2", + "draco3d": "^1.4.1", + "fflate": "^0.6.9", + "potpack": "^1.0.1" + }, + "peerDependencies": { + "three": ">=0.128.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/troika-three-text": { + "version": "0.52.4", + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.4.tgz", + "integrity": "sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==", + "license": "MIT", + "dependencies": { + "bidi-js": "^1.0.2", + "troika-three-utils": "^0.52.4", + "troika-worker-utils": "^0.52.0", + "webgl-sdf-generator": "1.1.1" + }, + "peerDependencies": { + "three": ">=0.125.0" + } + }, + "node_modules/troika-three-utils": { + "version": "0.52.4", + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.4.tgz", + "integrity": "sha512-NORAStSVa/BDiG52Mfudk4j1FG4jC4ILutB3foPnfGbOeIs9+G5vZLa0pnmnaftZUGm4UwSoqEpWdqvC7zms3A==", + "license": "MIT", + "peerDependencies": { + "three": ">=0.125.0" + } + }, + "node_modules/troika-worker-utils": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz", + "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==", + "license": "MIT" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tunnel-rat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz", + "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==", + "license": "MIT", + "dependencies": { + "zustand": "^4.3.2" + } + }, + "node_modules/tunnel-rat/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/webgl-constants": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz", + "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==" + }, + "node_modules/webgl-sdf-generator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz", + "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/zustand": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.8.tgz", + "integrity": "sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/FrontEnd/package.json b/FrontEnd/package.json new file mode 100644 index 0000000..4e69bc7 --- /dev/null +++ b/FrontEnd/package.json @@ -0,0 +1,35 @@ +{ + "name": "industrial-hmi-3d", + "private": true, + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@fontsource/inter": "^5.2.8", + "@fontsource/rajdhani": "^5.2.7", + "@react-three/drei": "^9.96.1", + "@react-three/fiber": "^8.15.12", + "clsx": "^2.1.0", + "lucide-react": "^0.303.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^7.9.6", + "tailwind-merge": "^2.2.0", + "three": "^0.160.0" + }, + "devDependencies": { + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@types/three": "^0.160.0", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.16", + "postcss": "^8.4.32", + "tailwindcss": "^3.4.0", + "typescript": "^5.3.3", + "vite": "^5.0.10" + } +} diff --git a/FrontEnd/pages/HomePage.tsx b/FrontEnd/pages/HomePage.tsx new file mode 100644 index 0000000..d13252a --- /dev/null +++ b/FrontEnd/pages/HomePage.tsx @@ -0,0 +1,163 @@ +import React, { useState, useEffect } from 'react'; +import { Play, Square, RotateCw, AlertTriangle, Siren, Terminal } from 'lucide-react'; +import { Machine3D } from '../components/Machine3D'; +import { SettingsModal } from '../components/SettingsModal'; +import { InitializeModal } from '../components/InitializeModal'; +import { RecipePanel } from '../components/RecipePanel'; +import { MotionPanel } from '../components/MotionPanel'; +import { CameraPanel } from '../components/CameraPanel'; +import { CyberPanel } from '../components/common/CyberPanel'; +import { TechButton } from '../components/common/TechButton'; +import { ModelInfoPanel } from '../components/ModelInfoPanel'; +import { SystemState, Recipe, IOPoint, LogEntry, RobotTarget, ConfigItem } from '../types'; + +interface HomePageProps { + systemState: SystemState; + currentRecipe: Recipe; + robotTarget: RobotTarget; + logs: LogEntry[]; + ioPoints: IOPoint[]; + doorStates: { front: boolean; right: boolean; left: boolean; back: boolean }; + isLowPressure: boolean; + isEmergencyStop: boolean; + activeTab: 'recipe' | 'motion' | 'camera' | 'setting' | 'initialize' | null; + onSelectRecipe: (r: Recipe) => void; + onMove: (axis: 'X' | 'Y' | 'Z', val: number) => void; + onControl: (action: 'start' | 'stop' | 'reset') => void; + onSaveConfig: (config: ConfigItem[]) => void; + onCloseTab: () => void; + videoRef: React.RefObject; +} + +export const HomePage: React.FC = ({ + systemState, + currentRecipe, + robotTarget, + logs, + ioPoints, + doorStates, + isLowPressure, + isEmergencyStop, + activeTab, + onSelectRecipe, + onMove, + onControl, + onSaveConfig, + onCloseTab, + videoRef +}) => { + useEffect(() => { + if (activeTab === 'camera' && navigator.mediaDevices?.getUserMedia) { + navigator.mediaDevices.getUserMedia({ video: true }).then(s => { if (videoRef.current) videoRef.current.srcObject = s }); + } + }, [activeTab, videoRef]); + + return ( +
+ {/* 3D Canvas (Background Layer) */} +
+ +
+ + {/* Center Alarms */} +
+ {isEmergencyStop && ( +
+ +
+

EMERGENCY STOP

+

SYSTEM HALTED - RELEASE TO RESET

+
+
+ )} + {isLowPressure && !isEmergencyStop && ( +
+ LOW AIR PRESSURE WARNING +
+ )} +
+ + {/* Floating Panel (Left) */} + {activeTab && activeTab !== 'setting' && activeTab !== 'recipe' && ( +
+ + {activeTab === 'motion' && } + {activeTab === 'camera' && } + +
+ )} + + {/* Recipe Selection Modal */} + + + {/* Settings Modal */} + + + {/* Initialize Modal */} + + + {/* Right Sidebar (Dashboard) */} +
+ + + +
System Status
+
+ {systemState} +
+
+ onControl('start')} + > + START AUTO + + onControl('stop')} + > + STOP / PAUSE + + onControl('reset')} + > + SYSTEM RESET + +
+
+ + +
+ Event Log + +
+
+ {logs.map(log => ( +
+ [{log.timestamp}] + {log.message} +
+ ))} +
+
+
+
+ ); +}; diff --git a/FrontEnd/pages/IOMonitorPage.tsx b/FrontEnd/pages/IOMonitorPage.tsx new file mode 100644 index 0000000..3b6605f --- /dev/null +++ b/FrontEnd/pages/IOMonitorPage.tsx @@ -0,0 +1,125 @@ +import React, { useState, useEffect } from 'react'; +import { RotateCw } from 'lucide-react'; +import { IOPoint } from '../types'; +import { comms } from '../communication'; + +interface IOMonitorPageProps { + onToggle: (id: number, type: 'input' | 'output') => void; +} + +export const IOMonitorPage: React.FC = ({ onToggle }) => { + const [ioPoints, setIoPoints] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [activeIOTab, setActiveIOTab] = useState<'in' | 'out'>('in'); + + // Fetch initial IO list when page mounts + useEffect(() => { + const fetchIOList = async () => { + setIsLoading(true); + try { + const ioStr = await comms.getIOList(); + const ioData: IOPoint[] = JSON.parse(ioStr); + setIoPoints(ioData); + } catch (e) { + console.error('Failed to fetch IO list:', e); + } + setIsLoading(false); + }; + fetchIOList(); + + // Subscribe to real-time IO updates + const unsubscribe = comms.subscribe((msg: any) => { + if (msg?.type === 'STATUS_UPDATE' && msg.ioState) { + setIoPoints(prev => { + const newIO = [...prev]; + msg.ioState.forEach((update: { id: number, type: string, state: boolean }) => { + const idx = newIO.findIndex(p => p.id === update.id && p.type === update.type); + if (idx >= 0) newIO[idx] = { ...newIO[idx], state: update.state }; + }); + return newIO; + }); + } + }); + + return () => { + unsubscribe(); + }; + }, []); + + const points = ioPoints.filter(p => p.type === (activeIOTab === 'in' ? 'input' : 'output')); + + return ( +
+
+ + {/* Local Header / Controls */} +
+
+

+ SYSTEM I/O MONITOR +

+
+
+ TOTAL POINTS: {ioPoints.length} +
+
+ +
+ + +
+
+ +
+ {isLoading ? ( +
+ +
LOADING IO POINTS...
+
+ ) : ( +
+ {points.map(p => ( +
onToggle(p.id, p.type)} + className={` + flex items-center gap-4 px-4 py-3 cursor-pointer transition-all border + clip-tech-sm group hover:translate-x-1 + ${p.state + ? (p.type === 'output' + ? 'bg-neon-green/10 border-neon-green text-neon-green shadow-[0_0_15px_rgba(10,255,0,0.2)]' + : 'bg-neon-yellow/10 border-neon-yellow text-neon-yellow shadow-[0_0_15px_rgba(255,230,0,0.2)]') + : 'bg-slate-900/40 border-slate-800 text-slate-500 hover:border-slate-600 hover:bg-slate-800/40'} + `} + > + {/* LED Indicator */} +
+ + {/* ID Badge */} +
+ {p.type === 'input' ? 'I' : 'Q'}{p.id.toString().padStart(2, '0')} +
+ + {/* Name */} +
+ {p.name} +
+
+ ))} +
+ )} +
+
+
+ ); +}; diff --git a/FrontEnd/pages/RecipePage.tsx b/FrontEnd/pages/RecipePage.tsx new file mode 100644 index 0000000..377565c --- /dev/null +++ b/FrontEnd/pages/RecipePage.tsx @@ -0,0 +1,245 @@ +import React, { useState, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Layers, Plus, Trash2, Copy, Save, ArrowLeft, FileText, Calendar } from 'lucide-react'; +import { Recipe } from '../types'; +import { comms } from '../communication'; +import { TechButton } from '../components/common/TechButton'; + +export const RecipePage: React.FC = () => { + const navigate = useNavigate(); + const [recipes, setRecipes] = useState([]); + const [selectedId, setSelectedId] = useState(null); + const [editedRecipe, setEditedRecipe] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + const loadRecipes = async () => { + try { + const recipeStr = await comms.getRecipeList(); + const recipeData = JSON.parse(recipeStr); + setRecipes(recipeData); + if (recipeData.length > 0) { + setSelectedId(recipeData[0].id); + setEditedRecipe(recipeData[0]); + } + } catch (e) { + console.error("Failed to load recipes", e); + } + setIsLoading(false); + }; + loadRecipes(); + }, []); + + const handleSelect = (r: Recipe) => { + setSelectedId(r.id); + setEditedRecipe({ ...r }); + }; + + const handleSave = async () => { + // Mock Save Logic + console.log("Saving recipe:", editedRecipe); + // In real app: await comms.saveRecipe(editedRecipe); + }; + + const handleCopy = async () => { + if (!selectedId) return; + + const selectedRecipe = recipes.find(r => r.id === selectedId); + if (!selectedRecipe) return; + + const newName = prompt(`Copy "${selectedRecipe.name}" as:`, `${selectedRecipe.name}_Copy`); + if (!newName || newName.trim() === '') return; + + try { + const result = await comms.copyRecipe(selectedId, newName.trim()); + if (result.success && result.newRecipe) { + const newRecipeList = [...recipes, result.newRecipe]; + setRecipes(newRecipeList); + setSelectedId(result.newRecipe.id); + setEditedRecipe(result.newRecipe); + console.log("Recipe copied successfully:", result.newRecipe); + } else { + alert(`Failed to copy recipe: ${result.message}`); + } + } catch (error: any) { + alert(`Error copying recipe: ${error.message || 'Unknown error'}`); + console.error('Recipe copy error:', error); + } + }; + + const handleDelete = async () => { + if (!selectedId) return; + + const selectedRecipe = recipes.find(r => r.id === selectedId); + if (!selectedRecipe) return; + + const confirmed = window.confirm(`Are you sure you want to delete "${selectedRecipe.name}"?`); + if (!confirmed) return; + + try { + const result = await comms.deleteRecipe(selectedId); + if (result.success) { + const newRecipeList = recipes.filter(r => r.id !== selectedId); + setRecipes(newRecipeList); + + // Select first recipe or clear selection + if (newRecipeList.length > 0) { + setSelectedId(newRecipeList[0].id); + setEditedRecipe(newRecipeList[0]); + } else { + setSelectedId(null); + setEditedRecipe(null); + } + + console.log("Recipe deleted successfully"); + } else { + alert(`Failed to delete recipe: ${result.message}`); + } + } catch (error: any) { + alert(`Error deleting recipe: ${error.message || 'Unknown error'}`); + console.error('Recipe delete error:', error); + } + }; + + return ( +
+ {/* Header */} +
+
+ +

+ RECIPE MANAGEMENT +

+
+
+ TOTAL: {recipes.length} +
+
+ +
+ {/* Left: Recipe List */} +
+
+
+ RECIPE LIST +
+
+ {recipes.map(r => ( +
handleSelect(r)} + className={` + p-3 rounded border cursor-pointer transition-all group + ${selectedId === r.id + ? 'bg-neon-blue/20 border-neon-blue text-white shadow-glow-blue' + : 'bg-white/5 border-white/5 text-slate-400 hover:bg-white/10 hover:border-white/20'} + `} + > +
{r.name}
+
+ {r.lastModified} +
+
+ ))} +
+ + {/* List Actions */} +
+ + + + + + + + + +
+
+
+ + {/* Right: Editor */} +
+
+ RECIPE EDITOR + {editedRecipe && {editedRecipe.id}} +
+ +
+ {editedRecipe ? ( +
+
+ + setEditedRecipe({ ...editedRecipe, name: e.target.value })} + className="w-full bg-black/40 border border-white/10 rounded px-4 py-3 text-white focus:border-neon-blue focus:outline-none transition-colors font-mono" + /> +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ + {/* Placeholder for more parameters */} +
+ Additional process parameters would go here... +
+
+ ) : ( +
+ +

Select a recipe to edit

+
+ )} +
+ + {/* Editor Actions */} +
+ + SAVE CHANGES + +
+
+
+
+ ); +}; diff --git a/FrontEnd/postcss.config.js b/FrontEnd/postcss.config.js new file mode 100644 index 0000000..e99ebc2 --- /dev/null +++ b/FrontEnd/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/FrontEnd/run.bat b/FrontEnd/run.bat new file mode 100644 index 0000000..58e19f6 --- /dev/null +++ b/FrontEnd/run.bat @@ -0,0 +1,3 @@ +@echo off +echo Starting Frontend Dev Server... +call npm run dev diff --git a/FrontEnd/tailwind.config.js b/FrontEnd/tailwind.config.js new file mode 100644 index 0000000..29ecaba --- /dev/null +++ b/FrontEnd/tailwind.config.js @@ -0,0 +1,59 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./**/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: { + fontFamily: { + sans: ['Inter', 'sans-serif'], + mono: ['Rajdhani', 'monospace'], + tech: ['Rajdhani', 'sans-serif'], + }, + colors: { + slate: { + 850: '#1e293b', + 900: '#0f172a', + 950: '#020617', + }, + neon: { + blue: '#00f3ff', + purple: '#bc13fe', + pink: '#ff0099', + green: '#0aff00', + yellow: '#ffe600', + } + }, + boxShadow: { + 'glow-blue': '0 0 20px rgba(0, 243, 255, 0.3), inset 0 0 10px rgba(0, 243, 255, 0.1)', + 'glow-purple': '0 0 20px rgba(188, 19, 254, 0.4), inset 0 0 10px rgba(188, 19, 254, 0.1)', + 'glow-red': '0 0 30px rgba(255, 0, 0, 0.5)', + 'hologram': '0 0 15px rgba(6, 182, 212, 0.15), inset 0 0 20px rgba(6, 182, 212, 0.05)', + }, + animation: { + 'pulse-slow': 'pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite', + 'glow': 'glow 2s ease-in-out infinite alternate', + 'gradient': 'gradient 15s ease infinite', + 'scan': 'scan 4s linear infinite', + 'spin-slow': 'spin 10s linear infinite', + }, + keyframes: { + glow: { + '0%': { boxShadow: '0 0 5px rgba(0, 243, 255, 0.2)' }, + '100%': { boxShadow: '0 0 20px rgba(0, 243, 255, 0.6), 0 0 10px rgba(0, 243, 255, 0.4)' }, + }, + gradient: { + '0%': { backgroundPosition: '0% 50%' }, + '50%': { backgroundPosition: '100% 50%' }, + '100%': { backgroundPosition: '0% 50%' }, + }, + scan: { + '0%': { transform: 'translateY(-100%)' }, + '100%': { transform: 'translateY(100%)' }, + } + } + } + }, + plugins: [], +} \ No newline at end of file diff --git a/FrontEnd/tsconfig.json b/FrontEnd/tsconfig.json new file mode 100644 index 0000000..b0edbad --- /dev/null +++ b/FrontEnd/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "strict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["vite.config.ts", "node_modules"], + "references": [{ "path": "./tsconfig.node.json" }] +} \ No newline at end of file diff --git a/FrontEnd/tsconfig.node.json b/FrontEnd/tsconfig.node.json new file mode 100644 index 0000000..099658c --- /dev/null +++ b/FrontEnd/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} \ No newline at end of file diff --git a/FrontEnd/types.ts b/FrontEnd/types.ts new file mode 100644 index 0000000..c241bdc --- /dev/null +++ b/FrontEnd/types.ts @@ -0,0 +1,77 @@ +export enum SystemState { + IDLE = 'IDLE', + RUNNING = 'RUNNING', + ERROR = 'ERROR', + PAUSED = 'PAUSED', +} + +export interface AxisPosition { + id: string; + name: string; + axis: 'X' | 'Y' | 'Z'; + value: number; + speed: number; + acc: number; + dec: number; +} + +export interface Recipe { + id: string; + name: string; + lastModified: string; +} + +export interface IOPoint { + id: number; + name: string; + type: 'input' | 'output'; + state: boolean; +} + +export interface LogEntry { + id: number; + timestamp: string; + message: string; + type: 'info' | 'warning' | 'error'; +} + +export interface RobotTarget { + x: number; + y: number; + z: number; +} + +// WebView2 Native Bridge Types +export interface ConfigItem { + Key: string; + Value: string; + Group: string; + Type: 'String' | 'Number' | 'Boolean'; + Description: string; +} + +declare global { + interface Window { + chrome?: { + webview?: { + hostObjects: { + machine: { + MoveAxis(axis: string, value: number): Promise; + SetIO(id: number, isInput: boolean, state: boolean): Promise; + SystemControl(command: string): Promise; + SelectRecipe(recipeId: string): Promise; + CopyRecipe(recipeId: string, newName: string): Promise; + DeleteRecipe(recipeId: string): Promise; + GetConfig(): Promise; + GetIOList(): Promise; + GetRecipeList(): Promise; + SaveConfig(configJson: string): Promise; + } + }; + addEventListener(type: string, listener: (event: any) => void): void; + removeEventListener(type: string, listener: (event: any) => void): void; + postMessage(message: any): void; + } + } + } +} \ No newline at end of file diff --git a/FrontEnd/vite.config.ts b/FrontEnd/vite.config.ts new file mode 100644 index 0000000..e887a27 --- /dev/null +++ b/FrontEnd/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, + build: { + outDir: 'dist', + emptyOutDir: true, + } +}); \ No newline at end of file diff --git a/Handler/.claude/settings.local.json b/Handler/.claude/settings.local.json new file mode 100644 index 0000000..9241245 --- /dev/null +++ b/Handler/.claude/settings.local.json @@ -0,0 +1,14 @@ +{ + "permissions": { + "allow": [ + "Bash(git add:*)", + "Bash(git checkout:*)", + "Bash(build.bat)", + "Bash(cmd /c:*)", + "Bash(git commit:*)", + "Bash(msbuild:*)", + "Bash(dotnet build:*)" + ], + "deny": [] + } +} \ No newline at end of file diff --git a/Handler/.gitignore b/Handler/.gitignore new file mode 100644 index 0000000..f7f2c57 --- /dev/null +++ b/Handler/.gitignore @@ -0,0 +1,9 @@ +*.suo +*.user +*.pdb +bin +obj +desktop.ini +.vs +packages +*.zip diff --git a/Handler/CLAUDE.md b/Handler/CLAUDE.md new file mode 100644 index 0000000..6421285 --- /dev/null +++ b/Handler/CLAUDE.md @@ -0,0 +1,99 @@ +# CLAUDE.md + +이 파일은 Claude Code (claude.ai/code)가 이 저장소에서 코드 작업을 할 때 지침을 제공합니다. + +## 프로젝트 개요 + +이것은 ATV (Automatic Test Vehicle) 릴 라벨 부착, 수정 및 전송 작업을 위한 산업 자동화 시스템입니다. 시스템은 Windows Forms를 사용하여 C# (.NET Framework 4.8)로 구축되었으며, 모션 컨트롤러, 바코드 리더, 프린터 및 PLC를 포함한 다양한 하드웨어 구성 요소와 통합됩니다. + +## 빌드 명령어 + +- **윈도우 환경 cmd 로 실행필요 +"C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\msbuild.exe" "C:\Data\Source\(5815) ATV Reel Label Attach Modify & Transfer (WMS)\Source\Handler\Project\STDLabelAttach(ATV).csproj" /v:quiet + + +## 아키텍처 개요 + +### 핵심 구성 요소 + +- **Project/**: UI 및 비즈니스 로직이 포함된 메인 애플리케이션 + - 기본 Windows Forms 애플리케이션 포함 (`fMain.cs`) + - `RunCode/StateMachine/` 및 `RunCode/Step/`에서 상태 머신 로직 구현 + - `Device/` 폴더의 디바이스 인터페이스 (KeyenceBarcode, SATOPrinter, TowerLamp 등) + - 사용자 상호작용을 위한 다이얼로그 폼 + +- **Project_form2/**: 데이터 처리를 위한 보조 수신기 애플리케이션 + - SID (Serial ID) 변환 및 처리 담당 + - 고객 정보 관리 + - 가져오기/내보내기 기능 + +- **Sub/**: 공유 라이브러리 및 유틸리티 + - `arCtl/`: 사용자 정의 UI 컨트롤 및 구성 요소 + - `arAzinAxt/`: 모션 컨트롤러 인터페이스 (AzinAxt 하드웨어) + - `arRS232/`: 시리얼 통신 라이브러리 + - `AmkorRestfulService/`: 외부 통합을 위한 RESTful API 서비스 + - `CommSM/`: 상태 머신 통신 라이브러리 + - `CommUtil/`: 공통 유틸리티 및 다이얼로그 + +### 주요 기술 + +- **하드웨어 통합**: 모션 컨트롤러 (AzinAxt), 바코드 리더 (Keyence), SATO 프린터 +- **데이터베이스**: SQL Server를 사용한 Entity Framework 6.2.0 +- **통신**: 시리얼 (RS232), RESTful API, WebSocket +- **비전**: 이미지 처리를 위한 EmguCV +- **프로토콜**: 장비 제어를 위한 사용자 정의 상태 머신 구현 + +### 상태 머신 아키텍처 + +애플리케이션은 포괄적인 상태 머신 패턴을 사용합니다: +- `RunCode/Step/`: 주요 작업 단계 (INIT, IDLE, RUN, HOME, FINISH) +- `RunCode/StateMachine/`: 핵심 상태 머신 로직 및 이벤트 처리 +- `RunCode/RunSequence/`: 특정 작업 시퀀스 (바코드 읽기, 인쇄, 피킹) + +### 디바이스 관리 + +- 위치 검증이 포함된 `arAzinAxt` 라이브러리를 통한 모션 제어 +- Keyence 스캐너 통합을 통한 바코드 읽기 +- SATO 프린터 API를 통한 라벨 인쇄 +- 안전 및 I/O 제어를 위한 PLC 통신 + +## 개발 패턴 + +### 구성 관리 +- 수정을 위한 UI 폼이 포함된 `Setting/` 클래스에 설정 저장 +- `System_Setting.cs` 및 `System_MotParameter.cs`의 시스템 매개변수 +- `UserSetting.cs`의 사용자별 설정 + +### 데이터 관리 +- `Model1.edmx`의 Entity Framework 모델 +- 다양한 데이터 유형을 위한 `Manager/` 폴더의 데이터베이스 관리자 +- 릴 정보, 결과 및 SID 변환을 위한 구성 요소 클래스 + +### UI 패턴 +- `UIControl/` 폴더의 사용자 정의 컨트롤 +- `Dialog/` 폴더의 일관된 다이얼로그 패턴 +- 포함된 이미지 및 아이콘을 사용한 리소스 관리 + +## 중요 사항 + +- 시스템에는 특정 하드웨어 드라이버가 필요합니다 (AzinAxt 모션 컨트롤러, Keyence SDK, SATO 프린터 드라이버) +- 데이터베이스 연결 문자열은 `app.config`에서 구성됩니다 +- 모션 매개변수는 `MotParam/`의 `.swpp` 및 `.usrs` 파일에 저장됩니다 +- 애플리케이션은 서로 다른 출력 경로를 가진 Debug 및 Release 구성을 모두 지원합니다 +- 플랫폼 대상은 일반적으로 하드웨어 호환성을 위해 x64입니다 + +## 테스트 + +공식적인 단위 테스트 프로젝트는 없습니다. 테스트는 일반적으로 다음을 통해 수행됩니다: +- 메인 애플리케이션을 사용한 수동 작업 +- 실제 장비를 사용한 하드웨어 인 더 루프 테스트 +- 애플리케이션의 디버그 다이얼로그 및 모니터링 폼 + +## 종속성 + +주요 외부 종속성은 다음과 같습니다: +- Entity Framework 6.2.0 +- Newtonsoft.Json 13.0.3 +- EmguCV 4.5.1 +- 웹 서비스를 위한 Microsoft OWIN 스택 +- 다양한 하드웨어별 SDK 및 드라이버 \ No newline at end of file diff --git a/Handler/DLL/ArLog.Net4.dll b/Handler/DLL/ArLog.Net4.dll new file mode 100644 index 0000000..1f7c09a Binary files /dev/null and b/Handler/DLL/ArLog.Net4.dll differ diff --git a/Handler/DLL/CarlosAg.ExcelXmlWriter.dll b/Handler/DLL/CarlosAg.ExcelXmlWriter.dll new file mode 100644 index 0000000..7760d6d Binary files /dev/null and b/Handler/DLL/CarlosAg.ExcelXmlWriter.dll differ diff --git a/Handler/DLL/ChilkatDotNet4.dll b/Handler/DLL/ChilkatDotNet4.dll new file mode 100644 index 0000000..134c43e Binary files /dev/null and b/Handler/DLL/ChilkatDotNet4.dll differ diff --git a/Handler/DLL/Communication.dll b/Handler/DLL/Communication.dll new file mode 100644 index 0000000..c656f28 Binary files /dev/null and b/Handler/DLL/Communication.dll differ diff --git a/Handler/DLL/Keyence.AutoID.SDK.dll b/Handler/DLL/Keyence.AutoID.SDK.dll new file mode 100644 index 0000000..f9250ca Binary files /dev/null and b/Handler/DLL/Keyence.AutoID.SDK.dll differ diff --git a/Handler/DLL/Newtonsoft.Json.dll b/Handler/DLL/Newtonsoft.Json.dll new file mode 100644 index 0000000..7af125a Binary files /dev/null and b/Handler/DLL/Newtonsoft.Json.dll differ diff --git a/Handler/DLL/Sato/x64/SATOPrinterAPI.dll b/Handler/DLL/Sato/x64/SATOPrinterAPI.dll new file mode 100644 index 0000000..b367a83 Binary files /dev/null and b/Handler/DLL/Sato/x64/SATOPrinterAPI.dll differ diff --git a/Handler/DLL/Sato/x86/SATOPrinterAPI.dll b/Handler/DLL/Sato/x86/SATOPrinterAPI.dll new file mode 100644 index 0000000..2ad94c1 Binary files /dev/null and b/Handler/DLL/Sato/x86/SATOPrinterAPI.dll differ diff --git a/Handler/DLL/VncClientControlCommon.dll b/Handler/DLL/VncClientControlCommon.dll new file mode 100644 index 0000000..0e66ce7 Binary files /dev/null and b/Handler/DLL/VncClientControlCommon.dll differ diff --git a/Handler/DLL/VncClientControlCommonLib.dll b/Handler/DLL/VncClientControlCommonLib.dll new file mode 100644 index 0000000..2d0d74c Binary files /dev/null and b/Handler/DLL/VncClientControlCommonLib.dll differ diff --git a/Handler/DLL/WatsonWebsocket.dll b/Handler/DLL/WatsonWebsocket.dll new file mode 100644 index 0000000..ae762d9 Binary files /dev/null and b/Handler/DLL/WatsonWebsocket.dll differ diff --git a/Handler/DLL/Winsock Orcas.dll b/Handler/DLL/Winsock Orcas.dll new file mode 100644 index 0000000..3ac1126 Binary files /dev/null and b/Handler/DLL/Winsock Orcas.dll differ diff --git a/Handler/DLL/arControl.Net4.dll b/Handler/DLL/arControl.Net4.dll new file mode 100644 index 0000000..81c5ba6 Binary files /dev/null and b/Handler/DLL/arControl.Net4.dll differ diff --git a/Handler/DLL/arRS232.Net4.dll b/Handler/DLL/arRS232.Net4.dll new file mode 100644 index 0000000..59df697 Binary files /dev/null and b/Handler/DLL/arRS232.Net4.dll differ diff --git a/Handler/DLL/libxl.dll b/Handler/DLL/libxl.dll new file mode 100644 index 0000000..b3159fd Binary files /dev/null and b/Handler/DLL/libxl.dll differ diff --git a/Handler/DLL/libxl.net.dll b/Handler/DLL/libxl.net.dll new file mode 100644 index 0000000..b487ebc Binary files /dev/null and b/Handler/DLL/libxl.net.dll differ diff --git a/Handler/DLL/libxl/bin64/libxl.dll b/Handler/DLL/libxl/bin64/libxl.dll new file mode 100644 index 0000000..204a7e3 Binary files /dev/null and b/Handler/DLL/libxl/bin64/libxl.dll differ diff --git a/Handler/DLL/libxl/libxl.net.dll b/Handler/DLL/libxl/libxl.net.dll new file mode 100644 index 0000000..dc8b1b3 Binary files /dev/null and b/Handler/DLL/libxl/libxl.net.dll differ diff --git a/Handler/MotParam/Mot_Picker_X.swpp b/Handler/MotParam/Mot_Picker_X.swpp new file mode 100644 index 0000000..94d317b Binary files /dev/null and b/Handler/MotParam/Mot_Picker_X.swpp differ diff --git a/Handler/MotParam/Mot_Picker_X.usrs b/Handler/MotParam/Mot_Picker_X.usrs new file mode 100644 index 0000000..0c4e777 --- /dev/null +++ b/Handler/MotParam/Mot_Picker_X.usrs @@ -0,0 +1,256 @@ +File-Spec,2 +FileType,User Parameters Data File +Made-by,YASKAWA SigmaWin+ Ver.7 +DateTime,12/23/2020 11:45:35 AM +SERVO-TYPE,SGD7S-2R8A00A +SERVO-ID,112 +SERVO-YMOD,0 +SERVO-SPEC,00 +SERVO-SOFT,47 +SERVO-CAPACITY,400 +SerialNo,D0205I826810007 +BTOFlag,1 +BTO-ID, +IS-SUPPORTED,1 +IS-EDITED,0 +MachineName, +OP-TYPE, +OP-ID,65533 +OP-YMOD,65535 +OP-SOFT,65535 +OP1-TYPE, +OP1-TYPEID,0 +OP1-ID,65533 +OP1-YMOD,65535 +OP1-YMODTYPE,65535 +OP1-SOFT,65535 +OP2-TYPE, +OP2-TYPEID,0 +OP2-ID,65533 +OP2-YMOD,65535 +OP2-YMODTYPE,65535 +OP2-SOFT,65535 +OP3-TYPE, +OP3-TYPEID,0 +OP3-ID,65533 +OP3-YMOD,65535 +OP3-YMODTYPE,65535 +OP3-SOFT,65535 +ACCESS-LEVEL,1 +SpecVersion,65535 +AXIS-NUM,1 +MOTOR-TYPE,SGM7J-04AFD21 +MOTOR-ID,173 +ENCODER-ID,24 +ENCODER-SOFT,3 +ServoControlType,512 +CompatibleMapNum,6 +CompatibleMap,0,3,3,6,6,10 +CommentCnt,0 +Comment, +ServoNameComment,Picker X +UserPrmCnt,198 +UserPrm,000,17,2,1 +UserPrm,001,0,2,0 +UserPrm,002,0,2,0 +UserPrm,006,2,2,0 +UserPrm,007,0,2,0 +UserPrm,008,0,2,0 +UserPrm,009,16,2,0 +UserPrm,00A,1,2,0 +UserPrm,00B,256,2,1 +UserPrm,00C,0,2,0 +UserPrm,00D,0,2,0 +UserPrm,00E,0,2,0 +UserPrm,00F,0,2,0 +UserPrm,010,1,2,0 +UserPrm,021,0,2,0 +UserPrm,040,0,2,0 +UserPrm,080,0,2,0 +UserPrm,081,0,2,0 +UserPrm,100,400,2,0 +UserPrm,101,2000,2,0 +UserPrm,102,400,2,0 +UserPrm,103,100,2,0 +UserPrm,104,400,2,0 +UserPrm,105,2000,2,0 +UserPrm,106,400,2,0 +UserPrm,109,0,2,0 +UserPrm,10A,0,2,0 +UserPrm,10B,0,2,0 +UserPrm,10C,200,2,0 +UserPrm,10D,0,2,0 +UserPrm,10E,0,2,0 +UserPrm,10F,0,2,0 +UserPrm,11F,0,2,0 +UserPrm,121,100,2,0 +UserPrm,122,100,2,0 +UserPrm,123,0,2,0 +UserPrm,124,0,2,0 +UserPrm,125,100,2,0 +UserPrm,131,0,2,0 +UserPrm,132,0,2,0 +UserPrm,135,0,2,0 +UserPrm,136,0,2,0 +UserPrm,139,0,2,0 +UserPrm,13D,2000,2,0 +UserPrm,140,256,2,0 +UserPrm,141,500,2,0 +UserPrm,142,1000,2,0 +UserPrm,143,1000,2,0 +UserPrm,144,1000,2,0 +UserPrm,145,500,2,0 +UserPrm,146,700,2,0 +UserPrm,147,1000,2,0 +UserPrm,148,500,2,0 +UserPrm,149,1000,2,0 +UserPrm,14A,800,2,0 +UserPrm,14B,100,2,0 +UserPrm,14F,33,2,0 +UserPrm,160,16,2,0 +UserPrm,161,1000,2,0 +UserPrm,162,100,2,0 +UserPrm,163,0,2,0 +UserPrm,164,0,2,0 +UserPrm,165,0,2,0 +UserPrm,166,0,2,0 +UserPrm,170,5121,2,0 +UserPrm,200,1,2,1 +UserPrm,205,65535,2,0 +UserPrm,207,0,2,0 +UserPrm,20A,32768,4,0 +UserPrm,20E,16777216,4,1 +UserPrm,210,20000,4,1 +UserPrm,212,5000,4,1 +UserPrm,216,0,2,0 +UserPrm,217,0,2,0 +UserPrm,218,1,2,0 +UserPrm,22A,0,2,0 +UserPrm,240,0,2,0 +UserPrm,281,20,2,0 +UserPrm,300,600,2,0 +UserPrm,301,100,2,0 +UserPrm,302,200,2,0 +UserPrm,303,300,2,0 +UserPrm,304,50,2,1 +UserPrm,305,0,2,0 +UserPrm,306,0,2,0 +UserPrm,307,40,2,0 +UserPrm,308,0,2,0 +UserPrm,30A,0,2,0 +UserPrm,30C,0,2,0 +UserPrm,310,0,2,0 +UserPrm,311,100,2,0 +UserPrm,312,50,2,0 +UserPrm,316,10000,2,0 +UserPrm,324,300,2,0 +UserPrm,400,30,2,0 +UserPrm,401,100,2,0 +UserPrm,402,800,2,0 +UserPrm,403,800,2,0 +UserPrm,404,100,2,0 +UserPrm,405,100,2,0 +UserPrm,406,800,2,0 +UserPrm,407,10000,2,0 +UserPrm,408,0,2,0 +UserPrm,409,5000,2,0 +UserPrm,40A,70,2,0 +UserPrm,40B,0,2,0 +UserPrm,40C,5000,2,0 +UserPrm,40D,70,2,0 +UserPrm,40E,0,2,0 +UserPrm,40F,5000,2,0 +UserPrm,410,50,2,0 +UserPrm,412,100,2,0 +UserPrm,415,0,2,0 +UserPrm,416,0,2,0 +UserPrm,417,5000,2,0 +UserPrm,418,70,2,0 +UserPrm,419,0,2,0 +UserPrm,41A,5000,2,0 +UserPrm,41B,70,2,0 +UserPrm,41C,0,2,0 +UserPrm,41D,5000,2,0 +UserPrm,41E,70,2,0 +UserPrm,41F,0,2,0 +UserPrm,423,0,2,0 +UserPrm,424,50,2,0 +UserPrm,425,100,2,0 +UserPrm,426,0,2,0 +UserPrm,427,0,2,0 +UserPrm,456,15,2,0 +UserPrm,460,257,2,0 +UserPrm,475,0,2,0 +UserPrm,476,0,2,0 +UserPrm,481,400,2,0 +UserPrm,482,3000,2,0 +UserPrm,486,25,2,0 +UserPrm,487,0,2,0 +UserPrm,488,100,2,0 +UserPrm,490,100,2,0 +UserPrm,495,100,2,0 +UserPrm,498,10,2,0 +UserPrm,501,10,2,0 +UserPrm,502,20,2,0 +UserPrm,503,10,2,0 +UserPrm,506,0,2,0 +UserPrm,507,100,2,0 +UserPrm,508,50,2,0 +UserPrm,509,20,2,0 +UserPrm,50A,8448,2,0 +UserPrm,50B,25923,2,0 +UserPrm,50C,34952,2,0 +UserPrm,50D,34952,2,0 +UserPrm,50E,12817,2,0 +UserPrm,50F,0,2,0 +UserPrm,510,0,2,0 +UserPrm,512,0,2,0 +UserPrm,513,0,2,0 +UserPrm,514,0,2,0 +UserPrm,515,34952,2,0 +UserPrm,516,34952,2,0 +UserPrm,517,1620,2,0 +UserPrm,518,0,2,0 +UserPrm,519,34952,2,0 +UserPrm,51B,1000,4,0 +UserPrm,51E,100,2,0 +UserPrm,520,5242880,4,0 +UserPrm,522,7,4,0 +UserPrm,524,1073741824,4,0 +UserPrm,526,5242880,4,0 +UserPrm,528,100,2,0 +UserPrm,529,10000,2,0 +UserPrm,52A,20,2,0 +UserPrm,52B,20,2,0 +UserPrm,52C,100,2,0 +UserPrm,52F,4095,2,0 +UserPrm,530,0,2,0 +UserPrm,531,32768,4,0 +UserPrm,533,500,2,0 +UserPrm,534,100,2,0 +UserPrm,535,100,2,0 +UserPrm,536,1,2,0 +UserPrm,550,0,2,0 +UserPrm,551,0,2,0 +UserPrm,552,100,2,0 +UserPrm,553,100,2,0 +UserPrm,55A,1,2,0 +UserPrm,560,400,2,0 +UserPrm,561,100,2,0 +UserPrm,600,0,2,0 +UserPrm,601,0,2,0 +UserPrm,603,0,2,0 +UserPrm,604,0,2,0 +UserPrm,621,0,2,0 +UserPrm,622,10000,2,0 +UserPrm,623,10000,2,0 +UserPrm,624,10,2,0 +UserPrm,625,100,2,0 +UserPrm,626,100,4,0 +UserPrm,628,10,2,0 +Custom +CustomGroupNum,1 +Gp1_Begin +GroupName, +Num,0 +Gp1_End diff --git a/Handler/MotParam/Mot_Picker_Z.swpp b/Handler/MotParam/Mot_Picker_Z.swpp new file mode 100644 index 0000000..31fc815 Binary files /dev/null and b/Handler/MotParam/Mot_Picker_Z.swpp differ diff --git a/Handler/MotParam/Mot_Picker_Z.usrs b/Handler/MotParam/Mot_Picker_Z.usrs new file mode 100644 index 0000000..9c2cc34 --- /dev/null +++ b/Handler/MotParam/Mot_Picker_Z.usrs @@ -0,0 +1,256 @@ +File-Spec,2 +FileType,User Parameters Data File +Made-by,YASKAWA SigmaWin+ Ver.7 +DateTime,12/23/2020 11:46:21 AM +SERVO-TYPE,SGD7S-1R6A00A002 +SERVO-ID,112 +SERVO-YMOD,0 +SERVO-SPEC,00 +SERVO-SOFT,47 +SERVO-CAPACITY,200 +SerialNo,1A2036500620011 +BTOFlag,1 +BTO-ID, +IS-SUPPORTED,1 +IS-EDITED,0 +MachineName, +OP-TYPE, +OP-ID,65533 +OP-YMOD,65535 +OP-SOFT,65535 +OP1-TYPE, +OP1-TYPEID,0 +OP1-ID,65533 +OP1-YMOD,65535 +OP1-YMODTYPE,65535 +OP1-SOFT,65535 +OP2-TYPE, +OP2-TYPEID,0 +OP2-ID,65533 +OP2-YMOD,65535 +OP2-YMODTYPE,65535 +OP2-SOFT,65535 +OP3-TYPE, +OP3-TYPEID,0 +OP3-ID,65533 +OP3-YMOD,65535 +OP3-YMODTYPE,65535 +OP3-SOFT,65535 +ACCESS-LEVEL,1 +SpecVersion,65535 +AXIS-NUM,1 +MOTOR-TYPE,SGM7J-02AFD2C +MOTOR-ID,173 +ENCODER-ID,24 +ENCODER-SOFT,3 +ServoControlType,512 +CompatibleMapNum,6 +CompatibleMap,0,3,3,6,6,10 +CommentCnt,0 +Comment, +ServoNameComment,Picker Z +UserPrmCnt,198 +UserPrm,000,17,2,1 +UserPrm,001,0,2,0 +UserPrm,002,0,2,0 +UserPrm,006,2,2,0 +UserPrm,007,0,2,0 +UserPrm,008,0,2,0 +UserPrm,009,16,2,0 +UserPrm,00A,1,2,0 +UserPrm,00B,256,2,1 +UserPrm,00C,0,2,0 +UserPrm,00D,0,2,0 +UserPrm,00E,0,2,0 +UserPrm,00F,0,2,0 +UserPrm,010,1,2,0 +UserPrm,021,0,2,0 +UserPrm,040,0,2,0 +UserPrm,080,0,2,0 +UserPrm,081,0,2,0 +UserPrm,100,400,2,0 +UserPrm,101,2000,2,0 +UserPrm,102,400,2,0 +UserPrm,103,100,2,0 +UserPrm,104,400,2,0 +UserPrm,105,2000,2,0 +UserPrm,106,400,2,0 +UserPrm,109,0,2,0 +UserPrm,10A,0,2,0 +UserPrm,10B,0,2,0 +UserPrm,10C,200,2,0 +UserPrm,10D,0,2,0 +UserPrm,10E,0,2,0 +UserPrm,10F,0,2,0 +UserPrm,11F,0,2,0 +UserPrm,121,100,2,0 +UserPrm,122,100,2,0 +UserPrm,123,0,2,0 +UserPrm,124,0,2,0 +UserPrm,125,100,2,0 +UserPrm,131,0,2,0 +UserPrm,132,0,2,0 +UserPrm,135,0,2,0 +UserPrm,136,0,2,0 +UserPrm,139,0,2,0 +UserPrm,13D,2000,2,0 +UserPrm,140,256,2,0 +UserPrm,141,500,2,0 +UserPrm,142,1000,2,0 +UserPrm,143,1000,2,0 +UserPrm,144,1000,2,0 +UserPrm,145,500,2,0 +UserPrm,146,700,2,0 +UserPrm,147,1000,2,0 +UserPrm,148,500,2,0 +UserPrm,149,1000,2,0 +UserPrm,14A,800,2,0 +UserPrm,14B,100,2,0 +UserPrm,14F,33,2,0 +UserPrm,160,16,2,0 +UserPrm,161,1000,2,0 +UserPrm,162,100,2,0 +UserPrm,163,0,2,0 +UserPrm,164,0,2,0 +UserPrm,165,0,2,0 +UserPrm,166,0,2,0 +UserPrm,170,5121,2,0 +UserPrm,200,1,2,1 +UserPrm,205,65535,2,0 +UserPrm,207,0,2,0 +UserPrm,20A,32768,4,0 +UserPrm,20E,16777216,4,1 +UserPrm,210,20000,4,1 +UserPrm,212,5000,4,1 +UserPrm,216,0,2,0 +UserPrm,217,0,2,0 +UserPrm,218,1,2,0 +UserPrm,22A,0,2,0 +UserPrm,240,0,2,0 +UserPrm,281,20,2,0 +UserPrm,300,600,2,0 +UserPrm,301,100,2,0 +UserPrm,302,200,2,0 +UserPrm,303,300,2,0 +UserPrm,304,50,2,1 +UserPrm,305,0,2,0 +UserPrm,306,0,2,0 +UserPrm,307,40,2,0 +UserPrm,308,0,2,0 +UserPrm,30A,0,2,0 +UserPrm,30C,0,2,0 +UserPrm,310,0,2,0 +UserPrm,311,100,2,0 +UserPrm,312,50,2,0 +UserPrm,316,10000,2,0 +UserPrm,324,300,2,0 +UserPrm,400,30,2,0 +UserPrm,401,85,2,1 +UserPrm,402,800,2,0 +UserPrm,403,800,2,0 +UserPrm,404,100,2,0 +UserPrm,405,100,2,0 +UserPrm,406,800,2,0 +UserPrm,407,10000,2,0 +UserPrm,408,256,2,1 +UserPrm,409,5000,2,0 +UserPrm,40A,70,2,0 +UserPrm,40B,0,2,0 +UserPrm,40C,1480,2,1 +UserPrm,40D,150,2,1 +UserPrm,40E,0,2,0 +UserPrm,40F,5000,2,0 +UserPrm,410,50,2,0 +UserPrm,412,100,2,0 +UserPrm,415,0,2,0 +UserPrm,416,0,2,0 +UserPrm,417,5000,2,0 +UserPrm,418,70,2,0 +UserPrm,419,0,2,0 +UserPrm,41A,5000,2,0 +UserPrm,41B,70,2,0 +UserPrm,41C,0,2,0 +UserPrm,41D,5000,2,0 +UserPrm,41E,70,2,0 +UserPrm,41F,0,2,0 +UserPrm,423,0,2,0 +UserPrm,424,50,2,0 +UserPrm,425,100,2,0 +UserPrm,426,0,2,0 +UserPrm,427,0,2,0 +UserPrm,456,15,2,0 +UserPrm,460,257,2,0 +UserPrm,475,0,2,0 +UserPrm,476,0,2,0 +UserPrm,481,400,2,0 +UserPrm,482,3000,2,0 +UserPrm,486,25,2,0 +UserPrm,487,0,2,0 +UserPrm,488,100,2,0 +UserPrm,490,100,2,0 +UserPrm,495,100,2,0 +UserPrm,498,10,2,0 +UserPrm,501,10,2,0 +UserPrm,502,20,2,0 +UserPrm,503,10,2,0 +UserPrm,506,0,2,0 +UserPrm,507,100,2,0 +UserPrm,508,50,2,0 +UserPrm,509,20,2,0 +UserPrm,50A,8448,2,0 +UserPrm,50B,25923,2,0 +UserPrm,50C,34952,2,0 +UserPrm,50D,34952,2,0 +UserPrm,50E,12305,2,1 +UserPrm,50F,512,2,1 +UserPrm,510,0,2,0 +UserPrm,512,0,2,0 +UserPrm,513,0,2,0 +UserPrm,514,0,2,0 +UserPrm,515,34952,2,0 +UserPrm,516,34952,2,0 +UserPrm,517,1620,2,0 +UserPrm,518,0,2,0 +UserPrm,519,34952,2,0 +UserPrm,51B,1000,4,0 +UserPrm,51E,100,2,0 +UserPrm,520,5242880,4,0 +UserPrm,522,7,4,0 +UserPrm,524,1073741824,4,0 +UserPrm,526,5242880,4,0 +UserPrm,528,100,2,0 +UserPrm,529,10000,2,0 +UserPrm,52A,20,2,0 +UserPrm,52B,20,2,0 +UserPrm,52C,100,2,0 +UserPrm,52F,4095,2,0 +UserPrm,530,0,2,0 +UserPrm,531,32768,4,0 +UserPrm,533,500,2,0 +UserPrm,534,100,2,0 +UserPrm,535,100,2,0 +UserPrm,536,1,2,0 +UserPrm,550,0,2,0 +UserPrm,551,0,2,0 +UserPrm,552,100,2,0 +UserPrm,553,100,2,0 +UserPrm,55A,1,2,0 +UserPrm,560,400,2,0 +UserPrm,561,100,2,0 +UserPrm,600,0,2,0 +UserPrm,601,0,2,0 +UserPrm,603,0,2,0 +UserPrm,604,0,2,0 +UserPrm,621,0,2,0 +UserPrm,622,10000,2,0 +UserPrm,623,10000,2,0 +UserPrm,624,10,2,0 +UserPrm,625,100,2,0 +UserPrm,626,100,4,0 +UserPrm,628,10,2,0 +Custom +CustomGroupNum,1 +Gp1_Begin +GroupName, +Num,0 +Gp1_End diff --git a/Handler/MotParam/Mot_Printer_Y.swpp b/Handler/MotParam/Mot_Printer_Y.swpp new file mode 100644 index 0000000..dc0c57a Binary files /dev/null and b/Handler/MotParam/Mot_Printer_Y.swpp differ diff --git a/Handler/MotParam/Mot_Printer_Y.usrs b/Handler/MotParam/Mot_Printer_Y.usrs new file mode 100644 index 0000000..172f652 --- /dev/null +++ b/Handler/MotParam/Mot_Printer_Y.usrs @@ -0,0 +1,256 @@ +File-Spec,2 +FileType,User Parameters Data File +Made-by,YASKAWA SigmaWin+ Ver.7 +DateTime,12/29/2020 4:34:27 PM +SERVO-TYPE,SGD7S-1R6A00A002 +SERVO-ID,112 +SERVO-YMOD,0 +SERVO-SPEC,00 +SERVO-SOFT,47 +SERVO-CAPACITY,200 +SerialNo,1A2036500620026 +BTOFlag,1 +BTO-ID, +IS-SUPPORTED,1 +IS-EDITED,0 +MachineName, +OP-TYPE, +OP-ID,65533 +OP-YMOD,65535 +OP-SOFT,65535 +OP1-TYPE, +OP1-TYPEID,0 +OP1-ID,65533 +OP1-YMOD,65535 +OP1-YMODTYPE,65535 +OP1-SOFT,65535 +OP2-TYPE, +OP2-TYPEID,0 +OP2-ID,65533 +OP2-YMOD,65535 +OP2-YMODTYPE,65535 +OP2-SOFT,65535 +OP3-TYPE, +OP3-TYPEID,0 +OP3-ID,65533 +OP3-YMOD,65535 +OP3-YMODTYPE,65535 +OP3-SOFT,65535 +ACCESS-LEVEL,1 +SpecVersion,65535 +AXIS-NUM,1 +MOTOR-TYPE,SGM7J-02AFD21 +MOTOR-ID,173 +ENCODER-ID,24 +ENCODER-SOFT,3 +ServoControlType,512 +CompatibleMapNum,6 +CompatibleMap,0,3,3,6,6,10 +CommentCnt,0 +Comment, +ServoNameComment,PrintLeft Move +UserPrmCnt,198 +UserPrm,000,16,2,1 +UserPrm,001,0,2,0 +UserPrm,002,0,2,0 +UserPrm,006,2,2,0 +UserPrm,007,0,2,0 +UserPrm,008,0,2,0 +UserPrm,009,16,2,0 +UserPrm,00A,1,2,0 +UserPrm,00B,256,2,1 +UserPrm,00C,0,2,0 +UserPrm,00D,0,2,0 +UserPrm,00E,0,2,0 +UserPrm,00F,0,2,0 +UserPrm,010,1,2,0 +UserPrm,021,0,2,0 +UserPrm,040,0,2,0 +UserPrm,080,0,2,0 +UserPrm,081,0,2,0 +UserPrm,100,600,2,1 +UserPrm,101,2000,2,0 +UserPrm,102,600,2,1 +UserPrm,103,3000,2,1 +UserPrm,104,400,2,0 +UserPrm,105,2000,2,0 +UserPrm,106,400,2,0 +UserPrm,109,0,2,0 +UserPrm,10A,0,2,0 +UserPrm,10B,0,2,0 +UserPrm,10C,200,2,0 +UserPrm,10D,0,2,0 +UserPrm,10E,0,2,0 +UserPrm,10F,0,2,0 +UserPrm,11F,0,2,0 +UserPrm,121,100,2,0 +UserPrm,122,100,2,0 +UserPrm,123,0,2,0 +UserPrm,124,0,2,0 +UserPrm,125,100,2,0 +UserPrm,131,0,2,0 +UserPrm,132,0,2,0 +UserPrm,135,0,2,0 +UserPrm,136,0,2,0 +UserPrm,139,0,2,0 +UserPrm,13D,2000,2,0 +UserPrm,140,256,2,0 +UserPrm,141,500,2,0 +UserPrm,142,1000,2,0 +UserPrm,143,1000,2,0 +UserPrm,144,1000,2,0 +UserPrm,145,500,2,0 +UserPrm,146,700,2,0 +UserPrm,147,1000,2,0 +UserPrm,148,500,2,0 +UserPrm,149,1000,2,0 +UserPrm,14A,800,2,0 +UserPrm,14B,100,2,0 +UserPrm,14F,33,2,0 +UserPrm,160,16,2,0 +UserPrm,161,1000,2,0 +UserPrm,162,100,2,0 +UserPrm,163,0,2,0 +UserPrm,164,0,2,0 +UserPrm,165,0,2,0 +UserPrm,166,0,2,0 +UserPrm,170,5120,2,1 +UserPrm,200,1,2,1 +UserPrm,205,65535,2,0 +UserPrm,207,0,2,0 +UserPrm,20A,32768,4,0 +UserPrm,20E,16777216,4,1 +UserPrm,210,46000,4,1 +UserPrm,212,11500,4,1 +UserPrm,216,0,2,0 +UserPrm,217,0,2,0 +UserPrm,218,1,2,0 +UserPrm,22A,0,2,0 +UserPrm,240,0,2,0 +UserPrm,281,20,2,0 +UserPrm,300,600,2,0 +UserPrm,301,100,2,0 +UserPrm,302,200,2,0 +UserPrm,303,300,2,0 +UserPrm,304,50,2,1 +UserPrm,305,0,2,0 +UserPrm,306,0,2,0 +UserPrm,307,40,2,0 +UserPrm,308,0,2,0 +UserPrm,30A,0,2,0 +UserPrm,30C,0,2,0 +UserPrm,310,0,2,0 +UserPrm,311,100,2,0 +UserPrm,312,50,2,0 +UserPrm,316,10000,2,0 +UserPrm,324,300,2,0 +UserPrm,400,90,2,1 +UserPrm,401,400,2,1 +UserPrm,402,800,2,0 +UserPrm,403,800,2,0 +UserPrm,404,800,2,1 +UserPrm,405,800,2,1 +UserPrm,406,800,2,0 +UserPrm,407,10000,2,0 +UserPrm,408,0,2,0 +UserPrm,409,5000,2,0 +UserPrm,40A,70,2,0 +UserPrm,40B,0,2,0 +UserPrm,40C,5000,2,0 +UserPrm,40D,70,2,0 +UserPrm,40E,0,2,0 +UserPrm,40F,5000,2,0 +UserPrm,410,50,2,0 +UserPrm,412,100,2,0 +UserPrm,415,0,2,0 +UserPrm,416,0,2,0 +UserPrm,417,5000,2,0 +UserPrm,418,70,2,0 +UserPrm,419,0,2,0 +UserPrm,41A,5000,2,0 +UserPrm,41B,70,2,0 +UserPrm,41C,0,2,0 +UserPrm,41D,5000,2,0 +UserPrm,41E,70,2,0 +UserPrm,41F,0,2,0 +UserPrm,423,0,2,0 +UserPrm,424,50,2,0 +UserPrm,425,100,2,0 +UserPrm,426,0,2,0 +UserPrm,427,0,2,0 +UserPrm,456,15,2,0 +UserPrm,460,257,2,0 +UserPrm,475,0,2,0 +UserPrm,476,0,2,0 +UserPrm,481,400,2,0 +UserPrm,482,3000,2,0 +UserPrm,486,25,2,0 +UserPrm,487,0,2,0 +UserPrm,488,100,2,0 +UserPrm,490,100,2,0 +UserPrm,495,100,2,0 +UserPrm,498,10,2,0 +UserPrm,501,10,2,0 +UserPrm,502,20,2,0 +UserPrm,503,10,2,0 +UserPrm,506,0,2,0 +UserPrm,507,100,2,0 +UserPrm,508,50,2,0 +UserPrm,509,20,2,0 +UserPrm,50A,33025,2,1 +UserPrm,50B,25928,2,1 +UserPrm,50C,34952,2,0 +UserPrm,50D,34952,2,0 +UserPrm,50E,12817,2,0 +UserPrm,50F,0,2,0 +UserPrm,510,0,2,0 +UserPrm,512,0,2,0 +UserPrm,513,0,2,0 +UserPrm,514,0,2,0 +UserPrm,515,34952,2,0 +UserPrm,516,34952,2,0 +UserPrm,517,1620,2,0 +UserPrm,518,0,2,0 +UserPrm,519,34952,2,0 +UserPrm,51B,1000,4,0 +UserPrm,51E,100,2,0 +UserPrm,520,5242880,4,0 +UserPrm,522,7,4,0 +UserPrm,524,1073741824,4,0 +UserPrm,526,5242880,4,0 +UserPrm,528,100,2,0 +UserPrm,529,10000,2,0 +UserPrm,52A,20,2,0 +UserPrm,52B,20,2,0 +UserPrm,52C,100,2,0 +UserPrm,52F,4095,2,0 +UserPrm,530,5,2,1 +UserPrm,531,2000,4,1 +UserPrm,533,100,2,1 +UserPrm,534,100,2,0 +UserPrm,535,3,2,1 +UserPrm,536,0,2,1 +UserPrm,550,0,2,0 +UserPrm,551,0,2,0 +UserPrm,552,100,2,0 +UserPrm,553,100,2,0 +UserPrm,55A,1,2,0 +UserPrm,560,400,2,0 +UserPrm,561,100,2,0 +UserPrm,600,0,2,0 +UserPrm,601,0,2,0 +UserPrm,603,0,2,0 +UserPrm,604,0,2,0 +UserPrm,621,0,2,0 +UserPrm,622,10000,2,0 +UserPrm,623,10000,2,0 +UserPrm,624,10,2,0 +UserPrm,625,100,2,0 +UserPrm,626,100,4,0 +UserPrm,628,10,2,0 +Custom +CustomGroupNum,1 +Gp1_Begin +GroupName, +Num,0 +Gp1_End diff --git a/Handler/MotParam/Mot_Printer_Z.swpp b/Handler/MotParam/Mot_Printer_Z.swpp new file mode 100644 index 0000000..9a0a87f Binary files /dev/null and b/Handler/MotParam/Mot_Printer_Z.swpp differ diff --git a/Handler/MotParam/Mot_Printer_Z.usrs b/Handler/MotParam/Mot_Printer_Z.usrs new file mode 100644 index 0000000..eeb0f03 --- /dev/null +++ b/Handler/MotParam/Mot_Printer_Z.usrs @@ -0,0 +1,256 @@ +File-Spec,2 +FileType,User Parameters Data File +Made-by,YASKAWA SigmaWin+ Ver.7 +DateTime,12/29/2020 4:42:26 PM +SERVO-TYPE,SGD7S-1R6A00A002 +SERVO-ID,112 +SERVO-YMOD,0 +SERVO-SPEC,00 +SERVO-SOFT,47 +SERVO-CAPACITY,200 +SerialNo,1A2046912320009 +BTOFlag,1 +BTO-ID, +IS-SUPPORTED,1 +IS-EDITED,0 +MachineName, +OP-TYPE, +OP-ID,65533 +OP-YMOD,65535 +OP-SOFT,65535 +OP1-TYPE, +OP1-TYPEID,0 +OP1-ID,65533 +OP1-YMOD,65535 +OP1-YMODTYPE,65535 +OP1-SOFT,65535 +OP2-TYPE, +OP2-TYPEID,0 +OP2-ID,65533 +OP2-YMOD,65535 +OP2-YMODTYPE,65535 +OP2-SOFT,65535 +OP3-TYPE, +OP3-TYPEID,0 +OP3-ID,65533 +OP3-YMOD,65535 +OP3-YMODTYPE,65535 +OP3-SOFT,65535 +ACCESS-LEVEL,1 +SpecVersion,65535 +AXIS-NUM,1 +MOTOR-TYPE,SGM7J-02AFD2C +MOTOR-ID,173 +ENCODER-ID,24 +ENCODER-SOFT,3 +ServoControlType,512 +CompatibleMapNum,6 +CompatibleMap,0,3,3,6,6,10 +CommentCnt,0 +Comment, +ServoNameComment,Print Left Up/Dn +UserPrmCnt,198 +UserPrm,000,17,2,1 +UserPrm,001,0,2,0 +UserPrm,002,0,2,0 +UserPrm,006,2,2,0 +UserPrm,007,0,2,0 +UserPrm,008,0,2,0 +UserPrm,009,16,2,0 +UserPrm,00A,1,2,0 +UserPrm,00B,256,2,1 +UserPrm,00C,0,2,0 +UserPrm,00D,0,2,0 +UserPrm,00E,0,2,0 +UserPrm,00F,0,2,0 +UserPrm,010,1,2,0 +UserPrm,021,0,2,0 +UserPrm,040,0,2,0 +UserPrm,080,0,2,0 +UserPrm,081,0,2,0 +UserPrm,100,400,2,0 +UserPrm,101,2000,2,0 +UserPrm,102,400,2,0 +UserPrm,103,100,2,0 +UserPrm,104,400,2,0 +UserPrm,105,2000,2,0 +UserPrm,106,400,2,0 +UserPrm,109,0,2,0 +UserPrm,10A,0,2,0 +UserPrm,10B,0,2,0 +UserPrm,10C,200,2,0 +UserPrm,10D,0,2,0 +UserPrm,10E,0,2,0 +UserPrm,10F,0,2,0 +UserPrm,11F,0,2,0 +UserPrm,121,100,2,0 +UserPrm,122,100,2,0 +UserPrm,123,0,2,0 +UserPrm,124,0,2,0 +UserPrm,125,100,2,0 +UserPrm,131,0,2,0 +UserPrm,132,0,2,0 +UserPrm,135,0,2,0 +UserPrm,136,0,2,0 +UserPrm,139,0,2,0 +UserPrm,13D,2000,2,0 +UserPrm,140,256,2,0 +UserPrm,141,500,2,0 +UserPrm,142,1000,2,0 +UserPrm,143,1000,2,0 +UserPrm,144,1000,2,0 +UserPrm,145,500,2,0 +UserPrm,146,700,2,0 +UserPrm,147,1000,2,0 +UserPrm,148,500,2,0 +UserPrm,149,1000,2,0 +UserPrm,14A,800,2,0 +UserPrm,14B,100,2,0 +UserPrm,14F,33,2,0 +UserPrm,160,16,2,0 +UserPrm,161,1000,2,0 +UserPrm,162,100,2,0 +UserPrm,163,0,2,0 +UserPrm,164,0,2,0 +UserPrm,165,0,2,0 +UserPrm,166,0,2,0 +UserPrm,170,5121,2,0 +UserPrm,200,1,2,1 +UserPrm,205,65535,2,0 +UserPrm,207,0,2,0 +UserPrm,20A,32768,4,0 +UserPrm,20E,16777216,4,1 +UserPrm,210,10000,4,1 +UserPrm,212,2500,4,1 +UserPrm,216,0,2,0 +UserPrm,217,0,2,0 +UserPrm,218,1,2,0 +UserPrm,22A,0,2,0 +UserPrm,240,0,2,0 +UserPrm,281,20,2,0 +UserPrm,300,600,2,0 +UserPrm,301,100,2,0 +UserPrm,302,200,2,0 +UserPrm,303,300,2,0 +UserPrm,304,50,2,1 +UserPrm,305,0,2,0 +UserPrm,306,0,2,0 +UserPrm,307,40,2,0 +UserPrm,308,0,2,0 +UserPrm,30A,0,2,0 +UserPrm,30C,0,2,0 +UserPrm,310,0,2,0 +UserPrm,311,100,2,0 +UserPrm,312,50,2,0 +UserPrm,316,10000,2,0 +UserPrm,324,300,2,0 +UserPrm,400,30,2,0 +UserPrm,401,85,2,1 +UserPrm,402,800,2,0 +UserPrm,403,800,2,0 +UserPrm,404,100,2,0 +UserPrm,405,100,2,0 +UserPrm,406,800,2,0 +UserPrm,407,10000,2,0 +UserPrm,408,256,2,1 +UserPrm,409,5000,2,0 +UserPrm,40A,70,2,0 +UserPrm,40B,0,2,0 +UserPrm,40C,1480,2,1 +UserPrm,40D,150,2,1 +UserPrm,40E,0,2,0 +UserPrm,40F,5000,2,0 +UserPrm,410,50,2,0 +UserPrm,412,100,2,0 +UserPrm,415,0,2,0 +UserPrm,416,0,2,0 +UserPrm,417,5000,2,0 +UserPrm,418,70,2,0 +UserPrm,419,0,2,0 +UserPrm,41A,5000,2,0 +UserPrm,41B,70,2,0 +UserPrm,41C,0,2,0 +UserPrm,41D,5000,2,0 +UserPrm,41E,70,2,0 +UserPrm,41F,0,2,0 +UserPrm,423,0,2,0 +UserPrm,424,50,2,0 +UserPrm,425,100,2,0 +UserPrm,426,0,2,0 +UserPrm,427,0,2,0 +UserPrm,456,15,2,0 +UserPrm,460,257,2,0 +UserPrm,475,0,2,0 +UserPrm,476,0,2,0 +UserPrm,481,400,2,0 +UserPrm,482,3000,2,0 +UserPrm,486,25,2,0 +UserPrm,487,0,2,0 +UserPrm,488,100,2,0 +UserPrm,490,100,2,0 +UserPrm,495,100,2,0 +UserPrm,498,10,2,0 +UserPrm,501,10,2,0 +UserPrm,502,20,2,0 +UserPrm,503,10,2,0 +UserPrm,506,0,2,0 +UserPrm,507,100,2,0 +UserPrm,508,50,2,0 +UserPrm,509,20,2,0 +UserPrm,50A,8448,2,0 +UserPrm,50B,25923,2,0 +UserPrm,50C,34952,2,0 +UserPrm,50D,34952,2,0 +UserPrm,50E,12305,2,1 +UserPrm,50F,512,2,1 +UserPrm,510,0,2,0 +UserPrm,512,0,2,0 +UserPrm,513,0,2,0 +UserPrm,514,0,2,0 +UserPrm,515,34952,2,0 +UserPrm,516,34952,2,0 +UserPrm,517,1620,2,0 +UserPrm,518,0,2,0 +UserPrm,519,34952,2,0 +UserPrm,51B,1000,4,0 +UserPrm,51E,100,2,0 +UserPrm,520,5242880,4,0 +UserPrm,522,7,4,0 +UserPrm,524,1073741824,4,0 +UserPrm,526,5242880,4,0 +UserPrm,528,100,2,0 +UserPrm,529,10000,2,0 +UserPrm,52A,20,2,0 +UserPrm,52B,20,2,0 +UserPrm,52C,100,2,0 +UserPrm,52F,4095,2,0 +UserPrm,530,0,2,0 +UserPrm,531,32768,4,0 +UserPrm,533,500,2,0 +UserPrm,534,100,2,0 +UserPrm,535,100,2,0 +UserPrm,536,1,2,0 +UserPrm,550,0,2,0 +UserPrm,551,0,2,0 +UserPrm,552,100,2,0 +UserPrm,553,100,2,0 +UserPrm,55A,1,2,0 +UserPrm,560,400,2,0 +UserPrm,561,100,2,0 +UserPrm,600,0,2,0 +UserPrm,601,0,2,0 +UserPrm,603,0,2,0 +UserPrm,604,0,2,0 +UserPrm,621,0,2,0 +UserPrm,622,10000,2,0 +UserPrm,623,10000,2,0 +UserPrm,624,10,2,0 +UserPrm,625,100,2,0 +UserPrm,626,100,4,0 +UserPrm,628,10,2,0 +Custom +CustomGroupNum,1 +Gp1_Begin +GroupName, +Num,0 +Gp1_End diff --git a/Handler/MotParam/Mot_Theta.swpp b/Handler/MotParam/Mot_Theta.swpp new file mode 100644 index 0000000..6947722 Binary files /dev/null and b/Handler/MotParam/Mot_Theta.swpp differ diff --git a/Handler/MotParam/Mot_Theta.usrs b/Handler/MotParam/Mot_Theta.usrs new file mode 100644 index 0000000..5517e83 --- /dev/null +++ b/Handler/MotParam/Mot_Theta.usrs @@ -0,0 +1,256 @@ +File-Spec,2 +FileType,User Parameters Data File +Made-by,YASKAWA SigmaWin+ Ver.7 +DateTime,12/23/2020 11:42:01 AM +SERVO-TYPE,SGD7S-1R6A00A002 +SERVO-ID,112 +SERVO-YMOD,0 +SERVO-SPEC,00 +SERVO-SOFT,47 +SERVO-CAPACITY,200 +SerialNo,1A2036500620098 +BTOFlag,1 +BTO-ID, +IS-SUPPORTED,1 +IS-EDITED,0 +MachineName, +OP-TYPE, +OP-ID,65533 +OP-YMOD,65535 +OP-SOFT,65535 +OP1-TYPE, +OP1-TYPEID,0 +OP1-ID,65533 +OP1-YMOD,65535 +OP1-YMODTYPE,65535 +OP1-SOFT,65535 +OP2-TYPE, +OP2-TYPEID,0 +OP2-ID,65533 +OP2-YMOD,65535 +OP2-YMODTYPE,65535 +OP2-SOFT,65535 +OP3-TYPE, +OP3-TYPEID,0 +OP3-ID,65533 +OP3-YMOD,65535 +OP3-YMODTYPE,65535 +OP3-SOFT,65535 +ACCESS-LEVEL,1 +SpecVersion,65535 +AXIS-NUM,1 +MOTOR-TYPE,SGM7J-02AFD21 +MOTOR-ID,173 +ENCODER-ID,24 +ENCODER-SOFT,3 +ServoControlType,512 +CompatibleMapNum,6 +CompatibleMap,0,3,3,6,6,10 +CommentCnt,0 +Comment, +ServoNameComment,Picker Theta +UserPrmCnt,198 +UserPrm,000,17,2,1 +UserPrm,001,0,2,0 +UserPrm,002,0,2,0 +UserPrm,006,2,2,0 +UserPrm,007,0,2,0 +UserPrm,008,0,2,0 +UserPrm,009,16,2,0 +UserPrm,00A,1,2,0 +UserPrm,00B,256,2,1 +UserPrm,00C,0,2,0 +UserPrm,00D,0,2,0 +UserPrm,00E,0,2,0 +UserPrm,00F,0,2,0 +UserPrm,010,1,2,0 +UserPrm,021,0,2,0 +UserPrm,040,0,2,0 +UserPrm,080,0,2,0 +UserPrm,081,0,2,0 +UserPrm,100,400,2,0 +UserPrm,101,2000,2,0 +UserPrm,102,400,2,0 +UserPrm,103,100,2,0 +UserPrm,104,400,2,0 +UserPrm,105,2000,2,0 +UserPrm,106,400,2,0 +UserPrm,109,0,2,0 +UserPrm,10A,0,2,0 +UserPrm,10B,0,2,0 +UserPrm,10C,200,2,0 +UserPrm,10D,0,2,0 +UserPrm,10E,0,2,0 +UserPrm,10F,0,2,0 +UserPrm,11F,0,2,0 +UserPrm,121,100,2,0 +UserPrm,122,100,2,0 +UserPrm,123,0,2,0 +UserPrm,124,0,2,0 +UserPrm,125,100,2,0 +UserPrm,131,0,2,0 +UserPrm,132,0,2,0 +UserPrm,135,0,2,0 +UserPrm,136,0,2,0 +UserPrm,139,0,2,0 +UserPrm,13D,2000,2,0 +UserPrm,140,256,2,0 +UserPrm,141,500,2,0 +UserPrm,142,1000,2,0 +UserPrm,143,1000,2,0 +UserPrm,144,1000,2,0 +UserPrm,145,500,2,0 +UserPrm,146,700,2,0 +UserPrm,147,1000,2,0 +UserPrm,148,500,2,0 +UserPrm,149,1000,2,0 +UserPrm,14A,800,2,0 +UserPrm,14B,100,2,0 +UserPrm,14F,33,2,0 +UserPrm,160,16,2,0 +UserPrm,161,1000,2,0 +UserPrm,162,100,2,0 +UserPrm,163,0,2,0 +UserPrm,164,0,2,0 +UserPrm,165,0,2,0 +UserPrm,166,0,2,0 +UserPrm,170,5121,2,0 +UserPrm,200,1,2,1 +UserPrm,205,65535,2,0 +UserPrm,207,0,2,0 +UserPrm,20A,32768,4,0 +UserPrm,20E,16777216,4,1 +UserPrm,210,20000,4,1 +UserPrm,212,5000,4,1 +UserPrm,216,0,2,0 +UserPrm,217,0,2,0 +UserPrm,218,1,2,0 +UserPrm,22A,0,2,0 +UserPrm,240,0,2,0 +UserPrm,281,20,2,0 +UserPrm,300,600,2,0 +UserPrm,301,100,2,0 +UserPrm,302,200,2,0 +UserPrm,303,300,2,0 +UserPrm,304,200,2,1 +UserPrm,305,0,2,0 +UserPrm,306,0,2,0 +UserPrm,307,40,2,0 +UserPrm,308,0,2,0 +UserPrm,30A,0,2,0 +UserPrm,30C,0,2,0 +UserPrm,310,0,2,0 +UserPrm,311,100,2,0 +UserPrm,312,50,2,0 +UserPrm,316,10000,2,0 +UserPrm,324,300,2,0 +UserPrm,400,30,2,0 +UserPrm,401,100,2,0 +UserPrm,402,800,2,0 +UserPrm,403,800,2,0 +UserPrm,404,100,2,0 +UserPrm,405,100,2,0 +UserPrm,406,800,2,0 +UserPrm,407,10000,2,0 +UserPrm,408,0,2,0 +UserPrm,409,5000,2,0 +UserPrm,40A,70,2,0 +UserPrm,40B,0,2,0 +UserPrm,40C,5000,2,0 +UserPrm,40D,70,2,0 +UserPrm,40E,0,2,0 +UserPrm,40F,5000,2,0 +UserPrm,410,50,2,0 +UserPrm,412,100,2,0 +UserPrm,415,0,2,0 +UserPrm,416,0,2,0 +UserPrm,417,5000,2,0 +UserPrm,418,70,2,0 +UserPrm,419,0,2,0 +UserPrm,41A,5000,2,0 +UserPrm,41B,70,2,0 +UserPrm,41C,0,2,0 +UserPrm,41D,5000,2,0 +UserPrm,41E,70,2,0 +UserPrm,41F,0,2,0 +UserPrm,423,0,2,0 +UserPrm,424,50,2,0 +UserPrm,425,100,2,0 +UserPrm,426,0,2,0 +UserPrm,427,0,2,0 +UserPrm,456,15,2,0 +UserPrm,460,257,2,0 +UserPrm,475,0,2,0 +UserPrm,476,0,2,0 +UserPrm,481,400,2,0 +UserPrm,482,3000,2,0 +UserPrm,486,25,2,0 +UserPrm,487,0,2,0 +UserPrm,488,100,2,0 +UserPrm,490,100,2,0 +UserPrm,495,100,2,0 +UserPrm,498,10,2,0 +UserPrm,501,10,2,0 +UserPrm,502,20,2,0 +UserPrm,503,10,2,0 +UserPrm,506,0,2,0 +UserPrm,507,100,2,0 +UserPrm,508,50,2,0 +UserPrm,509,20,2,0 +UserPrm,50A,8448,2,0 +UserPrm,50B,25923,2,0 +UserPrm,50C,34952,2,0 +UserPrm,50D,34952,2,0 +UserPrm,50E,12817,2,0 +UserPrm,50F,0,2,0 +UserPrm,510,0,2,0 +UserPrm,512,0,2,0 +UserPrm,513,0,2,0 +UserPrm,514,0,2,0 +UserPrm,515,34952,2,0 +UserPrm,516,34952,2,0 +UserPrm,517,1620,2,0 +UserPrm,518,0,2,0 +UserPrm,519,34952,2,0 +UserPrm,51B,1000,4,0 +UserPrm,51E,100,2,0 +UserPrm,520,5242880,4,0 +UserPrm,522,7,4,0 +UserPrm,524,1073741824,4,0 +UserPrm,526,5242880,4,0 +UserPrm,528,100,2,0 +UserPrm,529,10000,2,0 +UserPrm,52A,20,2,0 +UserPrm,52B,20,2,0 +UserPrm,52C,100,2,0 +UserPrm,52F,4095,2,0 +UserPrm,530,0,2,0 +UserPrm,531,32768,4,0 +UserPrm,533,500,2,0 +UserPrm,534,100,2,0 +UserPrm,535,100,2,0 +UserPrm,536,1,2,0 +UserPrm,550,0,2,0 +UserPrm,551,0,2,0 +UserPrm,552,100,2,0 +UserPrm,553,100,2,0 +UserPrm,55A,1,2,0 +UserPrm,560,400,2,0 +UserPrm,561,100,2,0 +UserPrm,600,0,2,0 +UserPrm,601,0,2,0 +UserPrm,603,0,2,0 +UserPrm,604,0,2,0 +UserPrm,621,0,2,0 +UserPrm,622,10000,2,0 +UserPrm,623,10000,2,0 +UserPrm,624,10,2,0 +UserPrm,625,100,2,0 +UserPrm,626,100,4,0 +UserPrm,628,10,2,0 +Custom +CustomGroupNum,1 +Gp1_Begin +GroupName, +Num,0 +Gp1_End diff --git a/Handler/Project/Button/AIR.cs b/Handler/Project/Button/AIR.cs new file mode 100644 index 0000000..8782464 --- /dev/null +++ b/Handler/Project/Button/AIR.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + } +} diff --git a/Handler/Project/Button/RESET.cs b/Handler/Project/Button/RESET.cs new file mode 100644 index 0000000..476a139 --- /dev/null +++ b/Handler/Project/Button/RESET.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using UIControl; +using AR; +namespace Project +{ + public partial class FMain + { + + void _BUTTON_RESET() + { + //Common processing when RESET button is pressed + DIO.SetBuzzer(false); //buzzer off + + if (PUB.popup.Visible) + PUB.popup.needClose = true; + + if ( + hmi1.Scean == HMI.eScean.xmove) + hmi1.Scean = UIControl.HMI.eScean.Nomal; + + PUB.flag.set(eVarBool.FG_KEYENCE_OFFF, false, "USER"); + PUB.flag.set(eVarBool.FG_KEYENCE_OFFR, false, "USER"); + + //Remove popup message if it's a removable message. + if (hmi1.HasPopupMenu && hmi1.PopupMenuRequireInput == false) + hmi1.DelMenu(); + + //Alarm clear work (only when motion has error) + if (PUB.mot.IsInit && PUB.mot.HasServoAlarm) + { + PUB.mot.SetAlarmClearOn(); + System.Threading.Thread.Sleep(200); + PUB.mot.SetAlarmClearOff(); + } + + //If there's no material and sensor doesn't respond but vacuum is on, turn it off + if (DIO.isVacOKL() == 0 && PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && DIO.GetIOOutput(eDOName.PICK_VAC1) == false) + DIO.SetPickerVac(false, true); + + + //This reset is meaningful in stop and error mode. + if (PUB.sm.Step == eSMStep.RUN) + { + PUB.log.Add("[RESET] button does not work during operation"); + } + else if (PUB.sm.Step == eSMStep.PAUSE) + { + //Switch to start waiting state (execution starts when start key is pressed in waiting state) + PUB.sm.SetNewStep(eSMStep.WAITSTART); + PUB.log.AddAT("Reset Clear System Resume & Pause ON"); + } + else if (PUB.sm.Step == eSMStep.EMERGENCY) + { + PUB.popup.setMessage("EMERGENCY RESET\n" + + "[Emergency Stop] state requires [System Initialization]\n" + + "Execute [Initialize] from the top menu"); + + PUB.log.Add("RESET button caused transition from EMG situation to IDLE"); + PUB.sm.SetNewStep(eSMStep.IDLE); + } + else if (PUB.sm.Step == eSMStep.ERROR) + { + PUB.log.Add("RESET button caused transition from ERR situation to IDLE"); + PUB.sm.SetNewStep(eSMStep.IDLE); + } + else if (PUB.sm.Step == eSMStep.WAITSTART) + { + //No processing even when waiting for start + //Pub.log.Add("[RESET] button does not work while waiting for start button"); + } + else if (PUB.sm.Step == eSMStep.IDLE) + { + //Pub.log.Add("[RESET] button does not work during standby"); + } + else + { + //Pub.log.AddE("REST key button input from undefined state - switching to standby state"); + PUB.sm.SetNewStep(eSMStep.IDLE); + } + } + } +} diff --git a/Handler/Project/Button/START.cs b/Handler/Project/Button/START.cs new file mode 100644 index 0000000..23def82 --- /dev/null +++ b/Handler/Project/Button/START.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + + void _BUTTON_START() + { + if (PUB.sm.Step == eSMStep.RUN) + { + //아무것도 하지 않는다 + PUB.log.Add("START button is not available during operation"); + } + else if (PUB.sm.Step == eSMStep.IDLE) //일반대기상태 + { + if (DIO.isVacOKL() > 0) + { + DIO.SetBuzzer(true); + PUB.popup.setMessage("PICKER ITEM DETECT\nItem detected in PICKER\nPress [Cancel Work] to DROP item and remove it."); + return; + } + else if (DIO.getCartSize(1) == eCartSize.None) + { + DIO.SetBuzzer(true); + PUB.popup.setMessage("Cart is not installed in loader"); + return; + } + else if (DIO.GetIOInput(eDIName.PORTC_LIM_DN) == true && DIO.GetIOInput(eDIName.PORTC_DET_UP) == true) + { + //하단리밋과, 자재감지가 동시에 들어오면 overload 이다 + DIO.SetBuzzer(true); + PUB.popup.setMessage("Too many reels are loaded in the loader\n" + + "Bottom limit sensor and top reel detection sensor are both active"); + return; + } + //else if (Util_DO.getCartSize(0) == eCartSize.None && Util_DO.getCartSize(2) == eCartSize.None) + //{ + // Util_DO.SetBuzzer(true); + // Pub.popup.setMessage("언로더에 카트가 장착되지 않았습니다"); + // return; + //} + + Func_start_job_select(); + + + } + else if (PUB.sm.Step == eSMStep.WAITSTART) //시작대기상태 + { + + DIO.SetRoomLight(true); + + //새로시작하면 포트 얼라인을 해제 해준다 + PUB.flag.set(eVarBool.FG_RDY_PORT_PL, false, "SW_START"); + PUB.flag.set(eVarBool.FG_RDY_PORT_PC, false, "SW_START"); + PUB.flag.set(eVarBool.FG_RDY_PORT_PR, false, "SW_START"); + + VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = false; + + //언로더 체크작업은 항상 다시 시작한다 + if (PUB.Result.UnloaderSeq > 1) PUB.Result.UnloaderSeq = 1; + + //팝업메세지가 사라지도록 한다 + PUB.popup.needClose = true; + PUB.sm.SetNewStep(eSMStep.RUN); + PUB.log.Add("[User pause] released => Work continues"); + } + else + { + //string msg = "SYSTEM {0}\n[RESET] 버튼을 누른 후 다시 시도하세요"; + //msg = string.Format(msg, PUB.sm.Step); + //PUB.popup.setMessage(msg); + PUB.log.AddE($"Press [RESET] button and try again"); + } + } + } +} diff --git a/Handler/Project/Button/STOP.cs b/Handler/Project/Button/STOP.cs new file mode 100644 index 0000000..359e45a --- /dev/null +++ b/Handler/Project/Button/STOP.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + void _BUTTON_STOP() + { + //매거진 투입모터 멈춤 + if (DIO.GetIOOutput(eDOName.PORTL_MOT_RUN)) DIO.SetPortMotor(0, eMotDir.CW, false, "Button Stop"); + if (DIO.GetIOOutput(eDOName.PORTC_MOT_RUN)) DIO.SetPortMotor(1, eMotDir.CW, false, "Button Stop"); + if (DIO.GetIOOutput(eDOName.PORTR_MOT_RUN)) DIO.SetPortMotor(2, eMotDir.CW, false, "Button Stop"); + + //자재가 없고, 센서도 반응안하는데. 진공이 되어잇으면 off한다 + if (DIO.isVacOKL() == 0 && PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && DIO.GetIOOutput(eDOName.PICK_VAC1) == true) + DIO.SetPickerVac(false, true); + + //조명켜기 + if (AR.SETTING.Data.Disable_RoomLight == false) + DIO.SetRoomLight(true); + + //컨베이어 멈춘다 230502 + DIO.SetOutput(eDOName.LEFT_CONV, false); + DIO.SetOutput(eDOName.RIGHT_CONV, false); + + //모든 모터도 멈춘다 + if (PUB.mot.HasMoving) PUB.mot.MoveStop("Stop Button"); + + if (PUB.sm.Step == eSMStep.RUN) + { + //일시중지상태로 전환한다 + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.USER_STOP, eNextStep.PAUSE); + PUB.log.Add("[User pause]"); + } + else if (PUB.sm.Step == eSMStep.HOME_FULL) //홈진행중에는 대기상태로 전환 + { + PUB.sm.SetNewStep(eSMStep.IDLE); + } + + //로그 기록 + PUB.LogFlush(); + } + + } +} diff --git a/Handler/Project/Class/CHistoryJOB.cs b/Handler/Project/Class/CHistoryJOB.cs new file mode 100644 index 0000000..3fd3399 --- /dev/null +++ b/Handler/Project/Class/CHistoryJOB.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +namespace Project.Class +{ + + public class CHistoryJOB : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + List _items; + public CHistoryJOB() + { + _items = new List(); + } + public void Clear() + { + lock (_items) + { + _items.Clear(); + } + + OnPropertyChanged("Clear"); + } + public int Count + { + get + { + lock (_items) + { + return _items.Count; + } + } + } + public void SetItems(List value) + { + lock (_items) + { + this._items = value; + } + OnPropertyChanged("REFRESH"); + } + + public List Items { get { return _items; } } + public void Add(JobData data) + { + lock (_items) + { + data.No = this._items.Count + 1; + _items.Add(data); + } + + OnPropertyChanged("Add:" + data.guid); + } + + public void Remove(JobData data) + { + lock (_items) + { + _items.Remove(data); + } + + OnPropertyChanged("Remove:" + data.guid); + } + public void Remove(string guid) + { + lock (_items) + { + var data = Get(guid); + _items.Remove(data); + } + OnPropertyChanged("Remove:" + guid); + } + public JobData Get(string guid) + { + lock (_items) + { + return _items.Where(t => t.guid == guid).FirstOrDefault(); + } + } + public void Set(JobData data) + { + var item = Get(data.guid); + if (item == null) throw new Exception("No data guid:" + data.guid.ToString()); + else + { + //item.No = data.No; + //item.JobStart = data.JobStart; + //item.JobEnd = data.JobEnd; + //item.VisionData = data.VisionData; + //item.error = data.error; + //item.Message = data.Message; + OnPropertyChanged("Set:" + data.guid); + } + } + public void RaiseSetEvent(string guid) + { + OnPropertyChanged("Set:" + guid); + } + + protected void OnPropertyChanged([CallerMemberName] string name = null) + { + if (PropertyChanged != null) + PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name)); + } + } + //[Serializable] + //public class JobData + //{ + // //고유식별자 + // public string guid { get; private set; } + + // //비젼처리값 + // public Class.VisionData VisionData { get; set; } + + // //언로더포트(L/R) + // public string PortPos { get; set; } + + // //프린트위치(U/LO) + // public string PrintPos { get; set; } + + // //작업시작시간 + // public DateTime JobStart { get; set; } + + // //작업종료시간 + // public DateTime JobEnd { get; set; } + + // /// + // /// 이전 출고되는 시점과의 시간차 값 + // /// + // public double TackTime { get { return (JobEnd - JobStart).TotalSeconds; } } + + // //작업순서 + // public int No { get; set; } + + // //오류상태 + // public eJobResult error { get; set; } + + // //메세지 + // public string message { get; set; } + + + // public TimeSpan JobRun + // { + // get + // { + // if (JobEnd.Year == 1982) return new TimeSpan(0); + // else return this.JobEnd - this.JobStart; + // } + // } + // public JobData() + // { + // this.No = 0; + // PortPos = string.Empty; + // PrintPos = string.Empty; + // guid = Guid.NewGuid().ToString(); + // VisionData = new VisionData(); + // this.JobStart = new DateTime(1982, 11, 23); // DateTime.Parse("1982-11-23"); + // this.JobEnd = new DateTime(1982, 11, 23); // DateTime.Parse("1982-11-23"); + // error = eJobResult.None; + // message = string.Empty; + // } + + //} +} diff --git a/Handler/Project/Class/CHistorySIDRef.cs b/Handler/Project/Class/CHistorySIDRef.cs new file mode 100644 index 0000000..495d006 --- /dev/null +++ b/Handler/Project/Class/CHistorySIDRef.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +namespace Project.Class +{ + public class CHistorySIDRef : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + public Boolean JobSIDRecvError + { + get + { + //아이템이있어야 정상이다 + if (_items == null || _items.Count < 1) return true; + else if (JobSIDRecvTime.Year == 1982) return true; + else return false; + } + } + public DateTime JobSIDRecvTime { get; set; } + public string JobSIDRecvMessage { get; set; } + List _items; + + public CHistorySIDRef() + { + Clear(); + } + public void SetItems(List value) + { + this._items = value; + OnPropertyChanged("REFRESH"); + } + + public List Items { get { return _items; } } + public int Count + { + get + { + return _items.Count; + } + } + public SIDDataRef Get(string sid_) + { + return _items.Where(t => t.sid == sid_).FirstOrDefault(); + } + public void Set(SIDDataRef data) + { + var item = Get(data.sid); + if (item == null) throw new Exception("No data sid:" + data.sid.ToString()); + else + { + item.kpc = data.kpc; + item.unit = data.unit; + OnPropertyChanged("Set:" + data.sid); + } + } + + public void Set(string sid, int kpc, string unit) + { + var item = Get(sid); + if (item == null) + { + Add(sid, kpc, unit); //없다면 추가해준다 + } + else + { + item.kpc = kpc; + item.unit = unit; + OnPropertyChanged("Set:" + sid); + } + } + + public void Add(SIDDataRef data) + { + _items.Add(data); + OnPropertyChanged("Add:" + data.sid); + } + + + public void Add(string sid, int kpc_, string unit) + { + if (string.IsNullOrEmpty(sid)) + { + PUB.log.AddAT("SID addition failed - SID value not entered"); + return; + } + //if (JobSidList.ContainsKey(sid) == false) + _items.Add(new SIDDataRef(sid, kpc_, unit)); + OnPropertyChanged("Add:" + sid); + //else + //{ + //이미 데이터가 있다. 중복이므로 누적한다 + //JobSidList.TryGetValue() + //} + } + public void Clear() + { + //JobSIDRecvError = false; + JobSIDRecvMessage = string.Empty; + JobSIDRecvTime = DateTime.Parse("1982-11-23"); + if (this._items == null) this._items = new List(); + else this._items.Clear(); + OnPropertyChanged("Clear"); + } + + protected void OnPropertyChanged([CallerMemberName] string name = null) + { + if (PropertyChanged != null) + PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name)); + } + } + + [Serializable] + public class SIDDataRef + { + public string guid { get; set; } + public string sid { get; set; } + public string unit { get; set; } + public int kpc { get; set; } + + public SIDDataRef(string sid_, int kpc_, string unit_) + { + + guid = Guid.NewGuid().ToString(); + sid = sid_; + unit = unit_; + kpc = kpc_; + } + public SIDDataRef() : this(string.Empty, 0, string.Empty) { } + } +} diff --git a/Handler/Project/Class/CResult.cs b/Handler/Project/Class/CResult.cs new file mode 100644 index 0000000..76b86f4 --- /dev/null +++ b/Handler/Project/Class/CResult.cs @@ -0,0 +1,546 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + + +namespace Project +{ + + public class CResult + { + public enum eInspectResult + { + NG = 0, + OK, + ERROR, + NOTSET = 9, + } + + public UInt64 OptionValue = 0; + public UInt64 OptionValueData = 0; + + public List BCDPattern; + public List BCDIgnorePattern; + + public object BCDPatternLock = new object(); + + public DateTime ResetButtonDownTime = DateTime.Now; + public Boolean ClearAllSID = false; + public Class.CHistorySIDRef SIDReference; //SIDLIST받은 내역 + public List OUTHistory; //출고포트 처리내역 + public DataSet1.SIDHistoryDataTable SIDHistory; //sID별 rid 전체 목록 차수별로만 저장된다 + + public DataSet1.K4EE_Component_Reel_SID_ConvertDataTable DTSidConvert; + public List DTSidConvertEmptyList; + public List DTSidConvertMultiList; + + public DSList dsList; + + public ModelInfoM mModel; //모션 모델 + public ModelInfoV vModel; //작업 모델 + + /// + /// 아이템의 정보가 담겨있다 (0:왼쪽,1:비젼,2:오른쪽) + /// + public Class.JobData ItemDataL = new Class.JobData(0); + public Class.JobData ItemDataC = new Class.JobData(1); + public Class.JobData ItemDataR = new Class.JobData(2); + + public Guid guid = new Guid(); + + public string JobType2 = string.Empty; + public Boolean JobFirst + { + get + { + return VAR.I32[(int)eVarInt32.PickOnCount] == 0; + } + } + + public Boolean DryRun + { + get + { + if (string.IsNullOrEmpty(JobType2)) return false; + else return JobType2.ToUpper() == "DRY"; + } + } + + public int OverLoadCountF { get; set; } + public int OverLoadCountR { get; set; } + + public UIControl.CItem UnloaderItem = null; + public DateTime LastExtInputTime = DateTime.Parse("1982-11-23"); + public DateTime LastOutTime = DateTime.Parse("1982-11-23"); + + public Single[] PortAlignWaitSec = new float[] { 0, 0, 0, 0 }; + public long[] PortAlignTime = new long[] { 0, 0, 0, 0 }; + + public byte UnloaderSeq = 0; + public DateTime UnloaderSeqTime; + public DateTime UnloaderSendtime = DateTime.Parse("1982-11-23"); + + /// + /// 로딩에 사용하는 포트번호 (자동 판단됨) + /// + public int LoadPortIndex = -1; + + /// + /// 로딩시에 사용한 포트의 번호(이 값으로 수량기록 위치를 결정) + /// + public int LoadPickIndex = -1; + + /// + /// 최종 할당된 언로딩 포트번호(1~8) + /// + public int UnloadPortNo = -1; + public byte LiveViewseq = 0; + public string AcceptBcd = string.Empty; + public DateTime AcceptBcdTime = DateTime.Now; + public string AcceptSid = string.Empty; + + //작업정보 + public eInspectResult Result; //작업결과가 저장됨 + public eResult ResultCode; + public eECode ResultErrorCode; + public string ResultMessage; + + public string LastSIDFrom = string.Empty;//101 = string.Empty; + public string LastSIDTo = string.Empty; // 103 = string.Empty; + //public string LastSID103_2 = string.Empty; + public string LastVName = string.Empty; + public int LastSIDCnt = 0; + + public Dictionary PrintPostionList = null; + + //작업정보(시간) + public DateTime JobStartTime = DateTime.Parse("1982-11-23"); + public DateTime JobEndTime = DateTime.Parse("1982-11-23"); + public TimeSpan JobRunTime() + { + if (JobStartTime.Year == 1982) return new TimeSpan(0); + if (JobEndTime.Year == 1982) return DateTime.Now - JobStartTime; + else return JobEndTime - JobStartTime; + } + + /// + /// RUN -> Pause(Wait Start)모드 전환시 저장할 모터의 위치값 + /// 조그모드등으로 좌표를 옴길때의 기준 좌표 + /// 이 좌표값에서 현재 모션값에 변화가 있으면 프로그램에서는 오류로 처리하게 됨 + /// + public double[] PreventMotionPosition = new double[8]; + + #region "SetResultMessage" + + public void SetResultMessage(eResult code, eECode err, eNextStep systempause, params object[] args) + { + + var rltMsg = PUB.GetResultCodeMessage(code); + var codeMSg = $"[E{(int)err}] ";// + Util.GetResultCodeMessage(code); + if (err == eECode.MESSAGE_ERROR) + { + codeMSg = $"[{rltMsg} ERROR MESSAGE]\n"; + } + else if (err == eECode.MESSAGE_INFO) + { + codeMSg = $"[{rltMsg} INFORMATION]\n"; + } + + + + var erMsg = PUB.GetErrorMessage(err, args); + var msg = codeMSg + erMsg; + + this.ResultCode = code; + this.ResultErrorCode = err; + this.ResultMessage = msg; + + if (systempause == eNextStep.PAUSENOMESAGE) this.ResultMessage = string.Empty; //210129 + + PUB.log.AddE(msg); + if (systempause == eNextStep.PAUSE) PUB.sm.SetNewStep(eSMStep.PAUSE); + else if (systempause == eNextStep.PAUSENOMESAGE) PUB.sm.SetNewStep(eSMStep.PAUSE); + else if (systempause == eNextStep.ERROR) PUB.sm.SetNewStep(eSMStep.ERROR); + } + + + public void SetResultTimeOutMessage(eDOName pinName, Boolean checkState, eNextStep systemPause) + { + var pindef = DIO.Pin[pinName]; + if (checkState) SetResultMessage(eResult.SENSOR, eECode.DOON, systemPause, pindef.terminalno, pindef.name); + else SetResultMessage(eResult.SENSOR, eECode.DOOFF, systemPause, pindef.terminalno, pindef.name); + } + public void SetResultTimeOutMessage(eDIName pinName, Boolean checkState, eNextStep systemPause) + { + var pindef = DIO.Pin[pinName]; + if (checkState) SetResultMessage(eResult.SENSOR, eECode.DION, systemPause, pindef.terminalno, pindef.name); + else SetResultMessage(eResult.SENSOR, eECode.DIOFF, systemPause, pindef.terminalno, pindef.name); + } + public void SetResultTimeOutMessage(eAxis motAxis, eECode ecode, eNextStep systemPause, string source, double targetpos, string message) + { + SetResultMessage(eResult.TIMEOUT, ecode, systemPause, motAxis, source, targetpos, message); + } + public void SetResultTimeOutMessage(eECode ecode, eNextStep systemPause, params object[] args) + { + SetResultMessage(eResult.TIMEOUT, ecode, systemPause, args); + } + #endregion + + public DateTime[] diCheckTime = new DateTime[256]; + public DateTime[] doCheckTime = new DateTime[256]; + + public Boolean isError { get; set; } + public int retry = 0; + public DateTime retryTime; + public DateTime[] WaitForVar = new DateTime[255]; + public int ABCount = 0; + public bool AutoReelOut = false; + + public CResult() + { + mModel = new ModelInfoM(); + vModel = new ModelInfoV(); + + SIDReference = new Class.CHistorySIDRef(); + SIDHistory = new DataSet1.SIDHistoryDataTable(); + BCDPattern = new List(); + OUTHistory = new List(); + + this.Clear("Result ctor"); + dsList = new DSList(); + LoadListDB(); + + //230509 + if(DTSidConvert != null) DTSidConvert.Dispose(); + DTSidConvert = new DataSet1.K4EE_Component_Reel_SID_ConvertDataTable(); + DTSidConvertEmptyList = new List(); + DTSidConvertMultiList = new List(); + } + + public void SaveListDB() + { + var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml"); + var fi = new System.IO.FileInfo(finame); + if (fi.Directory.Exists == false) fi.Directory.Create(); + this.dsList.WriteXml(fi.FullName); + PUB.log.Add("Pre-list DB saved " + fi.FullName); + } + + public void LoadListDB() + { + var finame = System.IO.Path.Combine(UTIL.CurrentPath, "Data", "SavaedList.xml"); + var fi = new System.IO.FileInfo(finame); + if (fi.Directory.Exists == false) fi.Directory.Create(); + if (fi.Exists) + { + this.dsList.ReadXml(fi.FullName); + PUB.log.Add("Pre-list DB loaded " + fi.FullName); + } + } + + ///// + ///// 입력한 sid 가 원본에 존재하지 않으면 -1을 존재하면 입력된 수량을 반환합니다 + ///// + ///// + ///// + //public int ExistSIDReferenceCheck(string sid) + //{ + // var dr = PUB.Result.SIDReference.Items.Where(t => t.sid.EndsWith(sid)).FirstOrDefault(); + // if (dr == null) return -1; + // else return dr.kpc; + //} + + + //public void ClearHistory() + //{ + + // //this.JObHistory.Clear(); + // this.SIDReference.Clear(); + // PUB.log.AddI("Clear History"); + //} + + + public void ClearOutPort() + { + OUTHistory.Clear(); + } + + public void Clear(string Reason) + { + + this.guid = Guid.NewGuid(); + + //프린트위치를 별도로 저장하고 있는다(나중에 추가 활용한다) 231005 + if (PrintPostionList == null) + PrintPostionList = new Dictionary(); + else + PrintPostionList.Clear(); + PUB.log.Add("Print Positoin Clear"); + + ItemDataL.Clear(Reason); + ItemDataC.Clear(Reason); + ItemDataR.Clear(Reason); + + OverLoadCountF = 0; + OverLoadCountR = 0; + ClearOutPort(); + + LoadPortIndex = -1; + + if (PUB.sm != null) + PUB.sm.seq.ClearTime(); + + isError = false; + ABCount = 0; + ///기다림용 변수모듬 + for (int i = 0; i < WaitForVar.Length; i++) + WaitForVar[i] = DateTime.Parse("1982-11-23"); + + //조그모드시 모션이동 감지용 저장 변수 + for (int i = 0; i < 6; i++) + PreventMotionPosition[i] = 0.0; + + //JobStartTime = DateTime.Parse("1982-11-23"); + //JobEndTime = DateTime.Parse("1982-11-23"); + //LastOutTime = DateTime.Parse("1982-11-23"); + + Result = eInspectResult.NOTSET; + ResultCode = eResult.NOERROR; + ResultMessage = string.Empty; + + //시간정보값을 초기화함 + for (int i = 0; i < 2; i++) + ClearTime(i); + + + + PUB.log.Add("Result data initialized"); + } + + + public void ClearTime(int shutIdx) + { + //JobStartTime = DateTime.Parse("1982-11-23"); + //JobEndTime = DateTime.Parse("1982-11-23"); + + Result = eInspectResult.NOTSET; + ResultCode = eResult.NOERROR; + ResultMessage = string.Empty; + + PUB.log.Add("Result(Clear Time)"); + } + + public Boolean isSetmModel + { + get + { + if (PUB.Result.mModel == null || PUB.Result.mModel.idx == -1 || PUB.Result.mModel.Title.isEmpty()) + return false; + else return true; + } + + } + public Boolean isSetvModel + { + get + { + if (PUB.Result.vModel == null || PUB.Result.vModel.idx == -1 || PUB.Result.vModel.Title.isEmpty()) + return false; + else return true; + } + + } + //public string getErrorMessage(eResult rlt, eECode err, params object[] args) + //{ + // switch (err) + // { + // case eECode.RIDDUPL: + // return string.Format( + // "좌측 언로더에 사용되었던 REEL ID 입니다\n" + + // "바코드 오류 가능성이 있습니다\n" + + // "좌측 릴의 바코드를 확인하시기 바랍니다\n" + + // "작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args); + + // case eECode.RIDDUPR: + // return string.Format( + // "우측 언로더에 사용되었던 REEL ID 입니다\n" + + // "바코드 오류 가능성이 있습니다\n" + + // "우측 릴의 바코드를 확인하시기 바랍니다\n" + + // "작업을 계속할 수 없습니다. 취소 후 다시 시도하세요\n{0}", args); + + // case eECode.BARCODEVALIDERR: + // return string.Format("바코드 데이터 검증 실패\n" + + // "인쇄전 데이터와 인쇄후 데이터가 일치하지 않습니다\n" + + // "ID(O) : {1}\n" + + // "ID(N) : {2}\n" + + // "SID : {5}->{6}\n" + + // "QTY : {3}->{4}\n" + + // "DATE : {7}->{8}\n" + + // "Index : {0}", args); + + // case eECode.MOTX_SAFETY: + // return string.Format("PICKER-X 축이 안전위치에 없습니다\n1. 조그를 이용하여 중앙으로 이동 합니다\n2.홈 작업을 다시 실행합니다", args); + // case eECode.NOERROR: + // return string.Format("오류가 없습니다", args); + + // case eECode.PORTOVERLOAD: + // return string.Format("PORT OVERLOAD\n위치 : {0}\n" + + // "너무 많은 양이 적재 되었습니다\n" + "상단 LIMIT 센서에 걸리지 않게 적재하세요", args); + // case eECode.EMERGENCY: + // return string.Format("비상정지 버튼을 확인하세요\n" + + // "버튼 : F{0}\n" + + // "메인전원이 OFF 된 경우에도 이 메세지가 표시 됩니다\n" + + // "메인전원은 모니터 하단 AIR버튼 좌측에 있습니다" + // , DIO.GetIOInput(eDIName.BUT_EMGF)); + // case eECode.NOMODELM: + // return "모션모델이 선택되지 않았습니다\n" + + // "상단 메뉴 [모션모델]에서 사용할 모델을 선택하세요"; + // case eECode.NOMODELV: + // return "작업모델이 선택되지 않았습니다\n" + + // "상단 메뉴 [작업모델]에서 사용할 모델을 선택하세요"; + + // case eECode.CARTERROR: + // return string.Format("언로더 카트가 없거나 크기 정보가 일치하지 않습니다\n좌측:{0}, 로더:{1}, 우측:{2}", args); + // case eECode.CARTL: + // return string.Format("왼쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args); + // case eECode.CARTC: + // return string.Format("중앙(LOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args); + // case eECode.CARTR: + // return string.Format("오른쪽(UNLOAD) 포트에 카트가 감지되지 않습니다\n카트를 장착하세요\n카트크기 : {0}, 릴크기:{1}", args); + + // case eECode.CARTLMATCH: + // return string.Format("왼쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args); + // case eECode.CARTCMATCH: + // return string.Format("중앙(LOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args); + // case eECode.CARTRMATCH: + // return string.Format("오른쪽(UNLOAD) 카트와 피커의 릴 크기가 일치하지 않습니다\n카트크기를 확인 하세요\n카트크기 : {0}, 릴크기:{1}", args); + + + // case eECode.NOREELSIZE: + // return string.Format("왼쪽포트에 놓을 릴의 크기정보가 없습니다\n프로그램 오류입니다\n개발자에게 해당 메세지를 전달하세요\n" + + // "장치 초기화를 진행 한 후 다시 시도하세요"); + + // case eECode.VISION_NOCONN: + // return string.Format("카메라({0}) 연결 안됨", args); + + // case eECode.INCOMPLETE_LOADERDATA: + // return string.Format("로더 바코드 필수값을 읽지 못했습니다", args); + // case eECode.CAM_NOBARCODEU: + // return string.Format("언로더({0}) 바코드를 읽지 못했습니다", args); + // case eECode.HOME_TIMEOUT: + // return string.Format("홈 진행이 완료되지 않고 있습니다\n" + + // "오류가 발생했다면 '홈' 작업을 다시 진행하세요\n" + + // "대기시간 : {0}초", args); + + + // case eECode.DOORSAFTY: + // return string.Format("포트 안전센서가 감지 되었습니다\n" + + // "안전센서를 확인한 후 다시 시도하세요\n", args); + + // case eECode.AIRNOOUT: + // return "AIR 공급이 차단 되어 있습니다.\n" + + // "전면의 AIR 버튼을 누르세요\n" + + // "공급이 되지 않으면 메인 전원 을 확인하세요\n" + + // "메인 전원은 AIR 버튼 좌측에 있습니다" + + // "메인 전원 공급 실패시 장비 후면의 차단기를 확인하세요"; + + + // case eECode.DOOFF: + // var pinoOf = (eDOName)args[0]; + // return string.Format("출력이 OFF 되지 않았습니다.\n" + + // "포트설명 : {0}\n" + + // "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOf), (int)pinoOf, Enum.GetName(typeof(eDOPin), pinoOf)); + // case eECode.DOON: + // var pinoOn = (eDOName)args[0]; + // return string.Format("출력이 ON 되지 않았습니다.\n" + + // "포트설명 : {0}\n" + + // "포트번호 : {1} ({2})", DIO.getPinDescription(pinoOn), (int)pinoOn, Enum.GetName(typeof(eDOPin), pinoOn)); + // case eECode.DIOFF: + // var piniOf = (eDIName)args[0]; + // return string.Format("입력이 OFF 되지 않았습니다.\n" + + // "포트설명 : {0}\n" + + // "포트번호 : {1} ({2})", DIO.getPinDescription(piniOf), (int)piniOf, Enum.GetName(typeof(eDIPin), piniOf)); + // case eECode.DION: + // var piniOn = (eDIName)args[0]; + // return string.Format("입력이 ON 되지 않았습니다.\n" + + // "포트설명 : {0}\n" + + // "포트번호 : {1} ({2})", DIO.getPinDescription(piniOn), (int)piniOn, Enum.GetName(typeof(eDIPin), piniOn)); + + // case eECode.AZJINIT: + // return string.Format("DIO 혹은 모션카드가 초기화 되지 않았습니다.\n" + + // "DIO : {0}\n" + + // "MOTION : {1}\n" + + // "해당 카드는 본체 내부 PCI 슬롯에 장착 된 장비 입니다\n" + + // "EzConfig AXT 프로그램으로 카드 상태를 확인하세요", + // PUB.dio.IsInit, PUB.mot.IsInit); + + // case eECode.MOT_HSET: + // var msg = "모션의 HOME 검색이 완료되지 않았습니다"; + // for (int i = 0; i < 6; i++) + // { + // if (PUB.mot.IsUse(i) == false) continue; + // var axis = (eAxis)i; + // var stat = PUB.mot.IsHomeSet(i); + // if (stat == false) msg += string.Format("\n[{0}] {1} : {2}", i, axis, stat); + // } + // msg += "\n장치 초기화를 실행하세요"; + // return msg; + // case eECode.MOT_SVOFF: + // var msgsv = "모션 중 SERVO-OFF 된 축이 있습니다"; + // for (int i = 0; i < 6; i++) + // { + // if (PUB.mot.IsUse(i) == false) continue; + // var axis = (eAxis)i; + // var stat = PUB.mot.IsServOn(i); + // if (stat == false) msgsv += string.Format("\n[{0}] {1} : {2}", i, axis, stat); + // } + // msgsv += "\nRESET을 누른 후 '모션설정' 화면에서 확인합니다"; + // return msgsv; + // case eECode.MOT_HSEARCH: + // return string.Format("모션의 홈 검색이 실패되었습니다\n" + + // "축 : {0}\n" + + // "메세지 : {1}", args); + + // case eECode.MOT_CMD: + // var axisNo = (int)((eAxis)args[0]); + // var axisSrc = args[1].ToString(); + // return string.Format("모션축 명령이 실패 되었습니다\n축 : {0}\n" + + // "현재위치 : {2}\n" + + // "명령위치 : {3}\n" + + // "소스 : {1}", axisNo, axisSrc, PUB.mot.GetActPos(axisNo), PUB.mot.GetActPos(axisNo)); + + + + // //case eECode.timeout_step: + // // return string.Format("스텝당 최대 실행 시간이 초과 되었습니다.\n" + + // // "스텝 : {0}\n" + + // // "최대동작시간 : " + COMM.SETTING.Data.Timeout_StepMaxTime.ToString(), args); + + + // case eECode.USER_STOP: + // return "'일시정지' 버튼 눌림\n" + + // "사용자에 의해 작동이 중지 되었습니다\n" + + // "'RESET' -> 'START'로 작업을 계속할 수 있습니다"; + + // case eECode.CAM_RIGHT: + // return "우측카메라가 사용가능한 상태가 아닙니다.\n" + + // "신규 실행시에는 초기화 완료까지 기다려 주세요"; + // case eECode.CAM_LEFT: + // return "좌측카메라가 사용가능한 상태가 아닙니다.\n" + + // "신규 실행시에는 초기화 완료까지 기다려 주세요"; + // default: + // return err.ToString(); + // } + + //} + //public string getResultCodeMessage(eResult rltCode) + //{ + // //별도 메세지처리없이 그대로 노출한다 + // return rltCode.ToString().ToUpper(); + //} + + } + +} diff --git a/Handler/Project/Class/Command.cs b/Handler/Project/Class/Command.cs new file mode 100644 index 0000000..e7333af --- /dev/null +++ b/Handler/Project/Class/Command.cs @@ -0,0 +1,459 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AR; +namespace Project.Commands +{ + public class CommandBuffer + { + public int Idx { get; set; } + + private int REGISTER_VALUE = 0; + private Boolean REGISTER_TRUE = false; + private Boolean REGISTER_FALSE = false; + private Boolean REGISTER_EQUAL = false; + private Boolean REGISTER_ABOVE = false; + private Boolean REGISTER_BELOW = false; + + + /// + /// 순차실행명령 + /// + public List Commands; + + /// + /// 상시실행명령 + /// + public List SPS; + public CommandBuffer() + { + Commands = new List(); + SPS = new List(); + } + public void AddSeq(Command cmd) + { + cmd.Idx = this.Commands.Count; + this.Commands.Add(cmd); + } + public void AddSPS(Command cmd) + { + cmd.Idx = this.SPS.Count; + this.SPS.Add(cmd); + } + public void Clear() + { + Commands.Clear(); + SPS.Clear(); + Idx = 0; + } + public StepResult Run() + { + //sps는 모두 실행한다 + StepResult rlt; + foreach (var sps in this.SPS) + { + rlt = RunCode(sps); + if (rlt == StepResult.Wait) return StepResult.Wait; //SPS에서 대기 코드가 있다 + else if (rlt == StepResult.Error) return StepResult.Error; + } + + //sequece 는 현재 것만 실행한다. + if (Idx < 0) Idx = 0; + var cmd = this.Commands[Idx]; + rlt = RunCode(cmd); + if (rlt == StepResult.Complete) //이 명령이 완료되면 다음으로 진행한다 + { + Idx += 1; + if (Idx >= this.Commands.Count) return StepResult.Complete; + else return StepResult.Wait; + } + return rlt; + } + + private StepResult RunCode(Command cmd) + { + switch (cmd.type) + { + case CType.NOP: return StepResult.Complete; + case CType.Wait: + var data0 = cmd.Data as CDWait; + if (data0.Trigger == false) + { + //아직 시작을 안했으니 시작시키고 대기한다 + data0.SetTrigger(true); + return StepResult.Wait; + } + else + { + //아직 시간을 다 쓰지 않았다면 넘어간다 + if (data0.TimeOver == false) return StepResult.Wait; + } + break; + case CType.Output: + var data1 = cmd.Data as CDOutput; + if (data1.PinIndex < 0) return StepResult.Error; + if (DIO.SetOutput((eDOName)data1.Pin, data1.Value) == false) return StepResult.Error; + break; + case CType.Move: + var data2 = cmd.Data as CDMove; + MOT.Move((eAxis)data2.Axis, data2.Position, data2.Speed, data2.Acc, data2.Relative); + break; + case CType.MoveForece: + var data3 = cmd.Data as CDMove; + MOT.Move((eAxis)data3.Axis, data3.Position, data3.Speed, data3.Acc, data3.Relative, false, false); + break; + case CType.MoveWait: + var data4 = cmd.Data as CDMove; + var axis = (eAxis)data4.Axis; + var mrlt = MOT.CheckMotionPos(axis, new TimeSpan(1), data4.Position, data4.Speed, data4.Acc, data4.Dcc, cmd.description); + if (mrlt == false) return StepResult.Wait; + break; + case CType.GetFlag: + var data5 = cmd.Data as CDFlag; + data5.Value = PUB.flag.get(data5.Flag); + REGISTER_FALSE = data5.Value == false; + REGISTER_TRUE = data5.Value == true; + break; + case CType.SetFlag: + var data6 = cmd.Data as CDFlag; + PUB.flag.set(data6.Flag, data6.Value, cmd.description); + break; + case CType.True: + var data7 = cmd.Data as CDCommand; + if (REGISTER_TRUE) return RunCode(data7.Command); + break; + case CType.False: + var data8 = cmd.Data as CDCommand; + if (REGISTER_FALSE) return RunCode(data8.Command); + break; + case CType.GetVar: //공용변수의값 + var data10 = cmd.Data as CDGetVar; + if (data10.Key == "STEPTIME") + { + data10.Confirm = true; + data10.Value = (int)PUB.sm.StepRunTime.TotalMilliseconds; + } + + + break; + case CType.GetSetVar: //공용변수(설정)의 값 + var data11 = cmd.Data as CDGetVar; + if (data11.Key == "TIMEOUT_HOMEFULL") + { + data11.Confirm = true; + data11.Value = 60;// (int)Pub.sm.StepRunTime.TotalMilliseconds; + } + break; + + case CType.Compare: + + var data9 = cmd.Data as CDCompare; + if (data9 != null) + { + RunCode(data9.Source); //비교값(좌) + RunCode(data9.Target); //비교값(우) + + var valS = data9.Source.Data as ICommandValue; + var valT = data9.Target.Data as ICommandValue; + int ValueS = (int)valS.Value; + int ValueT = (int)valT.Value; + + REGISTER_ABOVE = ValueS > ValueT; + REGISTER_BELOW = ValueS < ValueT; + REGISTER_EQUAL = ValueS == ValueT; + REGISTER_TRUE = ValueS == ValueT; + REGISTER_FALSE = ValueS != ValueT; + REGISTER_VALUE = ValueS - ValueT; + } + else return StepResult.Error; + + + break; + + case CType.SetError: + var data12 = cmd.Data as CDError; + PUB.Result.SetResultMessage(data12.ResultCode, data12.ErrorCode, data12.NextStep); + break; + } + + return StepResult.Complete; + } + } + public enum CType + { + NOP = 0, + /// + /// motion move + /// + Move, + MoveForece, + + /// + /// move and wait + /// + MoveWait, + + /// + /// set digital output + /// + Output, + Log, + StepChange, + /// + /// check digital input + /// + InputCheck, + + /// + /// check digital output + /// + OutputCheck, + + GetFlag, + SetFlag, + + Equal, + NotEqual, + True, + False, + Zero, + NonZero, + SetError, + Compare, + SetVar, + GetVar, + GetSetVar, + Above, + Below, + + Wait, + Run, + + } + public class Command + { + + public CType type { get; set; } = CType.NOP; + public int Idx { get; set; } + public string description { get; set; } + public ICommandData Data { get; set; } + public Command(CType type, string desc = "") + { + this.type = type; + this.description = desc; + } + } + public interface ICommandData + { + // string Description { get; set; } + } + public interface ICommandValue + { + object Value { get; set; } + } + public class CDGetVar : ICommandData, ICommandValue + { + public string Key { get; set; } + public object Value { get; set; } + public Boolean Confirm { get; set; } + public CDGetVar(string key) + { + this.Key = key; + } + } + public class CDGetSetVar : ICommandData, ICommandValue + { + public string Key { get; set; } + public object Value { get; set; } + public Boolean Confirm { get; set; } + public CDGetSetVar(string key) + { + this.Key = key; + } + } + public class CDSetVar : ICommandData + { + public string Key { get; set; } + public int Value { get; set; } + public CDSetVar(string key, int value) + { + this.Key = key; + this.Value = Value; + } + } + public class CDFlag : ICommandData + { + public eVarBool Flag { get; set; } + public Boolean Value { get; set; } + public CDFlag(eVarBool flag) + { + this.Flag = flag; + Value = false; + } + } + + public class CDSetValI : ICommandData + { + public int Value { get; set; } + public CDSetValI(int idx, int value) + { + this.Value = value; + } + } + public class CDSetValB : ICommandData + { + public bool Value { get; set; } + public CDSetValB(int idx, bool value) + { + this.Value = value; + } + } + public class CDCommand : ICommandData + { + public Command Command { get; set; } + public CDCommand(Command command) + { + this.Command = command; + } + } + public class CDError : ICommandData + { + public eResult ResultCode { get; set; } + public eECode ErrorCode { get; set; } + public eNextStep NextStep { get; set; } + + public CDError(eResult resultCode, eECode errorCode, eNextStep nextStep) + { + ResultCode = resultCode; + ErrorCode = errorCode; + NextStep = nextStep; + } + } + //public class CDCompare : ICommandData + //{ + // public T Value { get; set; } + // public CDCompare(T value) + // { + // Value = value; + // } + // public CDCompare(Command source, Command target) + // { + // Value = value; + // } + //} + public class CDCompare : ICommandData + { + public Command Source { get; set; } + public Command Target { get; set; } + public CDCompare(Command source, Command target) + { + Source = source; + Target = target; + } + } + + public class CDWait : ICommandData + { + public int WaitMS { get; set; } + public DateTime StartTime { get; set; } + public Boolean Trigger { get; set; } + private TimeSpan GetTime { get { return DateTime.Now - StartTime; } } + public Boolean TimeOver { get { return GetTime.TotalMilliseconds > WaitMS; } } + public void SetTrigger(Boolean value) + { + Trigger = value; + StartTime = DateTime.Now; + } + + public CDWait() : this(100) { } + public CDWait(int ms) + { + this.WaitMS = ms; + } + } + public class CDMove : ICommandData + { + + public int Axis { get; set; } + public double Position { get; set; } + public double Speed { get; set; } + public double Acc { get; set; } + public double Dcc { get; set; } + public Boolean Relative { get; set; } + // public string Description { get; set; } + public CDMove(eAxis axis, double pos, double speed) : this((int)axis, pos, speed, 0) { } + public CDMove(int axis, double pos, double speed, double acc, double dcc = 0, Boolean relatvie = false) + { + Axis = axis; + Position = pos; + Speed = speed; + Acc = acc; + Dcc = dcc == 0 ? acc : dcc; + Relative = relatvie; + + } + } + public class CDOutput : ICommandData + { + + public eDOName Pin { get; set; } + public int PinIndex { get; set; } + public Boolean Value { get; set; } + // public string Description { get; set; } + //public CDOutput(eDOName pin) : this(pin, false) { } + public CDOutput(eDOName pin, Boolean value) + { + Pin = pin; + PinIndex = (int)pin; + Value = value; + } + public CDOutput(int point, Boolean value) + { + Pin = (eDOName)point; + PinIndex = point; + Value = value; + } + } + + public class CDRun : ICommandData + { + public Action Target { get; set; } + public CDRun(Action target) + { + Target = target; + } + } + public class CDRunRet : ICommandData + { + public Func Target { get; set; } + public CDRunRet(Func target) + { + Target = target; + } + } + + public class CDLog : ICommandData + { + + public string Message { get; set; } + public Boolean IsError { get; set; } + public CDLog(string message, Boolean err = false) + { + Message = message; + IsError = err; + } + } + public class CDStep : ICommandData + { + + public eSMStep Step { get; set; } + public Boolean Force { get; set; } + public CDStep(eSMStep step, Boolean force = false) + { + Step = step; + Force = force; + } + } +} diff --git a/Handler/Project/Class/EEMStatus.cs b/Handler/Project/Class/EEMStatus.cs new file mode 100644 index 0000000..d2b067b --- /dev/null +++ b/Handler/Project/Class/EEMStatus.cs @@ -0,0 +1,393 @@ +//using Project; +//using Project.Device; +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Management; +//using System.Net; +//using System.Net.NetworkInformation; +//using System.Text; +//using System.Threading.Tasks; +//using AR; + +///// +///// ============================================================================ +///// 장비기술 상태 모니터링 관련 클래스 +///// 이 클래스는 SQLfiletoDB 프로그램과 같이 사용하는 것을 권장합니다. +///// 현재 실행 중인 프로그램의 하위 폴더 Status 에 입력된 상태값을 SQL 파일로 기록합니다. +///// SQLfiletoDB는 SQL파일을 실제 DB에 기록하는 프로그램입니다. +///// ============================================================================ +///// 작성자 : chi +///// 작성일 : 202-06-15 +///// GIT : (none) +///// +//public static partial class EEMStatus +//{ +// static System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(true); +// static string ip = string.Empty; +// static string mac = string.Empty; +// static DateTime StatusChecktime = DateTime.Now; +// static DateTime MonitorChecktime = DateTime.Now.AddYears(-1); +// static DateTime FileCheckTime = DateTime.Now; +// static string monitorfile = string.Empty; +// /// +// /// UpdateStatusSQL 명령이 동작하는 간격이며 기본 180초(=3분)로 되어 있습니다. +// /// +// public static int UpdateStatusInterval { get; set; } = 180; +// public static int UpdateFileInterval { get; set; } = 3; +// static bool queryok = false; +// static bool UpdateRun = false; + +// public static string IP +// { +// get +// { +// if (queryok == false) GetNetworkInfo(); +// return ip; +// } +// set { ip = value; } +// } +// public static string MAC +// { +// get +// { +// if (queryok == false) GetNetworkInfo(); +// return mac; +// } +// set +// { +// mac = value; +// } +// } + +// /// +// /// 현재 시스템의 IP/MAC정보를 취득합니다. +// /// +// static void GetNetworkInfo() +// { + +// ip = ""; +// mac = ""; +// // string prgmName = Application.ProductName; + +// var nif = NetworkInterface.GetAllNetworkInterfaces(); +// var host = Dns.GetHostEntry(Dns.GetHostName()); +// string fullname = System.Net.Dns.GetHostEntry("").HostName; +// foreach (IPAddress r in host.AddressList) +// { +// string str = r.ToString(); + +// if (str != "" && str.Substring(0, 3) == "10.") +// { +// ip = str; +// break; +// } +// } + +// string rtn = string.Empty; +// ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'"); +// ManagementObjectSearcher query1 = new ManagementObjectSearcher(oq); +// foreach (ManagementObject mo in query1.Get()) +// { +// string[] address = (string[])mo["IPAddress"]; +// if (address[0] == ip && mo["MACAddress"] != null) +// { +// mac = mo["MACAddress"].ToString(); +// break; +// } +// } +// queryok = true; +// } + +// public static void UpdateStatusSQL(eSMStep status, bool _extrun = false, string remark = "") +// { +// var tsrun = DateTime.Now - StatusChecktime; +// if (tsrun.TotalSeconds >= UpdateStatusInterval) +// { +// AddStatusSQL(status, "UPDATE", extrun: _extrun); +// StatusChecktime = DateTime.Now; +// } + +// //내부실행모드일때에만 파일을 처리한다 +// if (_extrun == false) +// { +// var tsfile = DateTime.Now - FileCheckTime; +// if (tsfile.TotalSeconds >= UpdateFileInterval) +// { +// if (UpdateRun == false) +// { +// UpdateRun = true; +// Task.Run(() => +// { +// UpdateFileToDB(); +// UpdateRun = false; +// }); +// } +// FileCheckTime = DateTime.Now; +// } +// } +// } + +// /// +// /// 상태모니터링 프로그램의 실행파일 명 +// /// +// static string StatusMonitorFile +// { +// get +// { +// if (string.IsNullOrEmpty(monitorfile)) +// monitorfile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status", "SQLFileToDB.exe"); +// return monitorfile; +// } +// } + +// static System.Diagnostics.Process CheckMonitor() +// { +// if (System.IO.File.Exists(StatusMonitorFile) == false) return null; + +// var prcs = System.Diagnostics.Process.GetProcesses(); +// return prcs.Where(t => t.ProcessName.ToLower().StartsWith("sqlfiletodb")).FirstOrDefault(); +// } + +// public static bool RunStatusMonitor() +// { +// //파일이 없으면 실행 불가 +// if (System.IO.File.Exists(StatusMonitorFile) == false) return false; + +// //실행프로세스 검사 +// var prc = CheckMonitor(); +// if (prc == null) +// { +// try +// { +// prc = new System.Diagnostics.Process(); +// prc.StartInfo = new System.Diagnostics.ProcessStartInfo +// { +// Arguments = string.Empty, +// FileName = StatusMonitorFile, +// }; +// prc.Start(); +// } +// catch +// { +// return false; +// } +// } + +// return true; +// } + +// /// +// /// 작업수량을 입력합니다 +// /// +// /// +// /// +// public static string AddStatusCount(int cnt, string remark = "") +// { +// if (remark.isEmpty()) remark = $"Count Set : {cnt}"; +// return AddStatusSQL(PUB.sm.Step, remark, count: cnt); +// } +// /// +// /// 상태메세지를 status 폴더에 기록합니다. +// /// +// /// 상태머신의 상태값 +// /// 비고 +// /// 기록일시 +// /// 오류발생시 오류메세지가 반환 됩니다 +// public static string AddStatusSQL(eSMStep status, string remark = "", DateTime? wdate = null, bool extrun = false, int? count = null) +// { +// if (queryok == false || MAC.isEmpty()) GetNetworkInfo(); +// if (status == eSMStep.CLOSEWAIT || status == eSMStep.CLOSED) return string.Empty; + +// if (extrun) +// { +// //상태모니터링 프로그램을 실행합니다. +// var tsMon = DateTime.Now - MonitorChecktime; +// if (tsMon.TotalMinutes > 5) RunStatusMonitor(); +// } + +// try +// { +// var state = 0; +// string cntstr = "null"; +// if (count != null) cntstr = count.ToString(); +// var alarmid = string.Empty; +// var alarmmsg = string.Empty; +// if (string.IsNullOrEmpty(remark)) remark = $"STS:{status}"; + +// if (status == eSMStep.RUN) state = 1; +// else if (status == eSMStep.ERROR || status == eSMStep.EMERGENCY) +// { +// state = 2; +// alarmid = PUB.Result.ResultErrorCode.ToString(); +// alarmmsg = PUB.Result.ResultMessage; +// } +// else if (status == eSMStep.PAUSE) //일시중지도 오류코드가 포함된다, +// { +// if (PUB.Result.ResultErrorCode == Project.eECode.USER_STEP || +// PUB.Result.ResultErrorCode == Project.eECode.USER_STOP || +// PUB.Result.ResultErrorCode.ToString().StartsWith("MESSAGE")) +// { +// //사용자에의해 멈추는 것은 오류코드를 넣지 않는다. +// } +// else +// { +// alarmid = PUB.Result.ResultErrorCode.ToString(); +// alarmmsg = PUB.Result.ResultMessage; +// } +// } +// else if (status == eSMStep.INIT) state = 3; //시작 +// else if (status == eSMStep.CLOSING) state = 4; //종료 + +// //length check +// if (alarmid.Length > 10) alarmid = alarmid.Substring(0, 10); +// if (remark.Length > 99) remark = remark.Substring(0, 99); +// if (alarmmsg.Length > 250) alarmmsg = alarmmsg.Substring(0, 50); + +// var mcid = AR.SETTING.Data.MCID;// Project.PUB.setting.MCID;//.Data.MCID; +// //var mcid = Project.PUB.setting.MCID;//.Data.MCID; +// var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status"); +// var file = System.IO.Path.Combine(path, $"{DateTime.Now.ToString("HHmmssfff")}_{status}.sql"); +// var sql = "insert into MCMonitor_Rawdata(Model,status,remark,ip,mac,time,alarmid,alarmmsg,count,version) " + +// " values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',{8},'{9}')"; + +// var timestr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); +// if (wdate != null) timestr = ((DateTime)wdate).ToString("yyyy-MM-dd HH:mm:ss"); +// var VersionNumber = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); +// sql = string.Format(sql, mcid, state, remark.Replace("'", "''"), IP, MAC, timestr, alarmid, alarmmsg, cntstr, VersionNumber); +// System.IO.File.WriteAllText(file, sql, System.Text.Encoding.Default); + +// ////만들어진지 3분이 지난 파일은 삭제한다. +// //var di = new System.IO.DirectoryInfo(path); +// //var fi = di.GetFiles("*.sql", System.IO.SearchOption.TopDirectoryOnly).Where(t => t.LastWriteTime < DateTime.Now.AddMinutes(-3)).FirstOrDefault(); +// //if (fi != null) fi.Delete(); +// if (state == 4) UpdateFileToDB(); +// return string.Empty; +// } +// catch (Exception ex) +// { +// return ex.Message; +// } +// } + + + +// static void UpdateFileToDB() +// { +// if (mre.WaitOne(1000) == false) return; +// mre.Reset(); +// var cs = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!"; +// var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Status"); +// var di = new System.IO.DirectoryInfo(path); +// if (di.Exists == false) return; +// var file = di.GetFiles("*.sql", System.IO.SearchOption.TopDirectoryOnly) +// .Where(t => t.LastWriteTime < DateTime.Now.AddSeconds(-3)) +// .OrderByDescending(t => t.LastWriteTime).FirstOrDefault(); + +// if (file == null) +// { +// mre.Set(); +// return; +// } + +// //파일을 찾아야한다 +// // PUB.log.Add($">> {file.FullName}"); + + + +// try +// { +// var sql = System.IO.File.ReadAllText(file.FullName, System.Text.Encoding.Default); +// if (string.IsNullOrEmpty(sql)) +// { +// //비어잇다면 +// var errpath = System.IO.Path.Combine(di.FullName, "Error"); +// var errfile = System.IO.Path.Combine(errpath, file.Name); +// if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath); +// System.IO.File.Move(file.FullName, errfile);// file.MoveTo(errfile); +// // ecnt += 1; +// } +// else +// { +// // var csstr = PUB.setting.ConnectionString; +// // if (string.IsNullOrEmpty(csstr)) csstr = "Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!"; +// var cn = new System.Data.SqlClient.SqlConnection(cs); +// var cmd = new System.Data.SqlClient.SqlCommand(sql, cn); +// cn.Open(); +// var cnt = cmd.ExecuteNonQuery(); +// //if (cnt == 0) PUB.log.Add($"Result Empty : {sql}"); +// cn.Close(); +// cnt += 1; + +// var errpath = System.IO.Path.Combine(di.FullName, "Complete"); +// var errfile = System.IO.Path.Combine(errpath, file.Name); +// if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath); +// //file.MoveTo(errfile); +// System.IO.File.Move(file.FullName, errfile); +// } + +// } +// catch (Exception ex) +// { +// if(ex.Message.Contains("deadlocked") == false) +// { +// var errpath = System.IO.Path.Combine(di.FullName, "Error"); +// var errfile = System.IO.Path.Combine(errpath, file.Name); +// if (System.IO.Directory.Exists(errpath) == false) System.IO.Directory.CreateDirectory(errpath); +// try +// { +// //file.MoveTo(errfile); +// System.IO.File.Move(file.FullName, errfile); + +// //오류내용도 저장한다.. +// var errfilename = errfile + "_error.txt"; +// System.IO.File.WriteAllText(errfilename, ex.Message, System.Text.Encoding.Default); +// } +// catch (Exception ex2) +// { + +// } +// } +// else +// { +// Console.WriteLine("(UpdateFileToDB) Dead lock error ignored"); +// } + +// //ecnt += 1; +// } + +// //try +// //{ +// // //생성된지 10일이 넘은 자료는 삭제한다. +// // //시간소비를 피해서 1개의 파일만 작업한다 +// // //var sqlfiles = di.GetFiles("*.sql", System.IO.SearchOption.AllDirectories); +// // //총3번의 데이터를 처리한다 +// // //var files = sqlfiles.Where(t => t.LastWriteTime < DateTime.Now.AddDays(-10)).Select(t => t.FullName); +// // //int i = 0; +// // //var dellist = files.TakeWhile(t => i++ < 3); +// // //foreach (var delfile in dellist) +// // //System.IO.File.Delete(delfile); +// //} +// //catch +// //{ + +// //} +// mre.Set(); +// } +//} + + +///* +//================================================= +//변경내역 +//================================================= +//230619 chi UpdateFileToDB 에서 폴더가 없다면 return 하도록 함 +//230615 chi UpdateFiletoDB의 ManualResetEvent적용 +// Version 항목 추가 +//230612 chi 프로그램 시작/종료 alarmid항목 추가 +// 완료된 파일 10일간 보존하도록 함 +//230522 chi extrun 모드 추가(agv용 - SQL파일을 외부 프로그램에서 처리하도록 함) +//230617 chi 파일쓰기함수를 Task 로 처리 +// 3분지난데이터 삭제기능 제거 +//230516 chi initial commit +//*/ diff --git a/Handler/Project/Class/EnumData.cs b/Handler/Project/Class/EnumData.cs new file mode 100644 index 0000000..4fa7501 --- /dev/null +++ b/Handler/Project/Class/EnumData.cs @@ -0,0 +1,689 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace Project +{ + + public enum StepResult + { + Wait = 0, + Complete, + Error, + } + + public enum eWorkPort + { + Left = 0, + Right + } + + public enum eNormalResult + { + True = 0, + False, + Error, + } + + + + + public enum eSMStep : byte + { + NOTSET = 0, + INIT = 1, + IDLE = 10, + + RUN = 50, + RUN_ROOT_SEQUENCE_L, + RUN_ROOT_SEQUENCE_R, + RUN_KEYENCE_READ_L, + RUN_KEYENCE_READ_R, + RUN_PICKER_ON_L, + RUN_PICKER_ON_R, + RUN_PICKER_OFF_L, + RUN_PICKER_OFF_R, + RUN_PRINTER_F, + RUN_PRINTER_R, + RUN_PRINTER_ON_F, + RUN_PRINTER_ON_R, + RUN_PRINTER_OFF_F, + RUN_PRINTER_OFF_R, + RUN_QRVALID_F, + RUN_QRVALID_R, + + RUN_COM_PT0, + RUN_COM_PT1, + RUN_COM_PT2, + + RUN_PICK_RETRY, + + //이후에 사용자 런 코드용 스텝을 추가한다. + EMERGENCY = 200, + HOME_FULL = 201, + HOME_DELAY, + HOME_CONFIRM, + HOME_QUICK, + + CLOSING = 250, + CLOSEWAIT = 251, + CLOSED = 252, + + //사용자영역 + FINISH = 100, + PAUSE, + WAITSTART, + ERROR, + SAFTY, + CLEAR, + } + + + public enum eWaitMessage + { + PX = 0, + PZ, + LMOVE, + LUPDN, + RMOVE, + RUPDN, + LPRINT, + RPRINT, + VIS0, + VIS1, + VIS2, + } + //public enum eJobResult + //{ + // None = 0, + // Error, + // ErrorOut, + // MaxCount, + // NotExistSID, + // DisableUnloader, + // MatchFail, + // NoBarcode + //} + public enum eCartSize + { + None = 0, + Inch7 = 7, + Inch13 = 13 + } + + public enum ePrintPutPos + { + None = 0, + Top, + Middle, + Bottom, + } + + public enum ePrintVac + { + inhalation = 0, + exhaust, + off, + } + + + + + + public enum eJobType : byte + { + Sorter = 0, + Dryrun, + } + + public enum eHeaderHandler + { + Ping = 0, + RequestData, + RequstSeqNo, + RequstInputReel, + JobEnd, + JobDelete, + } + public struct sVisionDMResult + { + public Boolean iSystemErr { get; set; } + public Boolean isError { get; set; } + public string DM { get; set; } + public System.Drawing.Rectangle ROS { get; set; } + + public System.Drawing.PointF DMCenter { get; set; } + public List DMCorner { get; set; } + public string DMMessage { get; set; } + } + public struct sObjectDetectResult + { + public string Message { get; set; } + public List Rect { get; set; } + public List Areas { get; set; } + public Boolean OK + { + get + { + if (Areas == null || Areas.Count < 1) return false; + else return true; + } + } + } + + + + public enum eGridValue + { + /// + /// 아직 처리 전(기본 초기화된 상태) + /// + NotSet = 0, + + /// + /// 원점검사에서 오류 발생 + /// + OrientError, + + /// + /// 아이템검출에서 실패됨 + /// + NoItem, + + /// + /// 아이템검출성공, 데이터매트릭스 검출 실패 + /// + NewItem, + + /// + /// 데이터매트릭스 읽기 실패 + /// + DMReadError, + + /// + /// 데이터매트릭스 관리 횟수가 기준횟수(10) 미만 (아직 정상) + /// + DMNotmalCount, + + /// + /// 데이터매트릭스 관리 횟수가 기준횟수(10)를 초과한 경우 + /// + DMOverCount, + + + + } + + public enum eRoiSeq + { + Area = 0, + DataMatrix, + Orient, + DetectUnit, + DetectDM + } + public enum eWaitType : byte + { + TryLock = 0, + TryUnLock, + AirBlowOn, + AirBlowOff, + AirBlowDustOn, + AirBlowDustOff, + PrintPickLOff, + PrintPickLOn, + PrintPickROff, + PrintPickROn, + PickOff, + PickOn, + AirBlowCoverDn, + AirBlowCoverUp, + UnloaderUp, + UnloaderDn, + LiftUp, + LiftDn, + } + + public enum eSensorState : byte + { + Off = 0, + On = 1, + InComplete = 2, + } + public enum eIOCheckResult + { + Wait = 0, + Complete, + Timeout + } + + + + public enum ePort + { + Left = 0, + Right, + } + + + enum eResultStringType + { + Nomal = 0, + Attention, + Error, + } + public enum eMotDir + { + Stop = 0, + CW = 1, + CCW = 2 + } + + /// + /// RUN중일 때 사용되는 세부 시퀀스 + /// + public enum eRunStep : byte + { + NOTSET = 0, + + /// + /// 프로그램 체크 + /// + STARTCHKSW, + /// + /// 하드웨어 체크 + /// + STARTCHKHW, + + /// + /// 기계장치를 작업 시작 전 상태로 이동합니다 + /// + INITIALHW, + + /// + /// 안전지대(비활성화된경우 발생) + /// + SAFTYZONE_GO, + SAFTYZONE_RDY, + + BEGINLOAD, + /// + /// 트레이를 로딩하기 위한 로더 이동 및 트레이 추출 + /// + PORTLOAD, + + + /// + /// 비젼촬영을위한 위치로 이동 + /// + BEGINPICK, + ENDPICK, + + OVERLOAD, + SAVEDATA, + + /// + /// 모션 원위치 + /// + BARCODE, + + /// + /// AIR/BLOW 위치 이동 및 작업 + /// + AIRBLOW, + REELOUT, + TRAYOUT, + + /// + /// 언로드위치로 셔틀을 이동 + /// + BEGINUNLOADER, + /// + /// 트레이 언로드 작업 + /// + TRAYUNLOAD, + + /// + /// 언로딩하고 다시 로딩존으로 이동하는 시퀀스 + /// + MOVE_TO_LOAD, + + } + + + public enum ePLCIPin : byte + { + X00, X01, X02, X03, X04, X05, X06, X07, X08, X09, X0A, + X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X1A + } + public enum ePLCOPin : byte + { + Y00, Y01, Y02, Y03, Y04, Y05, Y06, Y07, Y08, Y09, Y0A, + Y10, Y11, Y12, Y13, Y14, Y15, Y16, Y17, Y18, Y19, Y1A + } + public enum ePLCITitle : byte + { + Run, Cart_Status_01, Cart_Status_02, Cart_Status_03, Cart_Status_04, + Machine_Confirm = 19 + } + public enum ePLCOTitle : byte + { + Cart_No_Setting = 0, + Handler_Confirm = 19, + } + + public enum eResult : byte + { + NOERROR, + EMERGENCY, + SAFTY, + DEVELOP, + SETUP, + HARDWARE, + SENSOR, + MOTION, + OPERATION, + COMMUNICATION, + TIMEOUT, + UNLOADER, + } + + + public enum eECode : byte + { + + NOTSET = 0, + EMERGENCY = 1, + NOMODELV = 2,//작업모델 + NOMODELM = 3,//모션모델 + DOORSAFTY = 6, + AREASAFTY = 7, + VIS_LICENSE = 8, + HOME_TIMEOUT = 9, + AIRNOOUT = 10, + NOFUNCTION = 11, + AIRNOTDETECT = 12, + + DOOFF = 27,//출력 off + DOON = 28,//출력 on + DIOFF = 29,//입력off + DION = 30,//입력 on + + MESSAGE_INFO = 32, + MESSAGE_ERROR = 33, + + VISION_NOTREADY = 34, + VISION_NOCONN = 35, + VISION_TRIGERROR = 36, + VISION_COMMERROR = 37, + VISION_NORECV = 38, + + AZJINIT = 39, //DIO 혹은 모션카드 초기화 X + MOT_HSET = 41, + MOT_SVOFF = 42, + MOT_HSEARCH = 43, + + MOT_CMD = 71, + USER_STOP = 72, + USER_STEP = 73, + POSITION_ERROR = 86, + MOTIONMODEL_MISSMATCH = 96, + + + //여기서부터는 전용코드로한다(소켓은 조금 섞여 있음) + VISCONF = 100, + NEED_AIROFF_L, + NEED_AIROFF_R, + PORTOVERLOAD, + NOPRINTLDATA, + NOPRINTRDATA, + PRINTL, + PRINTR, + CAM_LEFT, + CAM_RIGHT, + INCOMPLETE_LOADERDATA, + INCOMPLETE_INFOSELECT, + NOPUTPOSITION, + NOREELSIZE, + PRINTER, + QRDATAMISSMATCHL, + QRDATAMISSMATCHR, + MOTX_SAFETY, + + NO_PAPER_DETECT_L, + NO_PAPER_DETECT_R, + + CART_SIZE_ERROR_L, + CART_SIZE_ERROR_R, + + PRE_USE_REELID_L, + PRE_USE_REELID_R, + + NEED_JOBCANCEL, + + LCONVER_REEL_DECTECT_ALL =150, + RCONVER_REEL_DECTECT_ALL, + LCONVER_REEL_DECTECT_IN, + RCONVER_REEL_DECTECT_IN, + LCONVER_MOVING, + RCONVER_MOVING, + NOREADY_KEYENCE, + + PRINTER_LPICKER_NOBW, + PRINTER_RPICKER_NOBW, + NOBYPASSSID, + + CONFIG_KEYENCE, + PRINTER_LPRINTER_NOUP, + PRINTER_RPRINTER_NOUP, + NOECSDATA, + PICKER_LCYL_NODOWN, + PICKER_RCYL_NODOWN, + PICKER_LCYL_NOUP, + PICKER_RCYL_NOUP, + + NOSIDINFOFROMDB, + INBOUNDWEBAPIERROR, + SIDINFORDUP, + NOECSDATAACTIVE, + NOTSELECTMULTISID, + } + + public enum eNextStep : byte + { + NOTHING = 0, + PAUSE, + PAUSENOMESAGE, + ERROR + } + + public enum eILock + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + DISABLE, + + XMOVE, + YMOVE, + ZMOVE, + + X_POS, + Y_POS, + Z_POS, + + PY_POS, + PZ_POS, + CYL_FORWARD, + MPrint, + } + + + //public enum eILockPKX + //{ + // EMG = 0, + // PAUSE, + // HOMESET, + // DOOR, + // Disable, + // ZL_POS, + // ZR_POS, + // ZMOVE, + // PKZPOS, + //} + + //public enum eILockPKZ + //{ + // EMG = 0, + // PAUSE, + // HOMESET, + // DOOR, + // Disable, + // Y_POS, + // YMOVE, + // PORTRUN0, + // PORTRUN1, + // PORTRUN2 + //} + + //public enum eILockPKT + //{ + // EMG = 0, + // PAUSE, + // HOMESET, + // DOOR, + // Disable, + // Y_POS, + // Y_MOVE, + // PortRun + //} + + + ///// + ///// PRINT MOVE AXIS (L+R) + ///// + //public enum eILockPRM + //{ + // Emergency = 0, + // Pause, + // HomeSet, + // Safty, + // Disable, + // ZMOVE, + // FORWARD, + // ITEMON, + // PKXPOS, + // PRNZPOS, + //} + + //public enum eILockPRZ + //{ + // EMG = 0, + // PAUSE, + // HOMESET, + // DOOR, + // Disable, + // YMOVE, + // ITEMON, + // PRNYPOS, + //} + + public enum eILockPRL + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + DISABLE, + + PRNYPOS, + PRNZPOS, + } + public enum eILockPRR + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + DISABLE, + + + PRNYPOS, + PRNZPOS, + } + public enum eILockVS0 + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + DISABLE, + + PORTRDY, + PKXPOS, //피커의 위치 + PRNYPOS, //프린터Y축 위치 + } + public enum eILockVS1 + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + DISABLE, + + PORTRDY, + PKXPOS, + } + public enum eILockVS2 + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + DISABLE, + + PORTRDY, + PKXPOS, //피커의 위치 + PRNYPOS, //프린터Y축 위치 + } + public enum eILockCV + { + EMG = 0, + PAUSE, + HOMESET, + DOOR, + SAFTYAREA, + + /// + /// 포트를 사용하지 않는경우 + /// + DISABLE, + + /// + /// 카트모드 + /// + CARTMODE, + + /// + /// 업체컨이어의 ready 신호 + /// + EXTBUSY, + + /// + /// 나의 작업 신호 + /// + BUSY, + + VISION, + } +} diff --git a/Handler/Project/Class/Enum_MotPosition.cs b/Handler/Project/Class/Enum_MotPosition.cs new file mode 100644 index 0000000..95a20a2 --- /dev/null +++ b/Handler/Project/Class/Enum_MotPosition.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace Project +{ + + public enum ePXLoc : byte + { + [Description("Reel Waiting(Left) Position")] + READYL = 0, + [Description("Reel Waiting(Right) Position")] + READYR, + [Description("Reel PickOn Position")] + PICKON, + [Description("Reel PickOff(Left) Position")] + PICKOFFL, + [Description("Reel PickOff(Right) Position")] + PICKOFFR, + } + + public enum ePZLoc : byte + { + [Description("Ready Position")] + READY = 0, + [Description("Reel PickOn Position")] + PICKON, + [Description("Reel PickOff(Left) Position")] + PICKOFFL, + [Description("Reel PickOff(Right) Position")] + PICKOFFR, + } + + public enum ePTLoc : byte + { + [Description("Ready Position")] + READY = 0, + } + + public enum eLMLoc : byte + { + [Description("Ready Position")] + READY = 0, + [Description("7\" High Attach Position")] + PRINTH07, + [Description("7\" Low Attach Position")] + PRINTL07, + [Description("7\" Middle Attach Position")] + PRINTM07, + [Description("13\" High Attach Position")] + PRINTH13, + [Description("13\" Low Attach Position")] + PRINTL13, + [Description("13\" Middle Attach Position")] + PRINTM13, + } + public enum eLZLoc : byte + { + [Description("Ready Position")] + READY = 0, + [Description("Reel PickOn Position")] + PICKON, + [Description("Reel PickOff Position")] + PICKOFF, + } + public enum eRMLoc : byte + { + [Description("Ready Position")] + READY = 0, + [Description("7\" High Attach Position")] + PRINTH07, + [Description("7\" Low Attach Position")] + PRINTL07, + [Description("7\" Middle Attach Position")] + PRINTM07, + [Description("13\" High Attach Position")] + PRINTH13, + [Description("13\" Low Attach Position")] + PRINTL13, + [Description("13\" Middle Attach Position")] + PRINTM13, + } + public enum eRZLoc : byte + { + [Description("Ready Position")] + READY = 0, + [Description("Reel PickOn Position")] + PICKON, + [Description("Reel PickOff Position")] + PICKOFF, + } +} diff --git a/Handler/Project/Class/FTP/EventArgs.cs b/Handler/Project/Class/FTP/EventArgs.cs new file mode 100644 index 0000000..8886c86 --- /dev/null +++ b/Handler/Project/Class/FTP/EventArgs.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AR.FTPClient +{ + public class MessageEventArgs : EventArgs + { + protected Boolean _isError = false; + public Boolean IsError { get { return _isError; } } + protected string _message = string.Empty; + public string Message { get { return _message; } } + public MessageEventArgs(Boolean isError, string Message) + { + _isError = isError; + _message = Message; + } + } + public class ListProgressEventArgs : EventArgs + { + //public long Max { get; set; } + //public long Value { get; set; } + public long TotalRecv { get; set; } + public ListProgressEventArgs(long TotalRecv_) + { + this.TotalRecv = TotalRecv_; + } + } + +} diff --git a/Handler/Project/Class/FTP/FTPClient.cs b/Handler/Project/Class/FTP/FTPClient.cs new file mode 100644 index 0000000..4536b00 --- /dev/null +++ b/Handler/Project/Class/FTP/FTPClient.cs @@ -0,0 +1,574 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; + + +namespace AR.FTPClient +{ + public partial class FTPClient : IFTPClient + { + public string errorMessage { get; set; } + + private int bufferSize = 2048; + private int timeout = 20000; + + #region "Contstruct" + + public FTPClient() : this("127.0.0.1", "Anonymous", "") { } + + public FTPClient(string Host, string UserID, string UserPass) : + this(Host, UserID, UserPass, 21) + { } + + public FTPClient(string Host, string UserID, string UserPass, bool passive) : + this(Host, UserID, UserPass, 21, passive) + { } + + public FTPClient(string Host, string UserID, string UserPass, int port) : + this(Host, UserID, UserPass, port, false) + { } + + public FTPClient(string host, string userid, string userpass, int port, bool passive) + { + Host = host; + UserID = userid; + UserPassword = userpass; + Port = port; + PassiveMode = passive; + this.TextEncoding = System.Text.Encoding.UTF8; + } + #endregion + + public event EventHandler Message; + public event EventHandler ListPrgress; + + #region "Properties" + + /// + /// 접속하려는 FTP서버의 IP혹은 도메인 주소를 입력하세요 + /// 기본값 : 127.0.0.1 + /// + public string Host { get; set; } + /// + /// FTP의 사용자 ID + /// 기본값 : Anonymous + /// + public string UserID { get; set; } + /// + /// FTP 사용자 ID의 암호 + /// 기본값 : 없음 + /// + public string UserPassword { get; set; } + /// + /// FTP 접속 포트 + /// 기본값 : 21 + /// + public int Port { get; set; } + /// + /// FTP 접속 방식 (능동형/수동형) + /// + public bool PassiveMode { get; set; } + + /// + /// 문자수신시 사용할 인코딩 방식 + /// + public System.Text.Encoding TextEncoding { get; set; } + + #endregion + public void Dispose() + { + + } + /// + /// 파일을 다운로드 합니다. + /// + /// 원격위치의 전체 경로 + /// 로컬위치의 전체 경로 + public Boolean Download(string remoteFile, string localFile, bool overwrite = false) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + + //overwrite funcion - 190622 - chi + errorMessage = string.Empty; + if (overwrite == false && System.IO.File.Exists(localFile)) + { + errorMessage = "Target file alreay exists"; + return false; + } + else if (overwrite == true && System.IO.File.Exists(localFile)) + { + try + { + System.IO.File.Delete(localFile); + } + catch (Exception ex) + { + errorMessage = ex.Message; + return false; + } + } + + + + bool retval = true; + try + { + long Receive = 0; + var url = CombineUrl(remoteFile); + + ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(this.UserID, this.UserPassword); + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpStream = ftpResponse.GetResponseStream(); + FileStream localFileStream = new FileStream(localFile, FileMode.Create); + byte[] byteBuffer = new byte[bufferSize]; + int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); + Receive += bytesRead; + if (ListPrgress != null) + ListPrgress(this, new ListProgressEventArgs(Receive)); + try + { + while (bytesRead > 0) + { + localFileStream.Write(byteBuffer, 0, bytesRead); + bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize); + Receive += bytesRead; + if (ListPrgress != null) + ListPrgress(this, new ListProgressEventArgs(Receive)); + } + } + catch (Exception ex) { retval = false; Console.WriteLine(ex.ToString()); } + localFileStream.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + } + catch (Exception ex) { retval = false; this.errorMessage = ex.Message; Console.WriteLine(ex.ToString()); } + return retval; + } + + /// + /// 파일을 업로드 합니다. + /// + /// 원격위치의 전체 경로 + /// 로컬위치의 전체 경로 + /// + public Boolean Upload(string remoteFile, string localFile) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(remoteFile); + ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = PassiveMode; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; + ftpStream = ftpRequest.GetRequestStream(); + FileStream localFileStream = new FileStream(localFile, FileMode.Open); + byte[] byteBuffer = new byte[bufferSize]; + int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); + Boolean bError = false; + try + { + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + wat.Restart(); + while (bytesSent != 0) + { + ftpStream.Write(byteBuffer, 0, bytesSent); + bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize); + } + + } + catch (Exception ex) + { + bError = true; + } + localFileStream.Close(); + ftpStream.Close(); + ftpRequest = null; + if (bError) return false; + else return true; + } + catch (Exception ex) + { + this.errorMessage = ex.Message; + return false; + } + } + + + /// + /// 원격파일을 삭제 합니다. + /// + /// + public Boolean Delete(string remotefile) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(remotefile); + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpResponse.Close(); + ftpRequest = null; + return true; + } + catch (Exception ex) { this.errorMessage = ex.Message; return false; } + } + + /// + /// 원격파일의 이름을 변경 합니다. + /// + /// + /// + public Boolean rename(string currentFileNameAndPath, string newFileName) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(currentFileNameAndPath); + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.UseBinary = true; + ftpRequest.KeepAlive = true; + ftpRequest.Method = WebRequestMethods.Ftp.Rename; + ftpRequest.RenameTo = newFileName; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpResponse.Close(); + ftpRequest = null; + return true; + } + catch (Exception ex) { this.errorMessage = ex.Message; return false; } + } + + /// + /// 원격위치에 폴더를 생성 합니다. + /// 트리구조로 폴더를 생성하지 않습니다. 여러개의 폴더를 생성하려면 각각 호출 해야 합니다. + /// + /// + /// + public bool createDirectory(string newDirectory) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(newDirectory, false); + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.UseBinary = true; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpResponse.Close(); + ftpRequest = null; + return true; + } + catch (Exception ex) { this.errorMessage = ex.Message; return false; } + } + + /// + /// 원격위치의 폴더를 삭제합니다. 폴더 삭제 전 대상 폴더는 비어있어야 합니다. + /// + /// + /// + public bool RemoveDirectory(string Directory) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(Directory, false); + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.UseBinary = true; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpResponse.Close(); + ftpRequest = null; + return true; + } + catch (Exception ex) { this.errorMessage = ex.Message; return false; } + } + + /// + /// 파일의 생성일자 반환 + /// + /// + /// + public string getFileCreatedDateTime(string fileName) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(fileName); + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.UseBinary = true; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpStream = ftpResponse.GetResponseStream(); + StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding); + string fileInfo = null; + try { fileInfo = ftpReader.ReadToEnd(); } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + return fileInfo; + } + catch (Exception ex) { this.errorMessage = ex.Message; Console.WriteLine(ex.ToString()); } + return ""; + } + + + /// + /// 파일의 크기를 반환 + /// + /// + /// + public string getFileSize(string fileName) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + try + { + var url = CombineUrl(fileName); + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = this.PassiveMode; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpStream = ftpResponse.GetResponseStream(); + StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding); + string fileInfo = null; + try { while (ftpReader.Peek() != -1) { fileInfo = ftpReader.ReadToEnd(); } } + catch (Exception ex) { Console.WriteLine(ex.ToString()); } + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + return fileInfo; + } + catch (Exception ex) { errorMessage = ex.Message; Console.WriteLine(ex.ToString()); } + return ""; + } + + + /// + /// 폴더와 파일의 이름만 반환 합니다. + /// + /// + /// + public string[] directoryListSimple(string directory) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + errorMessage = string.Empty; + try + { + var url = CombineUrl(directory, false); + if (url.EndsWith("/") == false) url += "/"; + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UseBinary = true; + ftpRequest.UsePassive = PassiveMode; + ftpRequest.KeepAlive = true; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.ReadWriteTimeout = 30000; + ftpRequest.Timeout = 30000; + ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; + + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpStream = ftpResponse.GetResponseStream(); + StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding); + string directoryRaw = null; + try + { + while (ftpReader.Peek() != -1) + { + var dataLIne = ftpReader.ReadLine(); + if (dataLIne.Trim() != "") + { + if (directoryRaw != null && directoryRaw != "") directoryRaw += "|"; + directoryRaw += dataLIne; + } + } + } + catch (Exception ex) { errorMessage += "\n" + ex.Message; } + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; } + catch (Exception ex) { errorMessage += "\n" + ex.Message; } + } + catch (Exception ex) { errorMessage = ex.Message; Console.WriteLine(ex.ToString()); } + return new string[] { "" }; + } + + + /// + /// 폴더 및 파일의 정보를 상세하게 표시합니다. + /// + /// + /// + public FTPdirectory ListDirectoryDetail(string directory) + { + FtpWebRequest ftpRequest = null; + FtpWebResponse ftpResponse = null; + Stream ftpStream = null; + errorMessage = string.Empty; + try + { + var url = CombineUrl(directory, false); + + if (url.EndsWith("/") == false) url += "/"; + ftpRequest = (FtpWebRequest)WebRequest.Create(url); + ftpRequest.Credentials = new NetworkCredential(UserID, UserPassword); + ftpRequest.UsePassive = true; + ftpRequest.UseBinary = true; + ftpRequest.KeepAlive = false; + ftpRequest.ReadWriteTimeout = this.timeout; + ftpRequest.ReadWriteTimeout = 30000; + ftpRequest.Timeout = 30000; + ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); + ftpStream = ftpResponse.GetResponseStream(); + + StreamReader ftpReader = new StreamReader(ftpStream, this.TextEncoding); + string directoryRaw = null; + + try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "\r"; } } + catch (Exception ex) { errorMessage += "\n" + ex.Message; } + ftpReader.Close(); + ftpStream.Close(); + ftpResponse.Close(); + ftpRequest = null; + directoryRaw = directoryRaw.Replace("\r\n", "\r").TrimEnd((char)0x0D); + return new FTPdirectory(directoryRaw, directory); + } + catch (Exception ex) { errorMessage += "\n" + ex.Message; } + return null; + } + + #region "utillity" + + /// + /// Url을 Host와 결합하여 생성 + /// + /// 경로명 + /// 파일인지 여부 + /// + string CombineUrl(string file, bool isfile = true) + { + file = file.Replace("\\", "/"); + string url = this.Host; + if (this.Host.ToLower().StartsWith("ftp://") == false) url = "ftp://" + url; + if (url.Substring(5).LastIndexOf(':') == -1) + url += ":" + this.Port.ToString(); + + if (this.Host.EndsWith("/")) url = this.Host.Substring(0, Host.Length - 1); + + if (file.StartsWith("/")) + url = url + System.Web.HttpUtility.UrlPathEncode(file); + else + url = url + "/" + System.Web.HttpUtility.UrlPathEncode(file); + + url = url.Replace("#", "%23"); + + if (isfile) + return url; + else + return url + "/"; + } + public string PathCombine(string path, string add) + { + var newpath = string.Empty; + if (path.EndsWith("/")) newpath = path + add; + else newpath = path + "/" + add; + if (!newpath.EndsWith("/")) newpath += '/'; + return newpath; + + } + public string PathFileCombine(string path, string add) + { + var newpath = string.Empty; + if (path.EndsWith("/")) newpath = path + add; + else newpath = path + "/" + add; + if (newpath.EndsWith("/")) newpath = newpath.Substring(0, newpath.Length - 1); + return newpath; + + } + public string getParent(string path) + { + if (path == "/") return path; + else if (path == "") return "/"; + else + { + //서브폴더를 찾아서 처리해준다. + if (path.IndexOf('/') == -1) return "/"; + else + { + if (path.EndsWith("/")) path = path.Substring(0, path.Length - 1); + var slashindex = path.LastIndexOf('/'); + var parent = path.Substring(0, slashindex); + if (!parent.EndsWith("/")) parent += '/'; + return parent; + } + } + } + + public void RaiseMessage(Boolean isError, string message) + { + if (isError) errorMessage = message; //170920 + if (Message != null) Message(this, new MessageEventArgs(isError, message)); + } + #endregion + } +} diff --git a/Handler/Project/Class/FTP/FTPdirectory.cs b/Handler/Project/Class/FTP/FTPdirectory.cs new file mode 100644 index 0000000..f506653 --- /dev/null +++ b/Handler/Project/Class/FTP/FTPdirectory.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AR.FTPClient +{ + + /// + /// ''' Stores a list of files and directories from an FTP result + /// ''' + /// ''' + public class FTPdirectory : List + { + public FTPdirectory() + { + } + + /// + /// ''' Constructor: create list from a (detailed) directory string + /// ''' + /// ''' directory listing string + /// ''' + /// ''' + public FTPdirectory(string dir, string path) + { + var lines = dir.Replace("\n","").Split('\r'); + foreach (var line in lines) + { + if (line != "") + this.Add(new FTPfileInfo(line, path)); + } + } + + + /// + /// ''' Filter out only files from directory listing + /// ''' + /// ''' optional file extension filter + /// ''' FTPdirectory listing + public FTPdirectory GetFiles(string ext = "") + { + return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.File, ext); + } + + /// + /// ''' Returns a list of only subdirectories + /// ''' + /// ''' FTPDirectory list + /// ''' + public FTPdirectory GetDirectories() + { + return this.GetFileOrDir(FTPfileInfo.DirectoryEntryTypes.Directory); + } + + // internal: share use function for GetDirectories/Files + private FTPdirectory GetFileOrDir(FTPfileInfo.DirectoryEntryTypes type, string ext = "") + { + FTPdirectory result = new FTPdirectory(); + foreach (FTPfileInfo fi in this) + { + if (fi.FileType == type) + { + if (ext == "") + result.Add(fi); + else if (ext == fi.Extension) + result.Add(fi); + } + } + return result; + } + + public bool FileExists(string filename) + { + foreach (FTPfileInfo ftpfile in this) + { + if (ftpfile.Filename == filename) + return true; + } + return false; + } + + private const char slash = '/'; + + public static string GetParentDirectory(string dir) + { + string tmp = dir.TrimEnd(slash); + int i = tmp.LastIndexOf(slash); + if (i > 0) + return tmp.Substring(0, i - 1); + else + throw new ApplicationException("No parent for root"); + } + } +} diff --git a/Handler/Project/Class/FTP/FTPfileInfo.cs b/Handler/Project/Class/FTP/FTPfileInfo.cs new file mode 100644 index 0000000..a3d3c42 --- /dev/null +++ b/Handler/Project/Class/FTP/FTPfileInfo.cs @@ -0,0 +1,216 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace AR.FTPClient +{ + /// + /// ''' Represents a file or directory entry from an FTP listing + /// ''' + /// ''' + /// ''' This class is used to parse the results from a detailed + /// ''' directory list from FTP. It supports most formats of + /// ''' + public class FTPfileInfo + { + // Stores extended info about FTP file + + public string FullName + { + get + { + var retval = Path + "/" + Filename; + return retval.Replace("//", "/"); + } + } + public string Filename + { + get + { + return _filename; + } + } + public string Path + { + get + { + return _path; + } + } + public DirectoryEntryTypes FileType + { + get + { + return _fileType; + } + } + public long Size + { + get + { + return _size; + } + } + public DateTime FileDateTime + { + get + { + return _fileDateTime; + } + } + public string Permission + { + get + { + return _permission; + } + } + public string Extension + { + get + { + int i = this.Filename.LastIndexOf("."); + if (i >= 0 & i < (this.Filename.Length - 1)) + return this.Filename.Substring(i + 1); + else + return ""; + } + } + public string NameOnly + { + get + { + int i = this.Filename.LastIndexOf("."); + if (i > 0) + return this.Filename.Substring(0, i); + else + return this.Filename; + } + } + private string _filename; + private string _path; + private DirectoryEntryTypes _fileType; + private long _size; + private DateTime _fileDateTime; + private string _permission; + + + /// + /// ''' Identifies entry as either File or Directory + /// ''' + public enum DirectoryEntryTypes + { + File, + Directory, + Link + } + + /// + /// ''' Constructor taking a directory listing line and path + /// ''' + /// ''' The line returned from the detailed directory list + /// ''' Path of the directory + /// ''' + public FTPfileInfo(string line, string path) + { + // parse line + + + + Match m = GetMatchingRegex(line); + if (m == null) + // failed + throw new ApplicationException("Unable to parse line: " + line); + else + { + _filename = m.Groups["name"].Value; + _path = path; + + + _permission = m.Groups["permission"].Value; + string _dir = m.Groups["dir"].Value; + if ((_dir != "" & (_dir == "d" || _dir == "D"))) + { + _fileType = DirectoryEntryTypes.Directory; + _size = 0; // CLng(m.Groups("size").Value) + } + else if ((_dir != "" & (_dir == "l" || _dir == "L"))) + { + _fileType = DirectoryEntryTypes.Link; + _size = 0; // CLng(m.Groups("size").Value) + } + else + { + _fileType = DirectoryEntryTypes.File; + _size = System.Convert.ToInt64(m.Groups["size"].Value); + } + + + try + { + var timestamp = m.Groups["timestamp"].Value; + if (timestamp.IndexOf(':') == -1) + { + _fileDateTime = DateTime.Parse(timestamp); + } + else + { + _fileDateTime = DateTime.Parse(DateTime.Now.Year + " " + timestamp); + } + + } + catch + { + // MsgBox("datetime err=" & Now.Year & Space(1) & "value=" & m.Groups("timestamp").Value & vbCrLf & ex.Message.ToString) + _fileDateTime = DateTime.Parse("1982-11-23"); + } + } + } + + public FTPfileInfo(string filename, string permission, string dir, int size, DateTime filetime, Boolean isdir, string path) + { + _filename = filename;// m.Groups["name"].Value; + _path = path; + _permission = permission; // m.Groups["permission"].Value; + string _dir = dir;// m.Groups["dir"].Value; + if (isdir == true) + { + _fileType = DirectoryEntryTypes.Directory; + _size = 0; // CLng(m.Groups("size").Value) + } + else + { + _fileType = DirectoryEntryTypes.File; + _size = size;// + } + + _fileDateTime = filetime; + } + + private Match GetMatchingRegex(string line) + { + Regex rx; + Match m; + for (int i = 0; i <= _ParseFormats.Length - 1; i++) + { + rx = new Regex(_ParseFormats[i]); + m = rx.Match(line); + if (m.Success) + return m; + } + return null; + } + + /// + /// ''' List of REGEX formats for different FTP server listing formats + /// ''' + /// ''' + /// ''' The first three are various UNIX/LINUX formats, fourth is for MS FTP + /// ''' in detailed mode and the last for MS FTP in 'DOS' mode. + /// ''' I wish VB.NET had support for Const arrays like C# but there you go + /// ''' + private static string[] _ParseFormats = new[] { @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{4})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{4})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\d+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})\s+\d+\s+\w+\s+\w+\s+(?\d+)\s+(?\w+\s+\d+\s+\d{1,2}:\d{2})\s+(?.+)", @"(?[\-dl])(?([\-r][\-w][\-xs]){3})(\s+)(?(\d+))(\s+)(?(\w+\s\w+))(\s+)(?(\d+))\s+(?\w+\s+\d+\s+\d{2}:\d{2})\s+(?.+)", @"(?\d{2}\-\d{2}\-\d{2}\s+\d{2}:\d{2}[Aa|Pp][mM])\s+(?\<\w+\>){0,1}(?\d+){0,1}\s+(?.+)" }; + } +} diff --git a/Handler/Project/Class/FTP/IFTPClient.cs b/Handler/Project/Class/FTP/IFTPClient.cs new file mode 100644 index 0000000..11dcf18 --- /dev/null +++ b/Handler/Project/Class/FTP/IFTPClient.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AR.FTPClient +{ + public interface IFTPClient + { + void Dispose(); + string errorMessage { get; set; } + //string Host { get; set; } + //string UserID { get; set; } + //string UserPassword { get; set; } + //int Port { get; set; } + System.Text.Encoding TextEncoding { get; set; } + Boolean Download(string remoteFile, string localFile,bool overwrite=false); + Boolean Upload(string remoteFile, string localFile); + Boolean Delete(string remotefile); + Boolean rename(string currentFileNameAndPath, string newFileName); + bool createDirectory(string newDirectory); + bool RemoveDirectory(string Directory); + string getFileCreatedDateTime(string fileName); + string getFileSize(string fileName); + string[] directoryListSimple(string directory); + FTPdirectory ListDirectoryDetail(string directory); + event EventHandler Message; + event EventHandler ListPrgress; + void RaiseMessage(Boolean isError, string message); + string PathCombine(string path, string add); + string PathFileCombine(string path, string add); + string getParent(string path); + } +} diff --git a/Handler/Project/Class/ItemData.cs b/Handler/Project/Class/ItemData.cs new file mode 100644 index 0000000..84a921c --- /dev/null +++ b/Handler/Project/Class/ItemData.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Class +{ + public class JobData + { + public enum ErrorCode + { + None = 0, + BarcodeRead, + Print, + Camera, + } + public ErrorCode error = ErrorCode.None; + public int No { get; set; } + public VisionData VisionData; + + public DateTime JobStart + { + get + { + if (this.VisionData == null) return new DateTime(1982, 11, 23); + else return VisionData.STime; + } + } + public DateTime JobEnd; + public TimeSpan JobRun + { + get + { + if (JobEnd.Year == 1982) return new TimeSpan(0); + else if (JobStart.Year == 1982) return new TimeSpan(0); + else return JobEnd - JobStart; + } + } + + /// + /// 프린터에 명령을 전송한 시간 + /// + public DateTime PrintTime { get; set; } + + /// + /// 라벨을 추가한 시간 + /// + public DateTime Attachtime { get; set; } + + //작업데이터의 GUID(자료식별) + public string guid { get; private set; } + + //언로더포트위치(L/R) + public string PortPos; + + + //동작관련 메세지 + public string Message; + + int idx; + + + + public JobData(int idx_) + { + this.idx = idx_; + Clear("INIT"); + } + + public bool PrintAttach { get; set; } + public bool PrintQRValid { get; set; } + public string PrintQRValidResult { get; set; } + public void Clear(string source) + { + + + No = 0; + //JobStart = new DateTime(1982, 11, 23); + JobEnd = new DateTime(1982, 11, 23); + Attachtime = new DateTime(1982, 11, 23); + PortPos = string.Empty; + guid = Guid.NewGuid().ToString(); + Message = string.Empty; + if (VisionData == null) + VisionData = new VisionData(source); + else + VisionData.Clear(source, false); + PrintAttach = false; + PrintQRValid = false; + PrintQRValidResult = string.Empty; + PrintTime = new DateTime(1982, 11, 23); + PUB.AddDebugLog($"item data {idx} clear by {source} guid={guid}"); + } + + public void CopyTo(ref JobData obj) + { + if (obj == null) return; + obj.No = this.No; + obj.error = this.error; + obj.JobEnd = this.JobEnd; + obj.guid = this.guid; + obj.PortPos = this.PortPos; + obj.Message = this.Message; + obj.PrintAttach = this.PrintAttach; + obj.PrintQRValid = this.PrintQRValid; + obj.PrintQRValidResult = this.PrintQRValidResult; + obj.Attachtime = this.Attachtime; + obj.PrintTime = this.PrintTime; + PUB.AddDebugLog("Before item copy rid:" + this.VisionData.RID); + this.VisionData.CopyTo(ref obj.VisionData); + PUB.AddDebugLog($"After item copy target rid : {obj.VisionData.RID}, guid={obj.guid}"); + } + + + } +} diff --git a/Handler/Project/Class/KeyenceBarcodeData.cs b/Handler/Project/Class/KeyenceBarcodeData.cs new file mode 100644 index 0000000..9b3fbd9 --- /dev/null +++ b/Handler/Project/Class/KeyenceBarcodeData.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; + +namespace Project.Class +{ + public class KeyenceBarcodeData + { + public double Angle { get; set; } + public StdLabelPrint.CAmkorSTDBarcode AmkorData { get; set; } + public Point[] vertex { get; set; } + public string Data { get; set; } + public Point CenterPX { get; set; } + public bool Ignore { get; set; } + + /// + /// 1:QR, 11:Code 128(like 1D) + /// + public string barcodeSymbol { get; set; } + public string barcodeSource { get; set; } //230503 + public Boolean UserActive { get; set; } + public Boolean isSTDBarcode + { + get + { + if (AmkorData != null && barcodeSymbol == "1" && AmkorData.isValid) return true; + return false; + } + } + public Boolean isNewLen15 + { + get + { + if (AmkorData != null && barcodeSymbol == "1" && AmkorData.isValid && AmkorData.NewLen15Barcode) return true; + return false; + } + } + + /// + /// 라벨의 위치를 표시한다. 8방향이며 키패드 유사하게 설정한다 789/4-6/123 + /// + public byte LabelPosition { get; set; } + + /// + /// 정규식 분석이 완료되었다면 True를 반환합니다 + /// + public Boolean RegExConfirm { get; set; } + public int RefExApply { get; set; } + + public KeyenceBarcodeData() + { + LabelPosition = 0; + Angle = 0.0; + Data = string.Empty; + CenterPX = Point.Empty; + AmkorData = null; + vertex = null; + barcodeSymbol = string.Empty; + UserActive = false; + RegExConfirm = false; + Ignore = false; + barcodeSource = string.Empty; + + } + + public override string ToString() + { + return string.Format("{0},Deg={1},Center={2}x{3}", Data, Angle, CenterPX.X, CenterPX.Y); + } + + /// + /// 해당 중심점이 겹치는지 확인합니다. + /// + /// + /// + public Boolean CheckIntersect(Point Center, string data) + { + if (data == null) return false; + if (data.Equals(this.Data) == false) return false; //자료가 다르면 다른 자료로 처리한다 + return getInside(Center, vertex); + } + + bool getInside(Point pt, Point[] ptArr) + { + int crosses = 0; + for (int i = 0; i < ptArr.Length; i++) + { + int j = (i + 1) % ptArr.Length; + if ((ptArr[i].Y > pt.Y) != (ptArr[j].Y > pt.Y)) + { + //atX는 점 B를 지나는 수평선과 선분 (p[i], p[j])의 교점 + double atX = (ptArr[j].X - ptArr[i].X) * (pt.Y - ptArr[i].Y) / (ptArr[j].Y - ptArr[i].Y) + ptArr[i].X; + //atX가 오른쪽 반직선과의 교점이 맞으면 교점의 개수를 증가시킨다. + if (pt.X < atX) + crosses++; + } + } + return crosses % 2 > 0; + } + + } +} diff --git a/Handler/Project/Class/ModelInfoM.cs b/Handler/Project/Class/ModelInfoM.cs new file mode 100644 index 0000000..39f7d63 --- /dev/null +++ b/Handler/Project/Class/ModelInfoM.cs @@ -0,0 +1,131 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.ComponentModel; +using AR; + +namespace Project +{ + + public class ModelInfoM + { + //스피드 값과, 위치값을 저장하면 된다. + public int idx { get; set; } + public string Title { get; set; } + + public Dictionary Position { get; set; } + + + public ModelInfoM() + { + idx = -1; + Title = string.Empty; + ClearDataPosition(); + } + void ClearDataPosition() + { + Position = new Dictionary(); + var motCount = Enum.GetNames(typeof(eAxis)).Length; + for (int i = 0; i < motCount; i++) + { + var datas = new PositionData[64]; + for (int j = 0; j < datas.Length; j++) + datas[j] = new PositionData(-1, string.Empty, 0.0); + + Position.Add(i, datas); + } + } + + public Boolean isSet + { + get + { + if (idx == -1) return false; + else return !Title.isEmpty(); + } + } + + public void ReadValue(DataSet1.MCModelRow dr) + { + idx = dr.idx; + Title = dr.Title; + ReadValuePosition(idx); + } + + public void ReadValue(int index) + { + var dr = PUB.mdm.dataSet.MCModel.Where(t => t.idx == index).FirstOrDefault(); + if (dr == null) + { + idx = -1; + Title = string.Empty; + ClearDataPosition(); + } + else + { + idx = dr.idx; + Title = dr.Title; + ReadValuePosition(idx); + } + } + public Boolean ReadValue(string title) + { + return ReadValue(title, PUB.mdm.dataSet.MCModel); + } + public Boolean ReadValue(string title, DataSet1.MCModelDataTable dt) + { + var dr = dt.Where(t => t.Title == title).FirstOrDefault(); + if (dr == null) + { + idx = -1; + this.Title= string.Empty; + ClearDataPosition(); + return false; + } + else + { + idx = dr.idx; + this.Title = dr.Title; + ReadValuePosition(idx); + return true; + } + } + public void ReadValuePosition(int modelidx) + { + ReadValuePosition(modelidx, PUB.mdm.dataSet.MCModel); + } + public void ReadValuePosition(int modelidx, DataSet1.MCModelDataTable dt) + { + ClearDataPosition(); + + //각 모터별로 데이터를 가져온다 + int cnt = 0; + foreach (var data in Position) + { + //해당 모터의 속도값을 가져온다 + var drows = dt.Where(t => t.pidx == modelidx && t.PosIndex >= 0 && t.MotIndex == data.Key); + foreach (DataSet1.MCModelRow dr in drows) + { + var item = data.Value[dr.PosIndex]; + item.index = dr.PosIndex; + item.title = dr.PosTitle; + item.value = dr.Position; + item.speed = dr.Speed; + item.acc = dr.SpeedAcc; + item.dcc = dr.SpeedDcc; + data.Value[dr.PosIndex] = item; + cnt += 1; + } + } + + PUB.log.Add(String.Format("Motion({0}) Data Load : {1}", modelidx, cnt)); + } + + } + + + + +} diff --git a/Handler/Project/Class/ModelInfoV.cs b/Handler/Project/Class/ModelInfoV.cs new file mode 100644 index 0000000..0b6a8cf --- /dev/null +++ b/Handler/Project/Class/ModelInfoV.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Project +{ + + public class ModelInfoV + { + [Browsable(false)] + public string SPN { get; set; } + //[Browsable(false)] + //public Boolean SplitSPN { get; set; } + [Browsable(false)] + public string Title { get; set; } + [Browsable(false)] + public string Code { get; set; } + [Browsable(false)] + public int idx { get; set; } + + + public string Motion { get; set; } + public Boolean BCD_1D { get; set; } + public Boolean BCD_QR { get; set; } + public Boolean BCD_DM { get; set; } + + public UInt16 vOption { get; set; } + public UInt16 vWMSInfo { get; set; } + public UInt16 vSIDInfo { get; set; } + public UInt16 vJobInfo { get; set; } + public UInt16 vSIDConv1 { get; set; } + + public string Def_Vname { get; set; } + public string Def_MFG { get; set; } + + public Boolean IgnoreOtherBarcode { get; set; } + public bool DisableCamera { get; set; } + public bool DisablePrinter { get; set; } + public bool CheckSIDExsit { get; set; } + public bool bOwnZPL { get; set; } + public int BSave { get; set; } + public bool IgnorePartNo { get; set; } + public bool IgnoreBatch { get; set; } + public int AutoOutConveyor { get; set; } + + + public ModelInfoV() + { + vOption = vWMSInfo = vSIDInfo = vJobInfo = vSIDConv1 = 0; + bOwnZPL = false; + } + + public void ReadValue(DataSet1.OPModelRow dr) + { + this.AutoOutConveyor= dr.AutoOutConveyor; + this.bOwnZPL = dr.bOwnZPL; + this.Title = dr.Title; + this.Code = dr.Code; + this.idx = dr.idx; + this.Motion = dr.Motion; + this.BCD_1D = dr.BCD_1D; + this.BCD_QR = dr.BCD_QR; + this.BCD_DM = dr.BCD_DM; + this.vOption = dr.vOption; + this.vJobInfo = dr.vJobInfo; + this.vWMSInfo = dr.vWMSInfo; + this.vSIDInfo = dr.vSIDInfo; + this.vSIDConv1 = dr.vSIDConv; + this.Def_MFG = dr.Def_MFG; + this.Def_Vname = dr.Def_VName; + this.IgnoreOtherBarcode = dr.IgnoreOtherBarcode; + this.DisableCamera = dr.DisableCamera; + this.DisablePrinter = dr.DisablePrinter; + this.CheckSIDExsit = dr.CheckSIDExsit; + this.BSave = dr.BSave; + this.IgnoreBatch = dr.IgnoreBatch; + this.IgnorePartNo = dr.IgnorePartNo; + } + } + + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class RoiOffset + { + [DisplayName("Horizon"), Description("Vertical (Y-axis) change value (+ is downward, - is upward)")] + public double Y { get; set; } + [DisplayName("Vertical"), Description("Horizontal (X-axis) change value (+ is right, - is left)")] + public double X { get; set; } + [Browsable(false)] + public bool IsEmpty { get { if (Y == 0 && X == 0) return true; else return false; } } + + public RoiOffset(double start = 0.0, double end = 0.0) + { + this.Y = start; + this.X = end; + } + public override string ToString() + { + return string.Format("{0},{1}", Y, X); + } + public string toPointStr() + { + return string.Format("{0};{1}", Y, X); + } + } + + + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class Range + { + [DisplayName("Start Value")] + public uint Start { get; set; } + [DisplayName("End Value")] + public uint End { get; set; } + [Browsable(false)] + public bool IsEmpty { get { if (Start == 0 && End == 0) return true; else return false; } } + + public Range(UInt16 start, UInt16 end) : this((uint)start, (uint)end) { } + public Range(uint start = 0, uint end = 0) + { + this.Start = start; + this.End = end; + } + public static implicit operator RangeF(Range p) + { + return new RangeF((float)p.Start, (float)p.End); + } + public override string ToString() + { + return string.Format("{0}~{1}", Start, End); + } + } + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class RangeF + { + [DisplayName("Start Value")] + public float Start { get; set; } + [DisplayName("End Value")] + public float End { get; set; } + [Browsable(false)] + public bool IsEmpty { get { if (Start == 0f && End == 0f) return true; else return false; } } + public RangeF(float start = 0f, float end = 0f) + { + this.Start = start; + this.End = end; + } + public static implicit operator Range(RangeF p) + { + return new Range((uint)p.Start, (uint)p.End); + } + public override string ToString() + { + return string.Format("{0}~{1}", Start, End); + } + } + + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class CVisionProcess + { + + [Category("Special Settings (Developer)"), Description("Unused (was used for DOT recognition)")] + public UInt16 halfKernel { get; set; } + [Category("Special Settings (Developer)"), Description("Unused (was used for DOT recognition)")] + public UInt16 Constant { get; set; } + [Category("Special Settings (Developer)"), DisplayName("MP_Dilate"), Description("Unused (was used for DOT recognition)")] + public UInt16 dilate { get; set; } + [Category("Special Settings (Developer)"), DisplayName("MP_Erode"), Description("Unused (was used for DOT recognition)")] + public UInt16 erode { get; set; } + [Category("Special Settings (Developer)"), DisplayName("MP_Open"), Description("Unused (was used for DOT recognition)")] + public UInt16 open { get; set; } + [Category("Special Settings (Developer)"), DisplayName("MP_Open"), Description("Unused (was used for DOT recognition)")] + public UInt32 segment_threshold { get; set; } + [Category("Special Settings (Developer)"), DisplayName("MP_Open"), Description("Unused (was used for DOT recognition)")] + public Boolean isBlack { get; set; } + [Category("Special Settings (Developer)"), DisplayName("MP_Open"), Description("Unused (was used for DOT recognition)")] + public UInt32 judg_runcount { get; set; } + + + [Category("Unit Detection"), DisplayName("Brightness Threshold"), Description("Collects data above the entered value. The lower this value, the higher the detection value. Detection is determined by the value detected with this threshold. Since units are determined by looking at bright data, data above this threshold is detected")] + public byte detect_threhosld { get; set; } + [Category("Unit Detection"), DisplayName("Detection Threshold"), Description("This is the threshold value for detection. If the value detected due to the brightness threshold is 5000, and the value entered in this detection threshold is greater than 5000, it is determined that a unit exists. When it is lower, it is detected as an 'Empty' unit with no unit")] + public UInt16 detect_count { get; set; } + [Category("Unit Detection"), DisplayName("*Exception Area Detection Threshold"), Description("When an empty unit (=Empty), if light reflection from the shuttle frame is severe, the unit is detected by the reflection value. This value is used to remove such data, and in addition to the white area values used for unit detection, black blob detection is performed. If a black blob within the set value range is detected, it is detected as an 'Empty' unit")] + public Point detect_blobrange { get; set; } + + [Category("2D Detection"), DisplayName("Brightness Threshold"), Description("Collects data below the entered value. The lower this value, the lower the detection value. Detection is determined by the value detected with this threshold. Since 2D codes are determined by looking at dark data, data below this threshold is detected")] + public byte detectDM_threhosld { get; set; } + [Category("2D Detection"), DisplayName("Detection Threshold"), Description("This is the threshold value for detection. If the value detected due to the brightness threshold is 5000, and the value entered in this detection threshold is greater than 5000, it is determined that an ID exists. When it is lower, it is detected as a 'New' unit with no ID")] + public UInt16 detectDM_count { get; set; } + + public CVisionProcess() + { + + } + public override string ToString() + { + return "Vision Settings"; + } + } + +} diff --git a/Handler/Project/Class/PositionData.cs b/Handler/Project/Class/PositionData.cs new file mode 100644 index 0000000..112ad8e --- /dev/null +++ b/Handler/Project/Class/PositionData.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + public class PositionData + { + public int index { get; set; } + public string title { get; set; } + public double value { get; set; } + public double speed { get; set; } + public double acc { get; set; } + public double dcc { get; set; } + public PositionData() + { + index = -1; + title = string.Empty; + value = 0.0; + this.speed = 0.0; + this.acc = 100.0; + this.dcc = 0.0; + } + public PositionData(int idx_, string title_, double value_) + { + this.index = idx_; + this.title = title_; + this.value = value_; + } + } + +} diff --git a/Handler/Project/Class/Reel.cs b/Handler/Project/Class/Reel.cs new file mode 100644 index 0000000..85f47ba --- /dev/null +++ b/Handler/Project/Class/Reel.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Class +{ + public class Reel + { + public string SID { get; set; } + public string venderLot { get; set; } + public string mfg { get; set; } + public int qty { get; set; } + public string id { get; set; } + //public string date { get; set; } + public string PartNo { get; set; } + public string venderName { get; set; } + + public Reel() + { + Clear(); + } + public void Clear() + { + SID = string.Empty; + venderLot = string.Empty; + mfg = string.Empty; + venderLot = string.Empty; + id = string.Empty; + //date = string.Empty; + PartNo = string.Empty; + venderName = string.Empty; + qty = 0; + } + public Reel(string _sid, string _lot, string _manu, int _qty, string _id, string _mfgdate, string _partnum) + { + int sidNum = 0; + if (int.TryParse(_sid, out sidNum) && sidNum.ToString().Length == 9) + SID = sidNum.ToString(); + else + throw new Exception("SID is not a number or not a 9-digit number."); + + venderLot = _lot; + mfg = _mfgdate; + qty = _qty; + id = _id; + PartNo = _partnum; + venderName = _manu; + } + public Reel(string qrbarcodestr) + { + var spData = qrbarcodestr.Split(';'); + if (spData.Length < 6) + throw new Exception("Barcode length is insufficient."); + + SID = spData[0]; + venderLot = spData[1]; + venderName = spData[2]; + + int _qty = 0; + + if (int.TryParse(spData[3], out _qty)) + qty = _qty; + else + throw new Exception("Quantity field does not contain numeric information."); + + id = spData[4]; + mfg = spData[5]; + if (spData.Length > 6) PartNo = spData[6]; + else PartNo = string.Empty; + } + } +} diff --git a/Handler/Project/Class/RegexPattern.cs b/Handler/Project/Class/RegexPattern.cs new file mode 100644 index 0000000..4849d2b --- /dev/null +++ b/Handler/Project/Class/RegexPattern.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Class +{ + + public class RegexPattern + { + public string Customer { get; set; } + public string Pattern { get; set; } + public string Description { get; set; } + public bool IsTrust { get; set; } + public bool IsAmkStd { get; set; } + public Boolean IsEnable { get; set; } + public RegexGroupMatch[] Groups { get; set; } + public string Symbol { get; set; } + public int Seq { get; set; } + public RegexPattern() + { + Seq = 0; + Groups = null; + Pattern = string.Empty; + Description = string.Empty; + Customer = string.Empty; + IsTrust = false; + IsAmkStd = false; + Symbol = string.Empty; + } + } + + + public class RegexGroupMatch + { + /// + /// 1~ + /// + public int GroupNo { get; set; } + + /// + /// RID,SID,VLOT,MFG,PART,QTY,CUST,CUSTCODE,VNAME, + /// + public string TargetPos { get; set; } + public RegexGroupMatch() + { + GroupNo = 0; + TargetPos = string.Empty; + } + } +} diff --git a/Handler/Project/Class/StatusMessage.cs b/Handler/Project/Class/StatusMessage.cs new file mode 100644 index 0000000..adb6835 --- /dev/null +++ b/Handler/Project/Class/StatusMessage.cs @@ -0,0 +1,184 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Class +{ + public enum eStatusMesage : byte + { + Front = 0, + Rear, + TopJig, + Main, + } + public class StatusMessage + { + + Dictionary message; + public StatusMessage() + { + this.message = new Dictionary(); + } + public StatusMessageFormat get(eStatusMesage msg) + { + lock (this.message) + { + if (this.message.ContainsKey(msg) == false) + { + var nemsg = new StatusMessageFormat + { + Message = string.Empty + }; + this.message.Add(msg, nemsg); + return nemsg; + } + + else + return this.message[msg]; + } + } + + public void Clear() + { + + } + + public void set(eStatusMesage msg, StatusMessageFormat data) + { + lock (this.message) + { + if (this.message.ContainsKey(msg) == false) + this.message.Add(msg, data); + else + this.message[msg] = data; + } + + } + public void set(eStatusMesage msg, string data, int progval = 0, int progmax = 0) + { + if (data.StartsWith("[") && data.Contains("]")) + { + var buf = data.Split(']'); + var cate = buf[0].Substring(1); + var body = string.Join("]", buf, 1, buf.Length - 1); + set(msg, cate, body, Color.Black, progval, progmax); + } + else set(msg, string.Empty, data, Color.Black, progval, progmax); + + } + //public void set(eStatusMesage msg, string cate, string data, int progval = 0, int progmax = 0) + //{ + // set(msg, cate, data, Color.Black, progval, progmax); + + //} + + public void set(eStatusMesage msg, string cate, string data, Color fColor, int progval = 0, int progmax = 0) + { + lock (this.message) + { + if (this.message.ContainsKey(msg) == false) + { + var nemsg = new StatusMessageFormat + { + Category = cate, + Message = data, + fColor = fColor, + ProgressMax = progmax, + ProgressValue = progval + }; + this.message.Add(msg, nemsg); + } + else + { + var m = this.message[msg]; + m.Category = cate; + m.Message = data; + m.fColor = fColor; + if (progval != 0 || progmax != 0) + { + m.ProgressValue = progval; + m.ProgressMax = progmax; + } + } + } + + + } + public void set(eStatusMesage msg, string data, Color fColor, Color bColor1, Color bColor2) + { + lock (this.message) + { + if (this.message.ContainsKey(msg) == false) + { + var nemsg = new StatusMessageFormat + { + Message = data, + fColor = fColor, + bColor1 = bColor1, + bColor2 = bColor2 + }; + this.message.Add(msg, nemsg); + } + else + { + var m = this.message[msg]; + m.Message = data; + m.fColor = fColor; + m.bColor2 = bColor2; + m.bColor1 = bColor1; + } + } + + + } + } + public class StatusMessageFormat + { + public string Category { get; set; } + public string Message { get; set; } + public Color fColor { get; set; } + public Color bColor1 { get; set; } + public Color bColor2 { get; set; } + public int ProgressValue { get; set; } + public int ProgressMax { get; set; } + public int ProgressPerc + { + get + { + if (ProgressMax == 0 || ProgressValue == 0) return 0; + return (int)(ProgressValue / (ProgressMax * 1.0)); + } + } + public StatusMessageFormat() + { + Clear(); + } + void setMessage(string t, string m, Color c) + { + this.Category = t; + this.Message = m; + this.fColor = c; + + } + void setMessage(string m, Color c) + { + this.Category = string.Empty; + this.Message = m; + this.fColor = c; + + } + public void Clear() + { + ProgressValue = 0; + ProgressMax = 0; + Category = string.Empty; + Message = string.Empty; + fColor = Color.Black; + bColor1 = Color.White; + bColor2 = Color.White; + } + } +} diff --git a/Handler/Project/Class/VisionData.cs b/Handler/Project/Class/VisionData.cs new file mode 100644 index 0000000..c366ae5 --- /dev/null +++ b/Handler/Project/Class/VisionData.cs @@ -0,0 +1,877 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using System.Collections.Concurrent; +using System.ComponentModel; +using System.Runtime.CompilerServices; +using AR; + +namespace Project.Class +{ + public class VisionData : INotifyPropertyChanged + { + public int RetryLoader { get; set; } + public Dictionary bcdMessage { get; set; } + public Boolean LightOn { get; set; } + public DateTime STime; //비젼시작시간 + public DateTime ETime; //비젼종료시간 + public TimeSpan RunTime { get { return ETime - STime; } } //비젼동작시간 + public DateTime GTime; //이미지수집시간 + public string FileNameL; //로딩존 촬영 + public string FileNameU; //언로딩존 촬영 + public Boolean Complete; + + public override string ToString() + { + var sb = new StringBuilder(); + sb.AppendLine($"SID:{SID}:{(SID_Trust ? "O" : "X")}"); + sb.AppendLine($"RID:{RID}:{(RID_Trust ? "O" : "X")}"); + sb.AppendLine($"LOT:{VLOT}:{(VLOT_Trust ? "O" : "X")}"); + sb.AppendLine($"QTY:{QTY}:{(QTY_Trust ? "O" : "X")}"); + sb.AppendLine($"BAT:{BATCH}"); + sb.AppendLine($"MFG:{MFGDATE}:{(MFGDATE_Trust ? "O" : "X")}"); + sb.AppendLine($"CPN:{PARTNO}:{(PARTNO_Trust ? "O" : "X")}"); + + sb.AppendLine($"RID2:{RID2}"); + sb.AppendLine($"RIDNew:{RIDNew}"); + sb.AppendLine($"SID0:{SID0}"); + return sb.ToString(); + } + //public Boolean AngleQR { get; set; } + //public Boolean AngleSTD { get; set; } + //public double Angle { get; set; } + + //public Boolean IsAngleSet + //{ + // get + // { + // if (AngleQR == false && AngleSTD == false && Angle == 0.0) return true; + // else return false; + // } + //} + + /// + /// 부착위치에따른 추가회전 + /// + public double PositionAngle { get; set; } + public double ApplyAngle { get; set; } //적용된 회전 각도 + public Boolean NeedCylinderForward { get; set; } //부착시 실린더를 올려야하는가 + public Boolean ApplyOffset { get; set; } + public Boolean BaseAngle(out string msg, out KeyenceBarcodeData bcd) + { + + msg = string.Empty; + bcd = null; + + //데이터없다면 회전하지 못한다. + if (this.barcodelist == null || this.barcodelist.Count < 1) + { + msg = "No barcode data"; + return false; + } + + //사용자가 확정한 코드를 우선으로 한다 + KeyValuePair bcddata; + + var bcdCanList = barcodelist.Where(t => t.Value.Ignore == false).ToList(); + bcddata = bcdCanList.Where(t => t.Value.UserActive).FirstOrDefault(); + if (bcddata.Value != null) + { + bcd = bcddata.Value; + msg = "User Active"; + return true; + } + + //표준바코드를 최우선 으로 사용 + //15자리 기존 바코드는 angle 로 사용하지 않는다. + //이것은 각도가 일정치 않게 붙어지기 때문이다 + bcddata = bcdCanList.Where(t => t.Value.isSTDBarcode && t.Value.isNewLen15 == false).FirstOrDefault(); + if (bcddata.Value != null) + { + bcd = bcddata.Value; + msg = "STD Barcode"; + return true; + } + + //실제사용한 데이터 우선한다. + bcddata = bcdCanList.OrderByDescending(t=>t.Value.RefExApply).FirstOrDefault(); + if (bcddata.Value != null && bcddata.Value.RefExApply > 0) + { + bcd = bcddata.Value; + msg = $"Used Data({bcddata.Value.RefExApply})"; + return true; + } + + //QR코드를 우선으로 사용 - return 릴은 적용하지 안게한다. + //RQ코드가 적용되지 않게한다 210824 + bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol == "1" && t.Value.isNewLen15 == false && t.Value.Data.EndsWith(";;;") == false && t.Value.Data.StartsWith("RQ") == false).FirstOrDefault(); + if (bcddata.Value != null) + { + bcd = bcddata.Value; + msg = "QR Code"; + return true; + } + + //datamatrix, pdf417 + bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol != "11" && t.Value.barcodeSymbol != "6" && t.Value.Data.StartsWith("RQ") == false).FirstOrDefault(); + if (bcddata.Value != null) + { + bcd = bcddata.Value; + return true; + } + + //첫번쨰 아이템을 우선으로 사용 + if (bcdCanList.Count == 1) + { + bcd = bcdCanList.First().Value; + msg = "Only One Barcode = " + bcd.Data; + return true; + } + else if (bcdCanList.Count > 1) + { + //여러개가 있음 + bcddata = bcdCanList.Where(t => t.Value.barcodeSymbol == "0").FirstOrDefault(); + if (bcd != null) + { + bcd = bcddata.Value; + msg = "1D Data"; + return true; + } + else + { + bcd = bcdCanList.First().Value;//[0]; + msg = $"first({bcd.barcodeSymbol}:{bcd.Data})"; + return true; + } + } + else + { + bcd = null; + msg = "no data"; + return false; + } + + // angle = bcd.Angle; + //return true; + } //모션회전각도 + public Boolean Ready { get; set; } + public Boolean ServerUpdate { get; set; } + + public Boolean Confirm + { + get + { + return ConfirmAuto || ConfirmUser || ConfirmBypass; + } + } + public Boolean ConfirmUser { get; set; } + public Boolean ConfirmAuto { get; set; } + public bool ConfirmBypass { get; set; } + + public Boolean ValidSkipbyUser { get; set; } + + private string _rid = string.Empty; + private string _qty = string.Empty; + private string _qty0 = string.Empty; + private string _sid0 = string.Empty; + private string _sid = string.Empty; + private string _rid0 = string.Empty; + private string _vlot = string.Empty; + private string _vname = string.Empty; + private string _mfgdate = string.Empty; + private string _partno = string.Empty; + private string _custcode = string.Empty; + private string _custname = string.Empty; + private string _batch = string.Empty; + private string _qtymax = string.Empty; + private string _mcn = string.Empty; + + public bool SID_Trust { get; set; } + public bool RID_Trust { get; set; } + public bool VLOT_Trust { get; set; } + public bool MFGDATE_Trust { get; set; } + public bool QTY_Trust { get; set; } + public bool PARTNO_Trust { get; set; } + public bool VNAME_Trust { get; set; } + public string Target { get; set; } + + public string MCN + { + get { return _mcn; } + set { _mcn = value; OnPropertyChanged(); } + } + + + /// + /// Original QTY + /// + public string QTY0 + { + get { return _qty0; } + set { _qty0 = value; OnPropertyChanged(); } + } + + /// + /// Qty + /// + public string QTY + { + get { return _qty; } + set { _qty = value; OnPropertyChanged(); } + } + + /// + /// QTY값이 RQ에서 입력된 데이터인가? + /// + public Boolean QTYRQ { get; set; } + + public string RID0 + { + get { return _rid0; } + set { _rid0 = value; OnPropertyChanged(); } + } + public string VLOT + { + get { return _vlot; } + set { _vlot = value; OnPropertyChanged(); } + } + public string VNAME + { + get { return _vname; } + set { _vname = value; OnPropertyChanged(); } + } + public string MFGDATE + { + get { return _mfgdate; } + set { _mfgdate = value; OnPropertyChanged(); } + } + public string PARTNO + { + get { return _partno; } + set { _partno = value; OnPropertyChanged(); } + } + + + /// + /// Original SID + /// + public string SID0 + { + get { return _sid0; } + set { _sid0 = value; OnPropertyChanged(); } + } + + public string BATCH + { + get + { + return _batch; + } + set + { + _batch = value; OnPropertyChanged(); + } + } + + public string QTYMAX + { + get + { + return _qtymax; + } + set + { + _qtymax = value; OnPropertyChanged(); + } + } + + + public string SID + { + get { return _sid; } + set { _sid = value; OnPropertyChanged(); } + } + + private void OnPropertyChanged([CallerMemberName] string caller = "") + { + PropertyChanged?.Invoke(this, + new PropertyChangedEventArgs(caller)); + } + + + /// + /// Reel ID + /// + public string RID + { + get { return _rid; } + private set { _rid = value; OnPropertyChanged(); } + } + + /// + /// 릴 ID를 설정합니다.trust 상태를 자동으로 true 값으로 전환합니다 + /// + /// + /// + public void SetRID(string value, string reason) + { + //값이 변경될때 로그에 변경 + if (_rid.Equals(value) == false) + { + PUB.AddDebugLog(string.Format("RID Changed {0} -> {1} by {2}", _rid, value, reason)); + } + RID = value; + RID_Trust = true; + } + + public Boolean RIDNew { get; set; } + public Boolean HASHEADER { get; set; } + + + + public string CUSTCODE + { + get { return _custcode; } + set { _custcode = value; OnPropertyChanged(); } + } + public string CUSTNAME + { + get { return _custname; } + set { _custname = value; OnPropertyChanged(); } + } + + /// + /// 데이터가 모두존재하는지 확인 + /// + public Boolean DataValid + { + get + { + if (Confirm == false) return false; + return QTY.isEmpty() == false && + SID.isEmpty() == false && + RID.isEmpty() == false && + VLOT.isEmpty() == false && + VNAME.isEmpty() == false && + MFGDATE.isEmpty() == false && + PARTNO.isEmpty(); + } + } + + + public Boolean PrintPositionCheck { get; set; } + public string PrintPositionData { get; set; } + + //상단위치에 프린트를 할것인가? + //프린트위치에 따른다 + public ePrintPutPos GetPrintPutPosition() + { + //하단에 찍는경우이다 + if (PrintPositionData == "1" || + PrintPositionData == "2" || + PrintPositionData == "3") + { + return ePrintPutPos.Bottom; + } + else if (PrintPositionData == "7" || + PrintPositionData == "8" || + PrintPositionData == "9") + { + return ePrintPutPos.Top; + } + else if (PrintPositionData == "4") //왼쪽 + { + if (ReelSize == eCartSize.Inch7) + return ePrintPutPos.Top; + else + return ePrintPutPos.Middle; + } + else if (PrintPositionData == "6") //오른쪽 + { + if (ReelSize == eCartSize.Inch7) + return ePrintPutPos.Top; + else + return ePrintPutPos.Middle; + } + else return ePrintPutPos.None; + + } + //public string LabelPos { get; set; } + //public Boolean PrintForce { get; set; } + + public eCartSize ReelSize { get; set; } + + public string QTY2 { get; set; } //바코드수량 + public string SID2 { get; set; } //바코드 + public string RID2 { get; set; } //바코드 + public string VLOT2 { get; set; } + public string VNAME2 { get; set; } + public string MFGDATE2 { get; set; } + public string PARTNO2 { get; set; } + + + + public System.Drawing.Color GetColorByBarcodeCount(int idx) + { + if (QRPositionData[idx] > 0) return Color.Gold; //QR데이터가있다면 금색으로 한다 + + var Cnt = LabelPositionData[idx]; + if (Cnt == MaxBarcodePosData) return Color.Purple; + else if (Cnt == 0) return Color.FromArgb(32, 32, 32); + { + //나머진 숫자별로 데이터를 표시한다 ( + var GValue = Cnt * 10; + if (GValue > 255) GValue = 255; + return Color.FromArgb(32, 32, GValue); + } + + } + public Boolean isMaxBarcodePosition(int idx) + { + return LabelPositionData[idx] == MaxBarcodePosData; + } + + public byte[] QRPositionData { get; private set; } + public byte[] LabelPositionData { get; private set; } + + /// + /// keyence barcodeparse 같은데에서 분석한 자료를 이곳에 추가합니다. + /// 이 데이터는 SPS에서 처리완료됩니다. + /// + public ConcurrentDictionary barcodelist; + + /// + /// keyence 로 부터 신규 바코드가 업데이트되었다 + /// + public Boolean BarcodeTouched = false; + + public event PropertyChangedEventHandler PropertyChanged; + + //리더기로부터 읽은 자료 모두가 들어잇다 + //public List barcodelist + //{ + // get { return _barcodelist; } + // set + // { + // this._barcodelist = value; + // UpdateBarcodePositionData(); + // } + //} + + + + public byte MaxBarcodePosData { get; private set; } + /// + /// 바코드목록을 이용해서 라벨위치 분포값을 변경합낟. + /// 해당 위치값은 labelposdata로 접근가능함 + /// + public void UpdateBarcodePositionData() + { + LabelPositionData[0] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 1).Count(); + LabelPositionData[1] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 2).Count(); + LabelPositionData[2] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 3).Count(); + + LabelPositionData[3] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 4).Count(); + LabelPositionData[4] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 6).Count(); + + LabelPositionData[5] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 7).Count(); + LabelPositionData[6] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 8).Count(); + LabelPositionData[7] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 9).Count(); + + QRPositionData[0] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 1 && t.Value.AmkorData.isValid).Count(); + QRPositionData[1] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 2 && t.Value.AmkorData.isValid).Count(); + QRPositionData[2] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 3 && t.Value.AmkorData.isValid).Count(); + + QRPositionData[3] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 4 && t.Value.AmkorData.isValid).Count(); + QRPositionData[4] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 6 && t.Value.AmkorData.isValid).Count(); + + QRPositionData[5] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 7 && t.Value.AmkorData.isValid).Count(); + QRPositionData[6] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 8 && t.Value.AmkorData.isValid).Count(); + QRPositionData[7] = (byte)barcodelist.Where(t => t.Value.LabelPosition == 9 && t.Value.AmkorData.isValid).Count(); + + MaxBarcodePosData = LabelPositionData.Max(t => t); + } + + /// + /// Data1(인쇄전 인식데이터) 과 Data2(QR)가 동일한지 비교합니다. + /// + public Boolean MatchValidation + { + get + { + if (PARTNO == null) this.PARTNO = string.Empty; + if (PARTNO2 == null) this.PARTNO2 = string.Empty; + if (QTY == null) QTY = string.Empty; + if (QTY2 == null) QTY2 = string.Empty; + if (SID == null) SID = string.Empty; + if (SID2 == null) SID2 = string.Empty; + if (VLOT == null) VLOT = string.Empty; + if (VLOT2 == null) VLOT2 = string.Empty; + if (PARTNO == null) PARTNO = string.Empty; + if (PARTNO2 == null) PARTNO2 = string.Empty; + + if (QTY.Equals(QTY2) == false) + { + PUB.log.AddE(string.Format("QR Validation Failed Quantity:{0} != {1}", QTY, QTY2)); + return false; + } + if (RID.Equals(RID2) == false) + { + PUB.log.AddE(string.Format("QR Validation Failed RID:{0} != {1}", RID, RID2)); + return false; + } + if (VLOT.Equals(VLOT2) == false) + { + PUB.log.AddE(string.Format("QR Validation Failed VLOT:{0} != {1}", VLOT, VLOT2)); + return false; + } + if (PARTNO.Equals(PARTNO2) == false) + { + PUB.log.AddE(string.Format("QR Validation Failed PARTNO:{0} != {1}", PARTNO, PARTNO2)); + return false; + } + if (SID.Equals(SID2) == false) + { + PUB.log.AddE(string.Format("QR Validation Failed SID:{0} != {1}", SID, SID2)); + return false; + } + + return true; + } + } + + public string QRInputRaw { get; set; } //입력에 사용한 RAW + public string QROutRaw { get; set; } //부착된 QR코드의 값 + public string ZPL { get; set; } //출력시 사용한 ZPL + public string PrintQRData { get; set; } //출력시 사용한 ZPL에 포함된 QR데이터 + public string LastQueryStringSID = string.Empty; + public string LastQueryStringWMS = string.Empty; + public string LastQueryStringCNV = string.Empty; + public string LastQueryStringJOB = string.Empty; + + public VisionData(string reason) + { + Clear(reason, false); + } + public Boolean isEmpty() + { + return RID.isEmpty(); + } + public void Clear(string reason, Boolean timeBackup) + { + LastQueryStringSID = string.Empty; + LastQueryStringWMS = string.Empty; + LastQueryStringCNV = string.Empty; + LastQueryStringJOB = string.Empty; + RetryLoader = 0; + ApplyOffset = false; + var baktime = new DateTime(1982, 11, 23); + if (timeBackup) baktime = this.STime; + bcdMessage = new Dictionary(); + + PositionAngle = 0; + HASHEADER = false; + CUSTCODE = string.Empty; + CUSTNAME = string.Empty; + RID0 = string.Empty; + RIDNew = false; + LightOn = false; + //SCODE = string.Empty; + ValidSkipbyUser = false; + NeedCylinderForward = false; + ApplyAngle = 0; + MaxBarcodePosData = 0; + PrintPositionCheck = false; + LabelPositionData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; + QRPositionData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; + ReelSize = eCartSize.None; + // PrintForce = false; + ConfirmAuto = false; + ConfirmUser = false; + ConfirmBypass = false; + + ServerUpdate = false; + PrintPositionData = ""; + //LabelPos = ""; + if (barcodelist != null) barcodelist.Clear(); + else barcodelist = new ConcurrentDictionary(); + + QRInputRaw = string.Empty; + QROutRaw = string.Empty; + ZPL = string.Empty; + PrintQRData = string.Empty; + + STime = baktime;// DateTime.Parse("1982-11-23"); + ETime = DateTime.Parse("1982-11-23"); + GTime = DateTime.Parse("1982-11-23"); + Complete = false; + //Angle = 0.0; + //AngleQR = false; + //AngleSTD = false; + MCN = string.Empty; + Target = string.Empty; + Ready = false; + QTY0 = string.Empty; + QTY = string.Empty;// string.Empty; + QTYRQ = false; + //PUB.log.AddI($"비젼개체 CLEAR 로 RQ 상태 초기화(false)"); + + BATCH = string.Empty; + QTYMAX = string.Empty; + + SID0 = string.Empty; + SID = string.Empty; + //RID = string.Empty; + SetRID(string.Empty, reason); + VLOT = string.Empty; + MFGDATE = string.Empty; + VNAME = string.Empty; + PARTNO = string.Empty; + + QTY2 = "0";// string.Empty; + SID2 = string.Empty; + RID2 = string.Empty; + VLOT2 = string.Empty; + MFGDATE2 = string.Empty; + VNAME2 = string.Empty; + PARTNO2 = string.Empty; + + FileNameL = string.Empty; + FileNameU = string.Empty; + + MFGDATE_Trust = false; + PARTNO_Trust = false; + QTY_Trust = false; + SID_Trust = false; + RID_Trust = false; + VLOT_Trust = false; + VNAME_Trust = false; + + BarcodeTouched = false; + MCN = string.Empty; + Target = string.Empty; + + PUB.log.Add($"Vision Data Deleted ({reason})"); + } + + public void CopyTo(ref VisionData obj) + { + //바코드메세지 복사 + obj.bcdMessage = new Dictionary(); + foreach (var item in this.bcdMessage) + obj.bcdMessage.Add(item.Key, item.Value); + + obj.ApplyOffset = this.ApplyOffset; + obj.ConfirmAuto = this.ConfirmAuto; + obj.ConfirmUser = this.ConfirmUser; + obj.CUSTCODE = this.CUSTCODE; + obj.CUSTNAME = this.CUSTNAME; + obj.LightOn = this.LightOn; + + //obj.SCODE = this.SCODE; + obj.ValidSkipbyUser = this.ValidSkipbyUser; + obj.NeedCylinderForward = this.NeedCylinderForward; //210207 + obj.ApplyAngle = this.ApplyAngle; //210207 + obj.STime = this.STime; + obj.ETime = this.ETime; + obj.GTime = this.GTime; + obj.FileNameL = this.FileNameL; + obj.FileNameU = this.FileNameU; + obj.Complete = this.Complete; + //obj.Angle = this.Angle; + //obj.AngleQR = this.AngleQR; + //obj.AngleSTD = this.AngleSTD; + obj.BATCH = this.BATCH; + obj.QTYMAX = this.QTYMAX; + obj.Ready = this.Ready; + obj.QTY = this.QTY; + obj.QTYRQ = this.QTYRQ; + obj.SID = this.SID; + obj.SID0 = this.SID0; //210331 + obj.SetRID(this.RID, "copy");// obj.RID = this.RID; + obj.RID0 = this.RID0; + obj.RIDNew = this.RIDNew; + obj.VLOT = this.VLOT; + obj.VNAME = this.VNAME; + obj.MFGDATE = this.MFGDATE; + obj.PARTNO = this.PARTNO; + obj.MCN = this.MCN; + obj.Target = this.Target; + + obj.QTY2 = this.QTY2; + obj.SID2 = this.SID2; + obj.RID2 = this.RID2; + obj.VLOT2 = this.VLOT2; + obj.VNAME2 = this.VNAME2; + obj.MFGDATE2 = this.MFGDATE; + obj.PARTNO2 = this.PARTNO2; + + obj.QRInputRaw = this.QRInputRaw; + obj.QROutRaw = this.QROutRaw; + obj.ZPL = this.ZPL; + obj.PrintQRData = this.PrintQRData; + obj.PrintPositionData = this.PrintPositionData; + //obj.PrintForce = this.PrintForce; + obj.ReelSize = this.ReelSize; + obj.PrintPositionCheck = this.PrintPositionCheck; + obj.BarcodeTouched = this.BarcodeTouched; + + //라벨위치값 복사 + for (int i = 0; i < obj.LabelPositionData.Length; i++) + obj.LabelPositionData[i] = this.LabelPositionData[i]; + for (int i = 0; i < obj.QRPositionData.Length; i++) + obj.QRPositionData[i] = this.QRPositionData[i]; + + //바코드 데이터를 복사해준다. + if (obj.barcodelist == null) + obj.barcodelist = new ConcurrentDictionary();// List(); + else + obj.barcodelist.Clear(); + + foreach (var item in this.barcodelist) + { + var bcd = item.Value; + var newitema = new KeyenceBarcodeData + { + Angle = bcd.Angle, + CenterPX = new Point(bcd.CenterPX.X, bcd.CenterPX.Y), + Data = bcd.Data, + LabelPosition = bcd.LabelPosition, + UserActive = bcd.UserActive, + barcodeSymbol = bcd.barcodeSymbol, + }; + + newitema.vertex = new Point[bcd.vertex.Length]; + bcd.vertex.CopyTo(newitema.vertex, 0); + + if (bcd.AmkorData != null) //231006 null error fix + bcd.AmkorData.CopyTo(newitema.AmkorData); + + obj.barcodelist.AddOrUpdate(item.Key, newitema, + (key, data) => + { + data.Angle = newitema.Angle; + data.CenterPX = newitema.CenterPX; + data.Data = newitema.Data; + data.LabelPosition = newitema.LabelPosition; + data.UserActive = newitema.UserActive; + data.barcodeSymbol = newitema.barcodeSymbol; + data.RegExConfirm = newitema.RegExConfirm; + return data; + }); + } + + + } + + public void UpdateTo(ref VisionData obj) + { + //바코드메세지 복사 + obj.bcdMessage = new Dictionary(); + foreach (var item in this.bcdMessage) + obj.bcdMessage.Add(item.Key, item.Value); + + obj.ApplyOffset = this.ApplyOffset; + obj.ConfirmAuto = this.ConfirmAuto; + obj.ConfirmUser = this.ConfirmUser; + obj.CUSTCODE = this.CUSTCODE; + obj.CUSTNAME = this.CUSTNAME; + obj.LightOn = this.LightOn; + + //obj.SCODE = this.SCODE; + obj.ValidSkipbyUser = this.ValidSkipbyUser; + obj.NeedCylinderForward = this.NeedCylinderForward; //210207 + obj.ApplyAngle = this.ApplyAngle; //210207 + obj.STime = this.STime; + obj.ETime = this.ETime; + obj.GTime = this.GTime; + obj.FileNameL = this.FileNameL; + obj.FileNameU = this.FileNameU; + obj.Complete = this.Complete; + //obj.Angle = this.Angle; + //obj.AngleQR = this.AngleQR; + //obj.AngleSTD = this.AngleSTD; + obj.Ready = this.Ready; + obj.QTY = this.QTY; + obj.QTYRQ = this.QTYRQ; + obj.SID = this.SID; + obj.SID0 = this.SID0; //210331 + obj.SetRID(this.RID, "copy");// obj.RID = this.RID; + obj.RID0 = this.RID0; + obj.RIDNew = this.RIDNew; + obj.VLOT = this.VLOT; + obj.VNAME = this.VNAME; + obj.MFGDATE = this.MFGDATE; + obj.PARTNO = this.PARTNO; + obj.MCN = this.MCN; + obj.Target = this.Target; + + obj.BATCH = this.BATCH; + obj.QTYMAX = this.QTYMAX; + obj.QTY2 = this.QTY2; + obj.SID2 = this.SID2; + obj.RID2 = this.RID2; + obj.VLOT2 = this.VLOT2; + obj.VNAME2 = this.VNAME2; + obj.MFGDATE2 = this.MFGDATE; + obj.PARTNO2 = this.PARTNO2; + + obj.QRInputRaw = this.QRInputRaw; + obj.QROutRaw = this.QROutRaw; + obj.ZPL = this.ZPL; + obj.PrintQRData = this.PrintQRData; + obj.PrintPositionData = this.PrintPositionData; + //obj.PrintForce = this.PrintForce; + obj.ReelSize = this.ReelSize; + obj.PrintPositionCheck = this.PrintPositionCheck; + obj.BarcodeTouched = this.BarcodeTouched; + + //라벨위치값 복사 + for (int i = 0; i < obj.LabelPositionData.Length; i++) + obj.LabelPositionData[i] = this.LabelPositionData[i]; + for (int i = 0; i < obj.QRPositionData.Length; i++) + obj.QRPositionData[i] = this.QRPositionData[i]; + + //바코드 데이터를 복사해준다. + if (obj.barcodelist == null) + obj.barcodelist = new ConcurrentDictionary();// List(); + else + obj.barcodelist.Clear(); + + foreach (var item in this.barcodelist) + { + var bcd = item.Value; + var newitema = new KeyenceBarcodeData + { + Angle = bcd.Angle, + CenterPX = new Point(bcd.CenterPX.X, bcd.CenterPX.Y), + Data = bcd.Data, + LabelPosition = bcd.LabelPosition, + UserActive = bcd.UserActive, + barcodeSymbol = bcd.barcodeSymbol, + }; + + newitema.vertex = new Point[bcd.vertex.Length]; + bcd.vertex.CopyTo(newitema.vertex, 0); + bcd.AmkorData.CopyTo(newitema.AmkorData); + obj.barcodelist.AddOrUpdate(item.Key, newitema, + (key, data) => + { + data.Angle = newitema.Angle; + data.CenterPX = newitema.CenterPX; + data.Data = newitema.Data; + data.LabelPosition = newitema.LabelPosition; + data.UserActive = newitema.UserActive; + data.barcodeSymbol = newitema.barcodeSymbol; + data.RegExConfirm = newitema.RegExConfirm; + return data; + }); + } + + + } + } +} diff --git a/Handler/Project/Class/sPositionData.cs b/Handler/Project/Class/sPositionData.cs new file mode 100644 index 0000000..5f21d3c --- /dev/null +++ b/Handler/Project/Class/sPositionData.cs @@ -0,0 +1,86 @@ +using System; + +namespace Project +{ + [Serializable] + public class sPositionData + { + public float inpositionrange { get; set; } + public short Axis; + public double Position { get; set; } + public double Acc; + public double _dcc; + public double Dcc + { + get + { + if (_dcc == 0) return Acc; + else return _dcc; + } + set + { + _dcc = value; + } + } + public double Speed; + public Boolean isError { get { return Speed == 0; } } + public string Message; + + public sPositionData(sPositionData baseData) + { + this.Clear(); + this.Position = baseData.Position; + this.Acc = baseData.Acc; + this.Dcc = baseData.Dcc; + this._dcc = baseData._dcc; + this.Speed = baseData.Speed; + this.Axis = baseData.Axis; + this.Message = baseData.Message; + this.inpositionrange = baseData.inpositionrange; + } + + public sPositionData Clone() + { + return new sPositionData + { + Position = this.Position, + Acc = this.Acc, + Dcc = this.Dcc, + //isError = this.isError, + Message = this.Message, + Speed = this.Speed, + _dcc = this.Dcc, + Axis = this.Axis, + inpositionrange = this.inpositionrange, + }; + } + + public sPositionData() + { + Clear(); + } + public sPositionData(double pos) + { + Clear(); + this.Position = pos; + } + + //public void SetPosition(double pos) { this.Position = pos; } + + public void Clear() + { + Axis = -1; + inpositionrange = 0f; + Position = 0; + Acc = 500; + _dcc = 0; + Speed = 0; + Message = "Not Set"; + } + public override string ToString() + { + return $"Pos:{Position},Spd:{Speed}"; + } + } + +} diff --git a/Handler/Project/DSList.Designer.cs b/Handler/Project/DSList.Designer.cs new file mode 100644 index 0000000..f71c32a --- /dev/null +++ b/Handler/Project/DSList.Designer.cs @@ -0,0 +1,2556 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace Project { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DSList")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DSList : global::System.Data.DataSet { + + private K4EE_Component_Reel_CustRuleDataTable tableK4EE_Component_Reel_CustRule; + + private SupplyDataTable tableSupply; + + private SIDConvertDataTable tableSIDConvert; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DSList() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DSList(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["K4EE_Component_Reel_CustRule"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_CustRuleDataTable(ds.Tables["K4EE_Component_Reel_CustRule"])); + } + if ((ds.Tables["Supply"] != null)) { + base.Tables.Add(new SupplyDataTable(ds.Tables["Supply"])); + } + if ((ds.Tables["SIDConvert"] != null)) { + base.Tables.Add(new SIDConvertDataTable(ds.Tables["SIDConvert"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_CustRuleDataTable K4EE_Component_Reel_CustRule { + get { + return this.tableK4EE_Component_Reel_CustRule; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public SupplyDataTable Supply { + get { + return this.tableSupply; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public SIDConvertDataTable SIDConvert { + get { + return this.tableSIDConvert; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + DSList cln = ((DSList)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["K4EE_Component_Reel_CustRule"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_CustRuleDataTable(ds.Tables["K4EE_Component_Reel_CustRule"])); + } + if ((ds.Tables["Supply"] != null)) { + base.Tables.Add(new SupplyDataTable(ds.Tables["Supply"])); + } + if ((ds.Tables["SIDConvert"] != null)) { + base.Tables.Add(new SIDConvertDataTable(ds.Tables["SIDConvert"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableK4EE_Component_Reel_CustRule = ((K4EE_Component_Reel_CustRuleDataTable)(base.Tables["K4EE_Component_Reel_CustRule"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_CustRule != null)) { + this.tableK4EE_Component_Reel_CustRule.InitVars(); + } + } + this.tableSupply = ((SupplyDataTable)(base.Tables["Supply"])); + if ((initTable == true)) { + if ((this.tableSupply != null)) { + this.tableSupply.InitVars(); + } + } + this.tableSIDConvert = ((SIDConvertDataTable)(base.Tables["SIDConvert"])); + if ((initTable == true)) { + if ((this.tableSIDConvert != null)) { + this.tableSIDConvert.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "DSList"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DSList.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableK4EE_Component_Reel_CustRule = new K4EE_Component_Reel_CustRuleDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_CustRule); + this.tableSupply = new SupplyDataTable(); + base.Tables.Add(this.tableSupply); + this.tableSIDConvert = new SIDConvertDataTable(); + base.Tables.Add(this.tableSIDConvert); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_CustRule() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeSupply() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeSIDConvert() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DSList ds = new DSList(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void K4EE_Component_Reel_CustRuleRowChangeEventHandler(object sender, K4EE_Component_Reel_CustRuleRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void SupplyRowChangeEventHandler(object sender, SupplyRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void SIDConvertRowChangeEventHandler(object sender, SIDConvertRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_CustRuleDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columncode; + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnMatchEx; + + private global::System.Data.DataColumn columnMatchIndex; + + private global::System.Data.DataColumn columnGroupIndex; + + private global::System.Data.DataColumn columnReplaceEx; + + private global::System.Data.DataColumn columnReplaceStr; + + private global::System.Data.DataColumn columnvarName; + + private global::System.Data.DataColumn columnRemark; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleDataTable() { + this.TableName = "K4EE_Component_Reel_CustRule"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal K4EE_Component_Reel_CustRuleDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected K4EE_Component_Reel_CustRuleDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn codeColumn { + get { + return this.columncode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MatchExColumn { + get { + return this.columnMatchEx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MatchIndexColumn { + get { + return this.columnMatchIndex; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn GroupIndexColumn { + get { + return this.columnGroupIndex; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ReplaceExColumn { + get { + return this.columnReplaceEx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ReplaceStrColumn { + get { + return this.columnReplaceStr; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn varNameColumn { + get { + return this.columnvarName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RemarkColumn { + get { + return this.columnRemark; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleRow this[int index] { + get { + return ((K4EE_Component_Reel_CustRuleRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_CustRuleRowChangeEventHandler K4EE_Component_Reel_CustRuleRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_CustRuleRowChangeEventHandler K4EE_Component_Reel_CustRuleRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_CustRuleRowChangeEventHandler K4EE_Component_Reel_CustRuleRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_CustRuleRowChangeEventHandler K4EE_Component_Reel_CustRuleRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddK4EE_Component_Reel_CustRuleRow(K4EE_Component_Reel_CustRuleRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleRow AddK4EE_Component_Reel_CustRuleRow(string code, string MatchEx, int MatchIndex, int GroupIndex, string ReplaceEx, string ReplaceStr, string varName, string Remark) { + K4EE_Component_Reel_CustRuleRow rowK4EE_Component_Reel_CustRuleRow = ((K4EE_Component_Reel_CustRuleRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + code, + null, + MatchEx, + MatchIndex, + GroupIndex, + ReplaceEx, + ReplaceStr, + varName, + Remark}; + rowK4EE_Component_Reel_CustRuleRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_CustRuleRow); + return rowK4EE_Component_Reel_CustRuleRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleRow FindBycode(string code) { + return ((K4EE_Component_Reel_CustRuleRow)(this.Rows.Find(new object[] { + code}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_CustRuleDataTable cln = ((K4EE_Component_Reel_CustRuleDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_CustRuleDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columncode = base.Columns["code"]; + this.columnidx = base.Columns["idx"]; + this.columnMatchEx = base.Columns["MatchEx"]; + this.columnMatchIndex = base.Columns["MatchIndex"]; + this.columnGroupIndex = base.Columns["GroupIndex"]; + this.columnReplaceEx = base.Columns["ReplaceEx"]; + this.columnReplaceStr = base.Columns["ReplaceStr"]; + this.columnvarName = base.Columns["varName"]; + this.columnRemark = base.Columns["Remark"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columncode = new global::System.Data.DataColumn("code", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columncode); + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnMatchEx = new global::System.Data.DataColumn("MatchEx", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMatchEx); + this.columnMatchIndex = new global::System.Data.DataColumn("MatchIndex", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMatchIndex); + this.columnGroupIndex = new global::System.Data.DataColumn("GroupIndex", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGroupIndex); + this.columnReplaceEx = new global::System.Data.DataColumn("ReplaceEx", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnReplaceEx); + this.columnReplaceStr = new global::System.Data.DataColumn("ReplaceStr", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnReplaceStr); + this.columnvarName = new global::System.Data.DataColumn("varName", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvarName); + this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRemark); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columncode}, true)); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint2", new global::System.Data.DataColumn[] { + this.columnidx}, false)); + this.columncode.AllowDBNull = false; + this.columncode.Unique = true; + this.columncode.MaxLength = 10; + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnMatchEx.MaxLength = 200; + this.columnReplaceEx.MaxLength = 200; + this.columnReplaceStr.MaxLength = 200; + this.columnvarName.MaxLength = 50; + this.columnRemark.MaxLength = 255; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleRow NewK4EE_Component_Reel_CustRuleRow() { + return ((K4EE_Component_Reel_CustRuleRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_CustRuleRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_CustRuleRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_CustRuleRowChanged != null)) { + this.K4EE_Component_Reel_CustRuleRowChanged(this, new K4EE_Component_Reel_CustRuleRowChangeEvent(((K4EE_Component_Reel_CustRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_CustRuleRowChanging != null)) { + this.K4EE_Component_Reel_CustRuleRowChanging(this, new K4EE_Component_Reel_CustRuleRowChangeEvent(((K4EE_Component_Reel_CustRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_CustRuleRowDeleted != null)) { + this.K4EE_Component_Reel_CustRuleRowDeleted(this, new K4EE_Component_Reel_CustRuleRowChangeEvent(((K4EE_Component_Reel_CustRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_CustRuleRowDeleting != null)) { + this.K4EE_Component_Reel_CustRuleRowDeleting(this, new K4EE_Component_Reel_CustRuleRowChangeEvent(((K4EE_Component_Reel_CustRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveK4EE_Component_Reel_CustRuleRow(K4EE_Component_Reel_CustRuleRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DSList ds = new DSList(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_CustRuleDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class SupplyDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnTITLE; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyDataTable() { + this.TableName = "Supply"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SupplyDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected SupplyDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TITLEColumn { + get { + return this.columnTITLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyRow this[int index] { + get { + return ((SupplyRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SupplyRowChangeEventHandler SupplyRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SupplyRowChangeEventHandler SupplyRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SupplyRowChangeEventHandler SupplyRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SupplyRowChangeEventHandler SupplyRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddSupplyRow(SupplyRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyRow AddSupplyRow(string TITLE) { + SupplyRow rowSupplyRow = ((SupplyRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + TITLE}; + rowSupplyRow.ItemArray = columnValuesArray; + this.Rows.Add(rowSupplyRow); + return rowSupplyRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyRow FindByTITLE(string TITLE) { + return ((SupplyRow)(this.Rows.Find(new object[] { + TITLE}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + SupplyDataTable cln = ((SupplyDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new SupplyDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnTITLE = base.Columns["TITLE"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnTITLE = new global::System.Data.DataColumn("TITLE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTITLE); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnTITLE}, true)); + this.columnTITLE.AllowDBNull = false; + this.columnTITLE.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyRow NewSupplyRow() { + return ((SupplyRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new SupplyRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(SupplyRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.SupplyRowChanged != null)) { + this.SupplyRowChanged(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.SupplyRowChanging != null)) { + this.SupplyRowChanging(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.SupplyRowDeleted != null)) { + this.SupplyRowDeleted(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.SupplyRowDeleting != null)) { + this.SupplyRowDeleting(this, new SupplyRowChangeEvent(((SupplyRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveSupplyRow(SupplyRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DSList ds = new DSList(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "SupplyDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class SIDConvertDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnSID101; + + private global::System.Data.DataColumn columnSID103; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertDataTable() { + this.TableName = "SIDConvert"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SIDConvertDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected SIDConvertDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SID101Column { + get { + return this.columnSID101; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SID103Column { + get { + return this.columnSID103; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertRow this[int index] { + get { + return ((SIDConvertRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SIDConvertRowChangeEventHandler SIDConvertRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SIDConvertRowChangeEventHandler SIDConvertRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SIDConvertRowChangeEventHandler SIDConvertRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event SIDConvertRowChangeEventHandler SIDConvertRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddSIDConvertRow(SIDConvertRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertRow AddSIDConvertRow(string SID101, string SID103) { + SIDConvertRow rowSIDConvertRow = ((SIDConvertRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + SID101, + SID103}; + rowSIDConvertRow.ItemArray = columnValuesArray; + this.Rows.Add(rowSIDConvertRow); + return rowSIDConvertRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertRow FindBySID101SID103(string SID101, string SID103) { + return ((SIDConvertRow)(this.Rows.Find(new object[] { + SID101, + SID103}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + SIDConvertDataTable cln = ((SIDConvertDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new SIDConvertDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnSID101 = base.Columns["SID101"]; + this.columnSID103 = base.Columns["SID103"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnSID101 = new global::System.Data.DataColumn("SID101", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID101); + this.columnSID103 = new global::System.Data.DataColumn("SID103", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID103); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnSID101, + this.columnSID103}, true)); + this.columnSID101.AllowDBNull = false; + this.columnSID103.AllowDBNull = false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertRow NewSIDConvertRow() { + return ((SIDConvertRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new SIDConvertRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(SIDConvertRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.SIDConvertRowChanged != null)) { + this.SIDConvertRowChanged(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.SIDConvertRowChanging != null)) { + this.SIDConvertRowChanging(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.SIDConvertRowDeleted != null)) { + this.SIDConvertRowDeleted(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.SIDConvertRowDeleting != null)) { + this.SIDConvertRowDeleting(this, new SIDConvertRowChangeEvent(((SIDConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveSIDConvertRow(SIDConvertRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DSList ds = new DSList(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "SIDConvertDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_CustRuleRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_CustRuleDataTable tableK4EE_Component_Reel_CustRule; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal K4EE_Component_Reel_CustRuleRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_CustRule = ((K4EE_Component_Reel_CustRuleDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string code { + get { + return ((string)(this[this.tableK4EE_Component_Reel_CustRule.codeColumn])); + } + set { + this[this.tableK4EE_Component_Reel_CustRule.codeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_CustRule.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_CustRule.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MatchEx { + get { + try { + return ((string)(this[this.tableK4EE_Component_Reel_CustRule.MatchExColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'MatchEx\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.MatchExColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int MatchIndex { + get { + try { + return ((int)(this[this.tableK4EE_Component_Reel_CustRule.MatchIndexColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'MatchIndex\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.MatchIndexColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int GroupIndex { + get { + try { + return ((int)(this[this.tableK4EE_Component_Reel_CustRule.GroupIndexColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'GroupIndex\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.GroupIndexColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ReplaceEx { + get { + try { + return ((string)(this[this.tableK4EE_Component_Reel_CustRule.ReplaceExColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'ReplaceEx\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.ReplaceExColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ReplaceStr { + get { + try { + return ((string)(this[this.tableK4EE_Component_Reel_CustRule.ReplaceStrColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'ReplaceStr\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.ReplaceStrColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string varName { + get { + try { + return ((string)(this[this.tableK4EE_Component_Reel_CustRule.varNameColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'varName\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.varNameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Remark { + get { + try { + return ((string)(this[this.tableK4EE_Component_Reel_CustRule.RemarkColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_CustRule\' 테이블의 \'Remark\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_CustRule.RemarkColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMatchExNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.MatchExColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMatchExNull() { + this[this.tableK4EE_Component_Reel_CustRule.MatchExColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMatchIndexNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.MatchIndexColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMatchIndexNull() { + this[this.tableK4EE_Component_Reel_CustRule.MatchIndexColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsGroupIndexNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.GroupIndexColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetGroupIndexNull() { + this[this.tableK4EE_Component_Reel_CustRule.GroupIndexColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsReplaceExNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.ReplaceExColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetReplaceExNull() { + this[this.tableK4EE_Component_Reel_CustRule.ReplaceExColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsReplaceStrNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.ReplaceStrColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetReplaceStrNull() { + this[this.tableK4EE_Component_Reel_CustRule.ReplaceStrColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsvarNameNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.varNameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetvarNameNull() { + this[this.tableK4EE_Component_Reel_CustRule.varNameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsRemarkNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustRule.RemarkColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetRemarkNull() { + this[this.tableK4EE_Component_Reel_CustRule.RemarkColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class SupplyRow : global::System.Data.DataRow { + + private SupplyDataTable tableSupply; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SupplyRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableSupply = ((SupplyDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string TITLE { + get { + return ((string)(this[this.tableSupply.TITLEColumn])); + } + set { + this[this.tableSupply.TITLEColumn] = value; + } + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class SIDConvertRow : global::System.Data.DataRow { + + private SIDConvertDataTable tableSIDConvert; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SIDConvertRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableSIDConvert = ((SIDConvertDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SID101 { + get { + return ((string)(this[this.tableSIDConvert.SID101Column])); + } + set { + this[this.tableSIDConvert.SID101Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SID103 { + get { + return ((string)(this[this.tableSIDConvert.SID103Column])); + } + set { + this[this.tableSIDConvert.SID103Column] = value; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class K4EE_Component_Reel_CustRuleRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_CustRuleRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleRowChangeEvent(K4EE_Component_Reel_CustRuleRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class SupplyRowChangeEvent : global::System.EventArgs { + + private SupplyRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyRowChangeEvent(SupplyRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SupplyRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class SIDConvertRowChangeEvent : global::System.EventArgs { + + private SIDConvertRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertRowChangeEvent(SIDConvertRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public SIDConvertRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} +namespace Project.DSListTableAdapters { + + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_CustRuleTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_CustRuleTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_CustRule"; + tableMapping.ColumnMappings.Add("code", "code"); + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("MatchEx", "MatchEx"); + tableMapping.ColumnMappings.Add("MatchIndex", "MatchIndex"); + tableMapping.ColumnMappings.Add("GroupIndex", "GroupIndex"); + tableMapping.ColumnMappings.Add("ReplaceEx", "ReplaceEx"); + tableMapping.ColumnMappings.Add("ReplaceStr", "ReplaceStr"); + tableMapping.ColumnMappings.Add("varName", "varName"); + tableMapping.ColumnMappings.Add("Remark", "Remark"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [K4EE_Component_Reel_CustRule] WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pre", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pre", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pos", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pos", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_len", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_exp", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_exp", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_CustRule] ([code], [MatchEx], [MatchIndex], [GroupIndex], [ReplaceEx], [ReplaceStr], [varName], [Remark]) VALUES (@code, @MatchEx, @MatchIndex, @GroupIndex, @ReplaceEx, @ReplaceStr, @varName, @Remark); +SELECT idx, code, MatchEx, MatchIndex, GroupIndex, ReplaceEx, ReplaceStr, varName, Remark FROM K4EE_Component_Reel_CustRule WHERE (idx = SCOPE_IDENTITY())"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MatchEx", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MatchEx", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MatchIndex", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MatchIndex", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@GroupIndex", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "GroupIndex", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ReplaceEx", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ReplaceEx", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ReplaceStr", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ReplaceStr", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@varName", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "varName", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [K4EE_Component_Reel_CustRule] SET [code] = @code, [pre] = @pre, [pos] = @pos, [len] = @len, [exp] = @exp WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp))); +SELECT code, pre, pos, len, exp FROM Component_Reel_CustRule WHERE (code = @code)"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@pre", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@pos", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@len", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@exp", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pre", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pre", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "pre", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_pos", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_pos", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "pos", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_len", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_len", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "len", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_exp", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_exp", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "exp", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT idx, code, MatchEx, MatchIndex, GroupIndex, ReplaceEx, ReplaceStr, varNam" + + "e, Remark\r\nFROM K4EE_Component_Reel_CustRule"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DSList.K4EE_Component_Reel_CustRuleDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DSList.K4EE_Component_Reel_CustRuleDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + DSList.K4EE_Component_Reel_CustRuleDataTable dataTable = new DSList.K4EE_Component_Reel_CustRuleDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DSList.K4EE_Component_Reel_CustRuleDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DSList dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_CustRule"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(string Original_code, object Original_pre, object Original_pos, object Original_len, object Original_exp) { + if ((Original_code == null)) { + throw new global::System.ArgumentNullException("Original_code"); + } + else { + this.Adapter.DeleteCommand.Parameters[0].Value = ((string)(Original_code)); + } + if ((Original_pre == null)) { + throw new global::System.ArgumentNullException("Original_pre"); + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(Original_pre)); + } + if ((Original_pos == null)) { + throw new global::System.ArgumentNullException("Original_pos"); + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(Original_pos)); + } + if ((Original_len == null)) { + throw new global::System.ArgumentNullException("Original_len"); + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(Original_len)); + } + if ((Original_exp == null)) { + throw new global::System.ArgumentNullException("Original_exp"); + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(Original_exp)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string code, string MatchEx, global::System.Nullable MatchIndex, global::System.Nullable GroupIndex, string ReplaceEx, string ReplaceStr, string varName, string Remark) { + if ((code == null)) { + throw new global::System.ArgumentNullException("code"); + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(code)); + } + if ((MatchEx == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(MatchEx)); + } + if ((MatchIndex.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[2].Value = ((int)(MatchIndex.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + if ((GroupIndex.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[3].Value = ((int)(GroupIndex.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((ReplaceEx == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(ReplaceEx)); + } + if ((ReplaceStr == null)) { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = ((string)(ReplaceStr)); + } + if ((varName == null)) { + this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[6].Value = ((string)(varName)); + } + if ((Remark == null)) { + this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[7].Value = ((string)(Remark)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string code, object pre, object pos, object len, object exp, string Original_code, object Original_pre, object Original_pos, object Original_len, object Original_exp) { + if ((code == null)) { + throw new global::System.ArgumentNullException("code"); + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(code)); + } + if ((pre == null)) { + throw new global::System.ArgumentNullException("pre"); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((object)(pre)); + } + if ((pos == null)) { + throw new global::System.ArgumentNullException("pos"); + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((object)(pos)); + } + if ((len == null)) { + throw new global::System.ArgumentNullException("len"); + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((object)(len)); + } + if ((exp == null)) { + throw new global::System.ArgumentNullException("exp"); + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = ((object)(exp)); + } + if ((Original_code == null)) { + throw new global::System.ArgumentNullException("Original_code"); + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(Original_code)); + } + if ((Original_pre == null)) { + throw new global::System.ArgumentNullException("Original_pre"); + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[7].Value = ((object)(Original_pre)); + } + if ((Original_pos == null)) { + throw new global::System.ArgumentNullException("Original_pos"); + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(Original_pos)); + } + if ((Original_len == null)) { + throw new global::System.ArgumentNullException("Original_len"); + } + else { + this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(Original_len)); + } + if ((Original_exp == null)) { + throw new global::System.ArgumentNullException("Original_exp"); + } + else { + this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(Original_exp)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(object pre, object pos, object len, object exp, string Original_code, object Original_pre, object Original_pos, object Original_len, object Original_exp) { + return this.Update(Original_code, pre, pos, len, exp, Original_code, Original_pre, Original_pos, Original_len, Original_exp); + } + } + + /// + ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" + + "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")] + public partial class TableAdapterManager : global::System.ComponentModel.Component { + + private UpdateOrderOption _updateOrder; + + private K4EE_Component_Reel_CustRuleTableAdapter _k4EE_Component_Reel_CustRuleTableAdapter; + + private bool _backupDataSetBeforeUpdate; + + private global::System.Data.IDbConnection _connection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public UpdateOrderOption UpdateOrder { + get { + return this._updateOrder; + } + set { + this._updateOrder = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_CustRuleTableAdapter K4EE_Component_Reel_CustRuleTableAdapter { + get { + return this._k4EE_Component_Reel_CustRuleTableAdapter; + } + set { + this._k4EE_Component_Reel_CustRuleTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool BackupDataSetBeforeUpdate { + get { + return this._backupDataSetBeforeUpdate; + } + set { + this._backupDataSetBeforeUpdate = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public global::System.Data.IDbConnection Connection { + get { + if ((this._connection != null)) { + return this._connection; + } + if (((this._k4EE_Component_Reel_CustRuleTableAdapter != null) + && (this._k4EE_Component_Reel_CustRuleTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_CustRuleTableAdapter.Connection; + } + return null; + } + set { + this._connection = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int TableAdapterInstanceCount { + get { + int count = 0; + if ((this._k4EE_Component_Reel_CustRuleTableAdapter != null)) { + count = (count + 1); + } + return count; + } + } + + /// + ///Update rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateUpdatedRows(DSList dataSet, global::System.Collections.Generic.List allChangedRows, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_CustRuleTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_CustRule.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_CustRuleTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + return result; + } + + /// + ///Insert rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateInsertedRows(DSList dataSet, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_CustRuleTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_CustRule.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_CustRuleTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + return result; + } + + /// + ///Delete rows in bottom-up order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateDeletedRows(DSList dataSet, global::System.Collections.Generic.List allChangedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_CustRuleTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_CustRule.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_CustRuleTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + return result; + } + + /// + ///Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List allAddedRows) { + if (((updatedRows == null) + || (updatedRows.Length < 1))) { + return updatedRows; + } + if (((allAddedRows == null) + || (allAddedRows.Count < 1))) { + return updatedRows; + } + global::System.Collections.Generic.List realUpdatedRows = new global::System.Collections.Generic.List(); + for (int i = 0; (i < updatedRows.Length); i = (i + 1)) { + global::System.Data.DataRow row = updatedRows[i]; + if ((allAddedRows.Contains(row) == false)) { + realUpdatedRows.Add(row); + } + } + return realUpdatedRows.ToArray(); + } + + /// + ///Update all changes to the dataset. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public virtual int UpdateAll(DSList dataSet) { + if ((dataSet == null)) { + throw new global::System.ArgumentNullException("dataSet"); + } + if ((dataSet.HasChanges() == false)) { + return 0; + } + if (((this._k4EE_Component_Reel_CustRuleTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_CustRuleTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + global::System.Data.IDbConnection workConnection = this.Connection; + if ((workConnection == null)) { + throw new global::System.ApplicationException("TableAdapterManager에 연결 정보가 없습니다. 각 TableAdapterManager TableAdapter 속성을 올바른 Tabl" + + "eAdapter 인스턴스로 설정하십시오."); + } + bool workConnOpened = false; + if (((workConnection.State & global::System.Data.ConnectionState.Broken) + == global::System.Data.ConnectionState.Broken)) { + workConnection.Close(); + } + if ((workConnection.State == global::System.Data.ConnectionState.Closed)) { + workConnection.Open(); + workConnOpened = true; + } + global::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction(); + if ((workTransaction == null)) { + throw new global::System.ApplicationException("트랜잭션을 시작할 수 없습니다. 현재 데이터 연결에서 트랜잭션이 지원되지 않거나 현재 상태에서 트랜잭션을 시작할 수 없습니다."); + } + global::System.Collections.Generic.List allChangedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List allAddedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.Dictionary revertConnections = new global::System.Collections.Generic.Dictionary(); + int result = 0; + global::System.Data.DataSet backupDataSet = null; + if (this.BackupDataSetBeforeUpdate) { + backupDataSet = new global::System.Data.DataSet(); + backupDataSet.Merge(dataSet); + } + try { + // ---- Prepare for update ----------- + // + if ((this._k4EE_Component_Reel_CustRuleTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_CustRuleTableAdapter, this._k4EE_Component_Reel_CustRuleTableAdapter.Connection); + this._k4EE_Component_Reel_CustRuleTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_CustRuleTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_CustRuleTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_CustRuleTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_CustRuleTableAdapter.Adapter); + } + } + // + //---- Perform updates ----------- + // + if ((this.UpdateOrder == UpdateOrderOption.UpdateInsertDelete)) { + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + } + else { + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + } + result = (result + this.UpdateDeletedRows(dataSet, allChangedRows)); + // + //---- Commit updates ----------- + // + workTransaction.Commit(); + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + if ((0 < allChangedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allChangedRows.Count]; + allChangedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + } + catch (global::System.Exception ex) { + workTransaction.Rollback(); + // ---- Restore the dataset ----------- + if (this.BackupDataSetBeforeUpdate) { + global::System.Diagnostics.Debug.Assert((backupDataSet != null)); + dataSet.Clear(); + dataSet.Merge(backupDataSet); + } + else { + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + row.SetAdded(); + } + } + } + throw ex; + } + finally { + if (workConnOpened) { + workConnection.Close(); + } + if ((this._k4EE_Component_Reel_CustRuleTableAdapter != null)) { + this._k4EE_Component_Reel_CustRuleTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_CustRuleTableAdapter])); + this._k4EE_Component_Reel_CustRuleTableAdapter.Transaction = null; + } + if ((0 < adaptersWithAcceptChangesDuringUpdate.Count)) { + global::System.Data.Common.DataAdapter[] adapters = new System.Data.Common.DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count]; + adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters); + for (int i = 0; (i < adapters.Length); i = (i + 1)) { + global::System.Data.Common.DataAdapter adapter = adapters[i]; + adapter.AcceptChangesDuringUpdate = true; + } + } + } + return result; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual void SortSelfReferenceRows(global::System.Data.DataRow[] rows, global::System.Data.DataRelation relation, bool childFirst) { + global::System.Array.Sort(rows, new SelfReferenceComparer(relation, childFirst)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual bool MatchTableAdapterConnection(global::System.Data.IDbConnection inputConnection) { + if ((this._connection != null)) { + return true; + } + if (((this.Connection == null) + || (inputConnection == null))) { + return true; + } + if (string.Equals(this.Connection.ConnectionString, inputConnection.ConnectionString, global::System.StringComparison.Ordinal)) { + return true; + } + return false; + } + + /// + ///Update Order Option + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public enum UpdateOrderOption { + + InsertUpdateDelete = 0, + + UpdateInsertDelete = 1, + } + + /// + ///Used to sort self-referenced table's rows + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private class SelfReferenceComparer : object, global::System.Collections.Generic.IComparer { + + private global::System.Data.DataRelation _relation; + + private int _childFirst; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SelfReferenceComparer(global::System.Data.DataRelation relation, bool childFirst) { + this._relation = relation; + if (childFirst) { + this._childFirst = -1; + } + else { + this._childFirst = 1; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow GetRoot(global::System.Data.DataRow row, out int distance) { + global::System.Diagnostics.Debug.Assert((row != null)); + global::System.Data.DataRow root = row; + distance = 0; + + global::System.Collections.Generic.IDictionary traversedRows = new global::System.Collections.Generic.Dictionary(); + traversedRows[row] = row; + + global::System.Data.DataRow parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + } + + if ((distance == 0)) { + traversedRows.Clear(); + traversedRows[row] = row; + parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + } + } + + return root; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int Compare(global::System.Data.DataRow row1, global::System.Data.DataRow row2) { + if (object.ReferenceEquals(row1, row2)) { + return 0; + } + if ((row1 == null)) { + return -1; + } + if ((row2 == null)) { + return 1; + } + + int distance1 = 0; + global::System.Data.DataRow root1 = this.GetRoot(row1, out distance1); + + int distance2 = 0; + global::System.Data.DataRow root2 = this.GetRoot(row2, out distance2); + + if (object.ReferenceEquals(root1, root2)) { + return (this._childFirst * distance1.CompareTo(distance2)); + } + else { + global::System.Diagnostics.Debug.Assert(((root1.Table != null) + && (root2.Table != null))); + if ((root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2))) { + return -1; + } + else { + return 1; + } + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Handler/Project/DSList.cs b/Handler/Project/DSList.cs new file mode 100644 index 0000000..c5e49fa --- /dev/null +++ b/Handler/Project/DSList.cs @@ -0,0 +1,8 @@ +namespace Project +{ + + + partial class DSList + { + } +} diff --git a/Handler/Project/DSList.xsc b/Handler/Project/DSList.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Handler/Project/DSList.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Handler/Project/DSList.xsd b/Handler/Project/DSList.xsd new file mode 100644 index 0000000..f064f55 --- /dev/null +++ b/Handler/Project/DSList.xsd @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_CustRule] WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp))) + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_CustRule] ([code], [MatchEx], [MatchIndex], [GroupIndex], [ReplaceEx], [ReplaceStr], [varName], [Remark]) VALUES (@code, @MatchEx, @MatchIndex, @GroupIndex, @ReplaceEx, @ReplaceStr, @varName, @Remark); +SELECT idx, code, MatchEx, MatchIndex, GroupIndex, ReplaceEx, ReplaceStr, varName, Remark FROM K4EE_Component_Reel_CustRule WHERE (idx = SCOPE_IDENTITY()) + + + + + + + + + + + + + + + SELECT idx, code, MatchEx, MatchIndex, GroupIndex, ReplaceEx, ReplaceStr, varName, Remark +FROM K4EE_Component_Reel_CustRule + + + + + + UPDATE [K4EE_Component_Reel_CustRule] SET [code] = @code, [pre] = @pre, [pos] = @pos, [len] = @len, [exp] = @exp WHERE (([code] = @Original_code) AND ((@IsNull_pre = 1 AND [pre] IS NULL) OR ([pre] = @Original_pre)) AND ((@IsNull_pos = 1 AND [pos] IS NULL) OR ([pos] = @Original_pos)) AND ((@IsNull_len = 1 AND [len] IS NULL) OR ([len] = @Original_len)) AND ((@IsNull_exp = 1 AND [exp] IS NULL) OR ([exp] = @Original_exp))); +SELECT code, pre, pos, len, exp FROM K4EE_Component_Reel_CustRule WHERE (code = @code) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/DSList.xss b/Handler/Project/DSList.xss new file mode 100644 index 0000000..f63b230 --- /dev/null +++ b/Handler/Project/DSList.xss @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/DSSetup.Designer.cs b/Handler/Project/DSSetup.Designer.cs new file mode 100644 index 0000000..edb2945 --- /dev/null +++ b/Handler/Project/DSSetup.Designer.cs @@ -0,0 +1,1099 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace Project { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DSSetup")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DSSetup : global::System.Data.DataSet { + + private MotionParamDataTable tableMotionParam; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DSSetup() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DSSetup(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["MotionParam"] != null)) { + base.Tables.Add(new MotionParamDataTable(ds.Tables["MotionParam"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public MotionParamDataTable MotionParam { + get { + return this.tableMotionParam; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + DSSetup cln = ((DSSetup)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["MotionParam"] != null)) { + base.Tables.Add(new MotionParamDataTable(ds.Tables["MotionParam"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableMotionParam = ((MotionParamDataTable)(base.Tables["MotionParam"])); + if ((initTable == true)) { + if ((this.tableMotionParam != null)) { + this.tableMotionParam.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "DSSetup"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DSSetup.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableMotionParam = new MotionParamDataTable(); + base.Tables.Add(this.tableMotionParam); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeMotionParam() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DSSetup ds = new DSSetup(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void MotionParamRowChangeEventHandler(object sender, MotionParamRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class MotionParamDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnEnable; + + private global::System.Data.DataColumn columnUseOrigin; + + private global::System.Data.DataColumn columnUseEStop; + + private global::System.Data.DataColumn columnHomeAcc; + + private global::System.Data.DataColumn columnHomeDcc; + + private global::System.Data.DataColumn columnHomeHigh; + + private global::System.Data.DataColumn columnHomeLow; + + private global::System.Data.DataColumn columnSWLimitP; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnInpositionAccr; + + private global::System.Data.DataColumn columnMaxSpeed; + + private global::System.Data.DataColumn columnMaxAcc; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamDataTable() { + this.TableName = "MotionParam"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal MotionParamDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected MotionParamDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn EnableColumn { + get { + return this.columnEnable; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn UseOriginColumn { + get { + return this.columnUseOrigin; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn UseEStopColumn { + get { + return this.columnUseEStop; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn HomeAccColumn { + get { + return this.columnHomeAcc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn HomeDccColumn { + get { + return this.columnHomeDcc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn HomeHighColumn { + get { + return this.columnHomeHigh; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn HomeLowColumn { + get { + return this.columnHomeLow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SWLimitPColumn { + get { + return this.columnSWLimitP; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn InpositionAccrColumn { + get { + return this.columnInpositionAccr; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MaxSpeedColumn { + get { + return this.columnMaxSpeed; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MaxAccColumn { + get { + return this.columnMaxAcc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamRow this[int index] { + get { + return ((MotionParamRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event MotionParamRowChangeEventHandler MotionParamRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event MotionParamRowChangeEventHandler MotionParamRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event MotionParamRowChangeEventHandler MotionParamRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event MotionParamRowChangeEventHandler MotionParamRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddMotionParamRow(MotionParamRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamRow AddMotionParamRow(short idx, bool Enable, bool UseOrigin, bool UseEStop, double HomeAcc, double HomeDcc, double HomeHigh, double HomeLow, double SWLimitP, string Title, float InpositionAccr, double MaxSpeed, double MaxAcc) { + MotionParamRow rowMotionParamRow = ((MotionParamRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + idx, + Enable, + UseOrigin, + UseEStop, + HomeAcc, + HomeDcc, + HomeHigh, + HomeLow, + SWLimitP, + Title, + InpositionAccr, + MaxSpeed, + MaxAcc}; + rowMotionParamRow.ItemArray = columnValuesArray; + this.Rows.Add(rowMotionParamRow); + return rowMotionParamRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamRow FindByidx(short idx) { + return ((MotionParamRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + MotionParamDataTable cln = ((MotionParamDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new MotionParamDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnEnable = base.Columns["Enable"]; + this.columnUseOrigin = base.Columns["UseOrigin"]; + this.columnUseEStop = base.Columns["UseEStop"]; + this.columnHomeAcc = base.Columns["HomeAcc"]; + this.columnHomeDcc = base.Columns["HomeDcc"]; + this.columnHomeHigh = base.Columns["HomeHigh"]; + this.columnHomeLow = base.Columns["HomeLow"]; + this.columnSWLimitP = base.Columns["SWLimitP"]; + this.columnTitle = base.Columns["Title"]; + this.columnInpositionAccr = base.Columns["InpositionAccr"]; + this.columnMaxSpeed = base.Columns["MaxSpeed"]; + this.columnMaxAcc = base.Columns["MaxAcc"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnEnable = new global::System.Data.DataColumn("Enable", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnEnable); + this.columnUseOrigin = new global::System.Data.DataColumn("UseOrigin", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUseOrigin); + this.columnUseEStop = new global::System.Data.DataColumn("UseEStop", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnUseEStop); + this.columnHomeAcc = new global::System.Data.DataColumn("HomeAcc", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnHomeAcc); + this.columnHomeDcc = new global::System.Data.DataColumn("HomeDcc", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnHomeDcc); + this.columnHomeHigh = new global::System.Data.DataColumn("HomeHigh", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnHomeHigh); + this.columnHomeLow = new global::System.Data.DataColumn("HomeLow", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnHomeLow); + this.columnSWLimitP = new global::System.Data.DataColumn("SWLimitP", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSWLimitP); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnInpositionAccr = new global::System.Data.DataColumn("InpositionAccr", typeof(float), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnInpositionAccr); + this.columnMaxSpeed = new global::System.Data.DataColumn("MaxSpeed", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMaxSpeed); + this.columnMaxAcc = new global::System.Data.DataColumn("MaxAcc", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMaxAcc); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamRow NewMotionParamRow() { + return ((MotionParamRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new MotionParamRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(MotionParamRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.MotionParamRowChanged != null)) { + this.MotionParamRowChanged(this, new MotionParamRowChangeEvent(((MotionParamRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.MotionParamRowChanging != null)) { + this.MotionParamRowChanging(this, new MotionParamRowChangeEvent(((MotionParamRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.MotionParamRowDeleted != null)) { + this.MotionParamRowDeleted(this, new MotionParamRowChangeEvent(((MotionParamRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.MotionParamRowDeleting != null)) { + this.MotionParamRowDeleting(this, new MotionParamRowChangeEvent(((MotionParamRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveMotionParamRow(MotionParamRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DSSetup ds = new DSSetup(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "MotionParamDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class MotionParamRow : global::System.Data.DataRow { + + private MotionParamDataTable tableMotionParam; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal MotionParamRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableMotionParam = ((MotionParamDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public short idx { + get { + return ((short)(this[this.tableMotionParam.idxColumn])); + } + set { + this[this.tableMotionParam.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool Enable { + get { + if (this.IsEnableNull()) { + return true; + } + else { + return ((bool)(this[this.tableMotionParam.EnableColumn])); + } + } + set { + this[this.tableMotionParam.EnableColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool UseOrigin { + get { + if (this.IsUseOriginNull()) { + return true; + } + else { + return ((bool)(this[this.tableMotionParam.UseOriginColumn])); + } + } + set { + this[this.tableMotionParam.UseOriginColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool UseEStop { + get { + if (this.IsUseEStopNull()) { + return true; + } + else { + return ((bool)(this[this.tableMotionParam.UseEStopColumn])); + } + } + set { + this[this.tableMotionParam.UseEStopColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double HomeAcc { + get { + if (this.IsHomeAccNull()) { + return 100D; + } + else { + return ((double)(this[this.tableMotionParam.HomeAccColumn])); + } + } + set { + this[this.tableMotionParam.HomeAccColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double HomeDcc { + get { + if (this.IsHomeDccNull()) { + return 50D; + } + else { + return ((double)(this[this.tableMotionParam.HomeDccColumn])); + } + } + set { + this[this.tableMotionParam.HomeDccColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double HomeHigh { + get { + if (this.IsHomeHighNull()) { + return 100D; + } + else { + return ((double)(this[this.tableMotionParam.HomeHighColumn])); + } + } + set { + this[this.tableMotionParam.HomeHighColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double HomeLow { + get { + if (this.IsHomeLowNull()) { + return 50D; + } + else { + return ((double)(this[this.tableMotionParam.HomeLowColumn])); + } + } + set { + this[this.tableMotionParam.HomeLowColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double SWLimitP { + get { + if (this.IsSWLimitPNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMotionParam.SWLimitPColumn])); + } + } + set { + this[this.tableMotionParam.SWLimitPColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Title { + get { + if (this.IsTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMotionParam.TitleColumn])); + } + } + set { + this[this.tableMotionParam.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public float InpositionAccr { + get { + if (this.IsInpositionAccrNull()) { + return 0.1F; + } + else { + return ((float)(this[this.tableMotionParam.InpositionAccrColumn])); + } + } + set { + this[this.tableMotionParam.InpositionAccrColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double MaxSpeed { + get { + if (this.IsMaxSpeedNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMotionParam.MaxSpeedColumn])); + } + } + set { + this[this.tableMotionParam.MaxSpeedColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double MaxAcc { + get { + if (this.IsMaxAccNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMotionParam.MaxAccColumn])); + } + } + set { + this[this.tableMotionParam.MaxAccColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsEnableNull() { + return this.IsNull(this.tableMotionParam.EnableColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetEnableNull() { + this[this.tableMotionParam.EnableColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUseOriginNull() { + return this.IsNull(this.tableMotionParam.UseOriginColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUseOriginNull() { + this[this.tableMotionParam.UseOriginColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsUseEStopNull() { + return this.IsNull(this.tableMotionParam.UseEStopColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetUseEStopNull() { + this[this.tableMotionParam.UseEStopColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsHomeAccNull() { + return this.IsNull(this.tableMotionParam.HomeAccColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetHomeAccNull() { + this[this.tableMotionParam.HomeAccColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsHomeDccNull() { + return this.IsNull(this.tableMotionParam.HomeDccColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetHomeDccNull() { + this[this.tableMotionParam.HomeDccColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsHomeHighNull() { + return this.IsNull(this.tableMotionParam.HomeHighColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetHomeHighNull() { + this[this.tableMotionParam.HomeHighColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsHomeLowNull() { + return this.IsNull(this.tableMotionParam.HomeLowColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetHomeLowNull() { + this[this.tableMotionParam.HomeLowColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSWLimitPNull() { + return this.IsNull(this.tableMotionParam.SWLimitPColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSWLimitPNull() { + this[this.tableMotionParam.SWLimitPColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsTitleNull() { + return this.IsNull(this.tableMotionParam.TitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetTitleNull() { + this[this.tableMotionParam.TitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsInpositionAccrNull() { + return this.IsNull(this.tableMotionParam.InpositionAccrColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetInpositionAccrNull() { + this[this.tableMotionParam.InpositionAccrColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMaxSpeedNull() { + return this.IsNull(this.tableMotionParam.MaxSpeedColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMaxSpeedNull() { + this[this.tableMotionParam.MaxSpeedColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMaxAccNull() { + return this.IsNull(this.tableMotionParam.MaxAccColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMaxAccNull() { + this[this.tableMotionParam.MaxAccColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class MotionParamRowChangeEvent : global::System.EventArgs { + + private MotionParamRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamRowChangeEvent(MotionParamRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public MotionParamRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Handler/Project/DSSetup.xsc b/Handler/Project/DSSetup.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Handler/Project/DSSetup.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Handler/Project/DSSetup.xsd b/Handler/Project/DSSetup.xsd new file mode 100644 index 0000000..4540101 --- /dev/null +++ b/Handler/Project/DSSetup.xsd @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/DSSetup.xss b/Handler/Project/DSSetup.xss new file mode 100644 index 0000000..6457e81 --- /dev/null +++ b/Handler/Project/DSSetup.xss @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/DataSet1.cs b/Handler/Project/DataSet1.cs new file mode 100644 index 0000000..c8f4526 --- /dev/null +++ b/Handler/Project/DataSet1.cs @@ -0,0 +1,23 @@ +namespace Project +{ + + + public partial class DataSet1 + { + partial class ResultDataDataTable + { + } + + partial class OPModelDataTable + { + + } + } +} + +namespace Project.DataSet1TableAdapters { + + + public partial class K4EE_Component_Reel_RegExRuleTableAdapter { + } +} diff --git a/Handler/Project/DataSet1.xsc b/Handler/Project/DataSet1.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Handler/Project/DataSet1.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Handler/Project/DataSet1.xsd b/Handler/Project/DataSet1.xsd new file mode 100644 index 0000000..89993f3 --- /dev/null +++ b/Handler/Project/DataSet1.xsd @@ -0,0 +1,2009 @@ + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_Result] WHERE (([idx] = @Original_idx) AND ([STIME] = @Original_STIME) AND ((@IsNull_ETIME = 1 AND [ETIME] IS NULL) OR ([ETIME] = @Original_ETIME)) AND ((@IsNull_PDATE = 1 AND [PDATE] IS NULL) OR ([PDATE] = @Original_PDATE)) AND ((@IsNull_JTYPE = 1 AND [JTYPE] IS NULL) OR ([JTYPE] = @Original_JTYPE)) AND ((@IsNull_JGUID = 1 AND [JGUID] IS NULL) OR ([JGUID] = @Original_JGUID)) AND ((@IsNull_SID = 1 AND [SID] IS NULL) OR ([SID] = @Original_SID)) AND ((@IsNull_SID0 = 1 AND [SID0] IS NULL) OR ([SID0] = @Original_SID0)) AND ((@IsNull_RID = 1 AND [RID] IS NULL) OR ([RID] = @Original_RID)) AND ((@IsNull_RID0 = 1 AND [RID0] IS NULL) OR ([RID0] = @Original_RID0)) AND ((@IsNull_RSN = 1 AND [RSN] IS NULL) OR ([RSN] = @Original_RSN)) AND ((@IsNull_QR = 1 AND [QR] IS NULL) OR ([QR] = @Original_QR)) AND ((@IsNull_ZPL = 1 AND [ZPL] IS NULL) OR ([ZPL] = @Original_ZPL)) AND ((@IsNull_POS = 1 AND [POS] IS NULL) OR ([POS] = @Original_POS)) AND ((@IsNull_LOC = 1 AND [LOC] IS NULL) OR ([LOC] = @Original_LOC)) AND ((@IsNull_ANGLE = 1 AND [ANGLE] IS NULL) OR ([ANGLE] = @Original_ANGLE)) AND ((@IsNull_QTY = 1 AND [QTY] IS NULL) OR ([QTY] = @Original_QTY)) AND ((@IsNull_QTY0 = 1 AND [QTY0] IS NULL) OR ([QTY0] = @Original_QTY0)) AND ([wdate] = @Original_wdate) AND ((@IsNull_VNAME = 1 AND [VNAME] IS NULL) OR ([VNAME] = @Original_VNAME)) AND ((@IsNull_PRNATTACH = 1 AND [PRNATTACH] IS NULL) OR ([PRNATTACH] = @Original_PRNATTACH)) AND ((@IsNull_PRNVALID = 1 AND [PRNVALID] IS NULL) OR ([PRNVALID] = @Original_PRNVALID)) AND ((@IsNull_PTIME = 1 AND [PTIME] IS NULL) OR ([PTIME] = @Original_PTIME)) AND ((@IsNull_MFGDATE = 1 AND [MFGDATE] IS NULL) OR ([MFGDATE] = @Original_MFGDATE)) AND ((@IsNull_VLOT = 1 AND [VLOT] IS NULL) OR ([VLOT] = @Original_VLOT)) AND ((@IsNull_REMARK = 1 AND [REMARK] IS NULL) OR ([REMARK] = @Original_REMARK)) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ((@IsNull_PARTNO = 1 AND [PARTNO] IS NULL) OR ([PARTNO] = @Original_PARTNO)) AND ((@IsNull_CUSTCODE = 1 AND [CUSTCODE] IS NULL) OR ([CUSTCODE] = @Original_CUSTCODE)) AND ((@IsNull_ATIME = 1 AND [ATIME] IS NULL) OR ([ATIME] = @Original_ATIME)) AND ((@IsNull_BATCH = 1 AND [BATCH] IS NULL) OR ([BATCH] = @Original_BATCH)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax)) AND ((@IsNull_GUID = 1 AND [GUID] IS NULL) OR ([GUID] = @Original_GUID))) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_Result] ([STIME], [ETIME], [PDATE], [JTYPE], [JGUID], [SID], [SID0], [RID], [RID0], [RSN], [QR], [ZPL], [POS], [LOC], [ANGLE], [QTY], [QTY0], [wdate], [VNAME], [PRNATTACH], [PRNVALID], [PTIME], [MFGDATE], [VLOT], [REMARK], [MC], [PARTNO], [CUSTCODE], [ATIME], [BATCH], [qtymax], [GUID], [iNBOUND], [MCN], [target]) VALUES (@STIME, @ETIME, @PDATE, @JTYPE, @JGUID, @SID, @SID0, @RID, @RID0, @RSN, @QR, @ZPL, @POS, @LOC, @ANGLE, @QTY, @QTY0, @wdate, @VNAME, @PRNATTACH, @PRNVALID, @PTIME, @MFGDATE, @VLOT, @REMARK, @MC, @PARTNO, @CUSTCODE, @ATIME, @BATCH, @qtymax, @GUID, @iNBOUND, @MCN, @target) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, wdate, VNAME, PRNATTACH, PRNVALID, PTIME, MFGDATE, VLOT, REMARK, + MC, PARTNO, CUSTCODE, ATIME, BATCH, qtymax, GUID, iNBOUND, MCN, target +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(MC, '') = @mc) +ORDER BY wdate DESC, idx + + + + + + + + + + UPDATE K4EE_Component_Reel_Result +SET STIME = @STIME, ETIME = @ETIME, PDATE = @PDATE, JTYPE = @JTYPE, JGUID = @JGUID, SID = @SID, SID0 = @SID0, RID = @RID, RID0 = @RID0, RSN = @RSN, QR = @QR, + ZPL = @ZPL, POS = @POS, LOC = @LOC, ANGLE = @ANGLE, QTY = @QTY, QTY0 = @QTY0, wdate = @wdate, VNAME = @VNAME, PRNATTACH = @PRNATTACH, PRNVALID = @PRNVALID, + PTIME = @PTIME, MFGDATE = @MFGDATE, VLOT = @VLOT, REMARK = @REMARK, MC = @MC, PARTNO = @PARTNO, CUSTCODE = @CUSTCODE, ATIME = @ATIME, BATCH = @BATCH, + qtymax = @qtymax, GUID = @GUID, iNBOUND = @iNBOUND, MCN = @MCN +WHERE (STIME = @Original_STIME) AND (JGUID = @Original_JGUID) AND (GUID = @Original_GUID); +SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, wdate, VNAME, PRNATTACH, PRNVALID, PTIME, MFGDATE, VLOT, REMARK, MC, PARTNO, CUSTCODE, ATIME, BATCH, qtymax, GUID FROM K4EE_Component_Reel_Result WHERE (idx = @idx) ORDER BY wdate DESC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT TOP (50) ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, + RID0, RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(MC, '') = @mc) +ORDER BY wdate DESC + + + + + + + + + + + + SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (GUID = @guid) AND (ISNULL(MC, '') = @mc) AND (PRNATTACH = 1) AND (PRNVALID = 1) +ORDER BY wdate DESC + + + + + + + + + + + SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (JGUID = @jguid) + + + + + + + + + + SELECT TOP (1) ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, + RID0, RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (MC = @mc) AND (VLOT = @vlot) +ORDER BY wdate DESC + + + + + + + + + + + SELECT TOP (50) ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, + RID0, RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(MC, '') = @mc) +ORDER BY wdate DESC + + + + + + + + + + + + SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, wdate, VNAME, PRNATTACH, PRNVALID, PTIME, MFGDATE, VLOT, REMARK, + MC, PARTNO, CUSTCODE, ATIME, BATCH, qtymax, GUID, iNBOUND, MCN, target +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (MC = @mc) AND (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(QR, '') LIKE @search) +ORDER BY wdate DESC + + + + + + + + + + + + + SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (STIME BETWEEN @sd AND @ed) AND (MC = @mc) AND (ISNULL(PRNVALID, 0) = 1) AND (ISNULL(PRNATTACH, 0) = 1) +ORDER BY wdate DESC, idx + + + + + + + + + + + + SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (STIME BETWEEN @sd AND @ed) AND (MC = @mc) AND (ISNULL(PRNVALID, 0) = 1) AND (ISNULL(PRNATTACH, 0) = 1) AND (GUID = @guid) +ORDER BY wdate DESC, idx + + + + + + + + + + + + + SELECT COUNT(*) AS Expr1 +FROM K4EE_Component_Reel_Result with (nolock) +WHERE (iNBOUND = 'OK') AND (SID = @sid) AND (BATCH = @batch) AND (MC <> 'R0') + + + + + + + + + + + SELECT TOP (1) ISNULL(POS, '') AS Expr1 +FROM K4EE_Component_Reel_Result with (nolock) +WHERE (MC = @mc) AND (SID = @sid) AND (ISNULL(POS, '') <> '') +ORDER BY wdate DESC + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_RegExRule] WHERE (([Id] = @Original_Id) AND ((@IsNull_Seq = 1 AND [Seq] IS NULL) OR ([Seq] = @Original_Seq)) AND ((@IsNull_CustCode = 1 AND [CustCode] IS NULL) OR ([CustCode] = @Original_CustCode)) AND ((@IsNull_Description = 1 AND [Description] IS NULL) OR ([Description] = @Original_Description)) AND ((@IsNull_Symbol = 1 AND [Symbol] IS NULL) OR ([Symbol] = @Original_Symbol)) AND ((@IsNull_Groups = 1 AND [Groups] IS NULL) OR ([Groups] = @Original_Groups)) AND ((@IsNull_IsEnable = 1 AND [IsEnable] IS NULL) OR ([IsEnable] = @Original_IsEnable)) AND ((@IsNull_IsTrust = 1 AND [IsTrust] IS NULL) OR ([IsTrust] = @Original_IsTrust)) AND ((@IsNull_IsAmkStd = 1 AND [IsAmkStd] IS NULL) OR ([IsAmkStd] = @Original_IsAmkStd)) AND ((@IsNull_IsIgnore = 1 AND [IsIgnore] IS NULL) OR ([IsIgnore] = @Original_IsIgnore))) + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_RegExRule] ([Seq], [CustCode], [Description], [Symbol], [Groups], [IsEnable], [IsTrust], [IsAmkStd], [IsIgnore], [Pattern]) VALUES (@Seq, @CustCode, @Description, @Symbol, @Groups, @IsEnable, @IsTrust, @IsAmkStd, @IsIgnore, @Pattern); +SELECT Id, Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, IsAmkStd, IsIgnore, Pattern FROM K4EE_Component_Reel_RegExRule WHERE (Id = SCOPE_IDENTITY()) ORDER BY CustCode, Seq, Description + + + + + + + + + + + + + + + + + SELECT Id, Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, IsAmkStd, IsIgnore, Pattern +FROM K4EE_Component_Reel_RegExRule +WHERE (ISNULL(CustCode, '') LIKE @custcode) +ORDER BY CustCode, Seq, Description + + + + + + + + UPDATE [K4EE_Component_Reel_RegExRule] SET [Seq] = @Seq, [CustCode] = @CustCode, [Description] = @Description, [Symbol] = @Symbol, [Groups] = @Groups, [IsEnable] = @IsEnable, [IsTrust] = @IsTrust, [IsAmkStd] = @IsAmkStd, [IsIgnore] = @IsIgnore, [Pattern] = @Pattern WHERE (([Id] = @Original_Id) AND ((@IsNull_Seq = 1 AND [Seq] IS NULL) OR ([Seq] = @Original_Seq)) AND ((@IsNull_CustCode = 1 AND [CustCode] IS NULL) OR ([CustCode] = @Original_CustCode)) AND ((@IsNull_Description = 1 AND [Description] IS NULL) OR ([Description] = @Original_Description)) AND ((@IsNull_Symbol = 1 AND [Symbol] IS NULL) OR ([Symbol] = @Original_Symbol)) AND ((@IsNull_Groups = 1 AND [Groups] IS NULL) OR ([Groups] = @Original_Groups)) AND ((@IsNull_IsEnable = 1 AND [IsEnable] IS NULL) OR ([IsEnable] = @Original_IsEnable)) AND ((@IsNull_IsTrust = 1 AND [IsTrust] IS NULL) OR ([IsTrust] = @Original_IsTrust)) AND ((@IsNull_IsAmkStd = 1 AND [IsAmkStd] IS NULL) OR ([IsAmkStd] = @Original_IsAmkStd)) AND ((@IsNull_IsIgnore = 1 AND [IsIgnore] IS NULL) OR ([IsIgnore] = @Original_IsIgnore))); +SELECT Id, Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, IsAmkStd, IsIgnore, Pattern FROM K4EE_Component_Reel_RegExRule WHERE (Id = @Id) ORDER BY CustCode, Seq, Description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT COUNT(*) FROM K4EE_Component_Reel_RegExRule where custcode = @custcode and description=@desc + + + + + + + + + + + SELECT CustCode, Description, Groups, Id, IsAmkStd, IsEnable, IsIgnore, IsTrust, Pattern, Seq, Symbol FROM K4EE_Component_Reel_RegExRule ORDER BY CustCode, Seq, Description + + + + + + + + SELECT CustCode, Description, Groups, Id, IsAmkStd, IsEnable, IsIgnore, IsTrust, Pattern, Seq, Symbol FROM K4EE_Component_Reel_RegExRule WHERE (ISNULL(CustCode, '') = '') OR (ISNULL(CustCode, '') LIKE @custcode) ORDER BY CustCode, Seq, Description + + + + + + + + + + SELECT CustCode, Description, Groups, Id, IsAmkStd, IsEnable, IsIgnore, IsTrust, Pattern, Seq, Symbol FROM K4EE_Component_Reel_RegExRule WHERE (ISNULL(CustCode, '') LIKE @custcode) AND (ISNULL(IsIgnore, 0) = 1) ORDER BY CustCode, Seq, Description + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_SID_Convert] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate))) + + + + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_SID_Convert] ([MC], [Chk], [SIDFrom], [SIDTo], [Remark], [wdate]) VALUES (@MC, @Chk, @SIDFrom, @SIDTo, @Remark, @wdate); +SELECT idx, MC, Chk, SIDFrom, SIDTo, Remark, wdate FROM Component_Reel_SID_Convert WHERE (idx = SCOPE_IDENTITY()) ORDER BY SIDFrom + + + + + + + + + + + + + SELECT idx, MC, Chk, SIDFrom, SIDTo, Remark, wdate +FROM K4EE_Component_Reel_SID_Convert WITH (NOLOCK) +WHERE (ISNULL(SIDFrom, '') <> '') AND (ISNULL(SIDTo, '') <> '') AND (ISNULL(SIDFrom, '') <> ISNULL(SIDTo, '')) +ORDER BY SIDFrom + + + + + + UPDATE [K4EE_Component_Reel_SID_Convert] SET [MC] = @MC, [Chk] = @Chk, [SIDFrom] = @SIDFrom, [SIDTo] = @SIDTo, [Remark] = @Remark, [wdate] = @wdate WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate))); +SELECT idx, MC, Chk, SIDFrom, SIDTo, Remark, wdate FROM Component_Reel_SID_Convert WHERE (idx = @idx) ORDER BY SIDFrom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_SID_Information] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_batch = 1 AND [batch] IS NULL) OR ([batch] = @Original_batch)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax)) AND ((@IsNull_VenderLot = 1 AND [VenderLot] IS NULL) OR ([VenderLot] = @Original_VenderLot)) AND ((@IsNull_attach = 1 AND [attach] IS NULL) OR ([attach] = @Original_attach))) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_SID_Information] ([MC], [SID], [CustCode], [PartNo], [CustName], [VenderName], [Remark], [wdate], [batch], [qtymax], [VenderLot], [attach]) VALUES (@MC, @SID, @CustCode, @PartNo, @CustName, @VenderName, @Remark, @wdate, @batch, @qtymax, @VenderLot, @attach); +SELECT idx, MC, SID, CustCode, PartNo, CustName, VenderName, Remark, wdate, batch, qtymax, VenderLot, attach FROM Component_Reel_SID_Information WITH (NOLOCK) WHERE (idx = SCOPE_IDENTITY()) ORDER BY idx + + + + + + + + + + + + + + + + + + + SELECT idx, MC, SID, CustCode, PartNo, CustName, VenderName, Remark, wdate, batch, qtymax, VenderLot, attach +FROM K4EE_Component_Reel_SID_Information WITH (NOLOCK) +WHERE (MC = @mcname) +ORDER BY idx + + + + + + + + UPDATE [K4EE_Component_Reel_SID_Information] SET [MC] = @MC, [SID] = @SID, [CustCode] = @CustCode, [PartNo] = @PartNo, [CustName] = @CustName, [VenderName] = @VenderName, [Remark] = @Remark, [wdate] = @wdate, [batch] = @batch, [qtymax] = @qtymax, [VenderLot] = @VenderLot, [attach] = @attach WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_batch = 1 AND [batch] IS NULL) OR ([batch] = @Original_batch)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax)) AND ((@IsNull_VenderLot = 1 AND [VenderLot] IS NULL) OR ([VenderLot] = @Original_VenderLot)) AND ((@IsNull_attach = 1 AND [attach] IS NULL) OR ([attach] = @Original_attach))); +SELECT idx, MC, SID, CustCode, PartNo, CustName, VenderName, Remark, wdate, batch, qtymax, VenderLot, attach FROM Component_Reel_SID_Information WITH (NOLOCK) WHERE (idx = @idx) ORDER BY idx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM [Component_Reel_SID_Information] WHERE mc = @mcname + + + + + + + + DELETE FROM K4EE_Component_Reel_SID_Information +WHERE (MC = @mcname) + + + + + + + + + + SELECT CustCode, CustName, MC, PartNo, Remark, SID, VenderLot, VenderName, attach, batch, idx, qtymax, wdate +FROM K4EE_Component_Reel_SID_Information WITH (NOLOCK) +WHERE (MC = @mcname) AND (SID = @sid) + + + + + + + + + + + SELECT CustCode, CustName, MC, PartNo, Remark, SID, VenderLot, VenderName, attach, batch, idx, qtymax, wdate +FROM K4EE_Component_Reel_SID_Information WITH (NOLOCK) +WHERE (MC = @mcname) AND (SID = @sid) AND (ISNULL(CustCode, '') <> '') + + + + + + + + + + + insert into Component_Reel_SID_Information(mc,sid,custcode,partno,custname,vendername,venderlot,printposition,remark,mfg,qtymax,batch,wdate) +select 'IB',sid,custcode,partno,custname,vendername,venderlot,printposition,'disable ECS',mfg,qtymax,batch,wdate +from Component_Reel_SID_Information +where mc = @mcname + + + + + + + + INSERT INTO K4EE_Component_Reel_SID_Information + (MC, SID, CustCode, PartNo, CustName, VenderName, VenderLot, PrintPosition, Remark, MFG, qtymax, batch, wdate) +SELECT 'IB' AS Expr1, SID, CustCode, PartNo, CustName, VenderName, VenderLot, PrintPosition, 'disable ECS' AS Expr2, MFG, qtymax, batch, wdate +FROM K4EE_Component_Reel_SID_Information AS Component_Reel_SID_Information_1 +WHERE (MC = @mcname) + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_PreSet] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([Title] = @Original_Title) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_vOption = 1 AND [vOption] IS NULL) OR ([vOption] = @Original_vOption)) AND ((@IsNull_vJobInfo = 1 AND [vJobInfo] IS NULL) OR ([vJobInfo] = @Original_vJobInfo)) AND ((@IsNull_vSidInfo = 1 AND [vSidInfo] IS NULL) OR ([vSidInfo] = @Original_vSidInfo)) AND ((@IsNull_vServerWrite = 1 AND [vServerWrite] IS NULL) OR ([vServerWrite] = @Original_vServerWrite)) AND ((@IsNull_jobtype = 1 AND [jobtype] IS NULL) OR ([jobtype] = @Original_jobtype)) AND ((@IsNull_bypasssid = 1 AND [bypasssid] IS NULL) OR ([bypasssid] = @Original_bypasssid)) AND ((@IsNull_vWMSInfo = 1 AND [vWMSInfo] IS NULL) OR ([vWMSInfo] = @Original_vWMSInfo))) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_PreSet] ([MC], [Title], [Remark], [wdate], [vOption], [vJobInfo], [vSidInfo], [vServerWrite], [jobtype], [bypasssid], [vWMSInfo]) VALUES (@MC, @Title, @Remark, @wdate, @vOption, @vJobInfo, @vSidInfo, @vServerWrite, @jobtype, @bypasssid, @vWMSInfo); +SELECT idx, MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServerWrite, jobtype, bypasssid, vWMSInfo FROM K4EE_Component_Reel_PreSet WHERE (idx = SCOPE_IDENTITY()) + + + + + + + + + + + + + + + + + + SELECT idx, MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServerWrite, jobtype, bypasssid, vWMSInfo +FROM K4EE_Component_Reel_PreSet +WHERE (ISNULL(MC, '') = @mc) + + + + + + + + UPDATE [K4EE_Component_Reel_PreSet] SET [MC] = @MC, [Title] = @Title, [Remark] = @Remark, [wdate] = @wdate, [vOption] = @vOption, [vJobInfo] = @vJobInfo, [vSidInfo] = @vSidInfo, [vServerWrite] = @vServerWrite, [jobtype] = @jobtype, [bypasssid] = @bypasssid, [vWMSInfo] = @vWMSInfo WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([Title] = @Original_Title) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_vOption = 1 AND [vOption] IS NULL) OR ([vOption] = @Original_vOption)) AND ((@IsNull_vJobInfo = 1 AND [vJobInfo] IS NULL) OR ([vJobInfo] = @Original_vJobInfo)) AND ((@IsNull_vSidInfo = 1 AND [vSidInfo] IS NULL) OR ([vSidInfo] = @Original_vSidInfo)) AND ((@IsNull_vServerWrite = 1 AND [vServerWrite] IS NULL) OR ([vServerWrite] = @Original_vServerWrite)) AND ((@IsNull_jobtype = 1 AND [jobtype] IS NULL) OR ([jobtype] = @Original_jobtype)) AND ((@IsNull_bypasssid = 1 AND [bypasssid] IS NULL) OR ([bypasssid] = @Original_bypasssid)) AND ((@IsNull_vWMSInfo = 1 AND [vWMSInfo] IS NULL) OR ([vWMSInfo] = @Original_vWMSInfo))); +SELECT idx, MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServerWrite, jobtype, bypasssid, vWMSInfo FROM K4EE_Component_Reel_PreSet WHERE (idx = @idx) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_CustInfo] WHERE (([code] = @Original_code) AND ((@IsNull_name = 1 AND [name] IS NULL) OR ([name] = @Original_name))) + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_CustInfo] ([code], [name]) VALUES (@code, @name); +SELECT code, name FROM Component_Reel_CustInfo WHERE (code = @code) + + + + + + + + + SELECT code, name +FROM K4EE_Component_Reel_CustInfo WITH (NOLOCK) + + + + + + UPDATE [K4EE_Component_Reel_CustInfo] SET [code] = @code, [name] = @name WHERE (([code] = @Original_code) AND ((@IsNull_name = 1 AND [name] IS NULL) OR ([name] = @Original_name))); +SELECT code, name FROM Component_Reel_CustInfo WHERE (code = @code) + + + + + + + + + + + + + + + + + + + + + + SELECT PARTNO, VLOT, COUNT(*) AS QTY, SUM(QTY) / 1000 AS KPC +FROM K4EE_Component_Reel_Result +WHERE (ISNULL(MC, '') = @mc) AND (PRNATTACH = 1) AND (CONVERT(varchar(10), STIME, 120) BETWEEN @sd AND @ed) +GROUP BY PARTNO, VLOT +ORDER BY PARTNO, VLOT + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_Print_Information] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate))) + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_Print_Information] ([MC], [SID], [PrintPosition], [Remark], [wdate]) VALUES (@MC, @SID, @PrintPosition, @Remark, @wdate); +SELECT idx, MC, SID, PrintPosition, Remark, wdate FROM Component_Reel_Print_Information WHERE (idx = SCOPE_IDENTITY()) + + + + + + + + + + + + SELECT idx, MC, SID, PrintPosition, Remark, wdate +FROM K4EE_Component_Reel_Print_Information WITH (NOLOCK) +WHERE (MC = @mc) + + + + + + + + UPDATE [K4EE_Component_Reel_Print_Information] SET [MC] = @MC, [SID] = @SID, [PrintPosition] = @PrintPosition, [Remark] = @Remark, [wdate] = @wdate WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate))); +SELECT idx, MC, SID, PrintPosition, Remark, wdate FROM Component_Reel_Print_Information WHERE (idx = @idx) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT idx, MC, SID, PrintPosition, Remark, wdate +FROM K4EE_Component_Reel_Print_Information WITH (NOLOCK) +WHERE (MC = @mc) AND (SID = @sid) + + + + + + + + + + + + + + + SELECT CustCode +FROM K4EE_Component_Reel_SID_Information WITH (NOLOCK) +WHERE (MC = @mcname) +GROUP BY CustCode +ORDER BY CustCode + + + + + + + + + + + + + + + + + + SELECT CUST_CODE AS CustCode +FROM VW_GET_MAX_QTY_VENDOR_LOT WITH (NOLOCK) +WHERE (ISNULL(CUST_CODE, '') <> '') +GROUP BY CUST_CODE +ORDER BY CustCode + + + + + + + + + + + + + + + + SELECT ISNULL(name, '') AS Expr1 +FROM K4EE_Component_Reel_CustInfo WITH (nolock) +WHERE (code = @code) + + + + + + + + + + UPDATE K4EE_Component_Reel_CustInfo +SET name = @newname +WHERE (code = @custcode) + + + + + + + + + UPDATE [Component_Reel_CustInfo] set name = @newname +where code = @custcode + + + + + + + + + + + SELECT ISNULL(SID, '') AS Expr1 +FROM K4EE_Component_Reel_SID_Information with (nolock) +WHERE (CustCode = @custcode) AND (PartNo = @partno) + + + + + + + + + + + SELECT TOP (1) ISNULL(VLOT, '') AS Expr1 +FROM K4EE_Component_Reel_Result with (nolock) +WHERE (SID = @isd) +ORDER BY wdate DESC + + + + + + + + + + SELECT COUNT(*) AS Expr1 +FROM VW_GET_MAX_QTY_VENDOR_LOT WITH (nolock) +WHERE (SID = @sid) + + + + + + + + + + SELECT COUNT(*) AS Expr1 +FROM K4EE_Component_Reel_Result WITH (nolock) +WHERE (iNBOUND = 'OK') AND (STIME >= @stime) AND (SID = @sid) AND (BATCH = @batch) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/DataSet1.xss b/Handler/Project/DataSet1.xss new file mode 100644 index 0000000..a3593f5 --- /dev/null +++ b/Handler/Project/DataSet1.xss @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/DataSet11.Designer.cs b/Handler/Project/DataSet11.Designer.cs new file mode 100644 index 0000000..9651b04 --- /dev/null +++ b/Handler/Project/DataSet11.Designer.cs @@ -0,0 +1,22727 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace Project { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DataSet1")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DataSet1 : global::System.Data.DataSet { + + private K4EE_Component_Reel_ResultDataTable tableK4EE_Component_Reel_Result; + + private K4EE_Component_Reel_RegExRuleDataTable tableK4EE_Component_Reel_RegExRule; + + private K4EE_Component_Reel_SID_ConvertDataTable tableK4EE_Component_Reel_SID_Convert; + + private K4EE_Component_Reel_SID_InformationDataTable tableK4EE_Component_Reel_SID_Information; + + private K4EE_Component_Reel_PreSetDataTable tableK4EE_Component_Reel_PreSet; + + private K4EE_Component_Reel_CustInfoDataTable tableK4EE_Component_Reel_CustInfo; + + private ResultSummaryDataTable tableResultSummary; + + private K4EE_Component_Reel_Print_InformationDataTable tableK4EE_Component_Reel_Print_Information; + + private CustCodeListDataTable tableCustCodeList; + + private SidinfoCustGroupDataTable tableSidinfoCustGroup; + + private UsersDataTable tableUsers; + + private MCModelDataTable tableMCModel; + + private languageDataTable tablelanguage; + + private OPModelDataTable tableOPModel; + + private BCDDataDataTable tableBCDData; + + private UserSIDDataTable tableUserSID; + + private MailFormatDataTable tableMailFormat; + + private MailRecipientDataTable tableMailRecipient; + + private SIDHistoryDataTable tableSIDHistory; + + private InputDescriptionDataTable tableInputDescription; + + private OutputDescriptionDataTable tableOutputDescription; + + private UserTableDataTable tableUserTable; + + private ErrorDescriptionDataTable tableErrorDescription; + + private ModelListDataTable tableModelList; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public DataSet1() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected DataSet1(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["K4EE_Component_Reel_Result"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_ResultDataTable(ds.Tables["K4EE_Component_Reel_Result"])); + } + if ((ds.Tables["K4EE_Component_Reel_RegExRule"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_RegExRuleDataTable(ds.Tables["K4EE_Component_Reel_RegExRule"])); + } + if ((ds.Tables["K4EE_Component_Reel_SID_Convert"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_SID_ConvertDataTable(ds.Tables["K4EE_Component_Reel_SID_Convert"])); + } + if ((ds.Tables["K4EE_Component_Reel_SID_Information"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_SID_InformationDataTable(ds.Tables["K4EE_Component_Reel_SID_Information"])); + } + if ((ds.Tables["K4EE_Component_Reel_PreSet"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_PreSetDataTable(ds.Tables["K4EE_Component_Reel_PreSet"])); + } + if ((ds.Tables["K4EE_Component_Reel_CustInfo"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_CustInfoDataTable(ds.Tables["K4EE_Component_Reel_CustInfo"])); + } + if ((ds.Tables["ResultSummary"] != null)) { + base.Tables.Add(new ResultSummaryDataTable(ds.Tables["ResultSummary"])); + } + if ((ds.Tables["K4EE_Component_Reel_Print_Information"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_Print_InformationDataTable(ds.Tables["K4EE_Component_Reel_Print_Information"])); + } + if ((ds.Tables["CustCodeList"] != null)) { + base.Tables.Add(new CustCodeListDataTable(ds.Tables["CustCodeList"])); + } + if ((ds.Tables["SidinfoCustGroup"] != null)) { + base.Tables.Add(new SidinfoCustGroupDataTable(ds.Tables["SidinfoCustGroup"])); + } + if ((ds.Tables["Users"] != null)) { + base.Tables.Add(new UsersDataTable(ds.Tables["Users"])); + } + if ((ds.Tables["MCModel"] != null)) { + base.Tables.Add(new MCModelDataTable(ds.Tables["MCModel"])); + } + if ((ds.Tables["language"] != null)) { + base.Tables.Add(new languageDataTable(ds.Tables["language"])); + } + if ((ds.Tables["OPModel"] != null)) { + base.Tables.Add(new OPModelDataTable(ds.Tables["OPModel"])); + } + if ((ds.Tables["BCDData"] != null)) { + base.Tables.Add(new BCDDataDataTable(ds.Tables["BCDData"])); + } + if ((ds.Tables["UserSID"] != null)) { + base.Tables.Add(new UserSIDDataTable(ds.Tables["UserSID"])); + } + if ((ds.Tables["MailFormat"] != null)) { + base.Tables.Add(new MailFormatDataTable(ds.Tables["MailFormat"])); + } + if ((ds.Tables["MailRecipient"] != null)) { + base.Tables.Add(new MailRecipientDataTable(ds.Tables["MailRecipient"])); + } + if ((ds.Tables["SIDHistory"] != null)) { + base.Tables.Add(new SIDHistoryDataTable(ds.Tables["SIDHistory"])); + } + if ((ds.Tables["InputDescription"] != null)) { + base.Tables.Add(new InputDescriptionDataTable(ds.Tables["InputDescription"])); + } + if ((ds.Tables["OutputDescription"] != null)) { + base.Tables.Add(new OutputDescriptionDataTable(ds.Tables["OutputDescription"])); + } + if ((ds.Tables["UserTable"] != null)) { + base.Tables.Add(new UserTableDataTable(ds.Tables["UserTable"])); + } + if ((ds.Tables["ErrorDescription"] != null)) { + base.Tables.Add(new ErrorDescriptionDataTable(ds.Tables["ErrorDescription"])); + } + if ((ds.Tables["ModelList"] != null)) { + base.Tables.Add(new ModelListDataTable(ds.Tables["ModelList"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_ResultDataTable K4EE_Component_Reel_Result { + get { + return this.tableK4EE_Component_Reel_Result; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_RegExRuleDataTable K4EE_Component_Reel_RegExRule { + get { + return this.tableK4EE_Component_Reel_RegExRule; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_SID_ConvertDataTable K4EE_Component_Reel_SID_Convert { + get { + return this.tableK4EE_Component_Reel_SID_Convert; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_SID_InformationDataTable K4EE_Component_Reel_SID_Information { + get { + return this.tableK4EE_Component_Reel_SID_Information; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_PreSetDataTable K4EE_Component_Reel_PreSet { + get { + return this.tableK4EE_Component_Reel_PreSet; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_CustInfoDataTable K4EE_Component_Reel_CustInfo { + get { + return this.tableK4EE_Component_Reel_CustInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public ResultSummaryDataTable ResultSummary { + get { + return this.tableResultSummary; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_Print_InformationDataTable K4EE_Component_Reel_Print_Information { + get { + return this.tableK4EE_Component_Reel_Print_Information; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public CustCodeListDataTable CustCodeList { + get { + return this.tableCustCodeList; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public SidinfoCustGroupDataTable SidinfoCustGroup { + get { + return this.tableSidinfoCustGroup; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public UsersDataTable Users { + get { + return this.tableUsers; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public MCModelDataTable MCModel { + get { + return this.tableMCModel; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public languageDataTable language { + get { + return this.tablelanguage; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public OPModelDataTable OPModel { + get { + return this.tableOPModel; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public BCDDataDataTable BCDData { + get { + return this.tableBCDData; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public UserSIDDataTable UserSID { + get { + return this.tableUserSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public MailFormatDataTable MailFormat { + get { + return this.tableMailFormat; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public MailRecipientDataTable MailRecipient { + get { + return this.tableMailRecipient; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public SIDHistoryDataTable SIDHistory { + get { + return this.tableSIDHistory; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public InputDescriptionDataTable InputDescription { + get { + return this.tableInputDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public OutputDescriptionDataTable OutputDescription { + get { + return this.tableOutputDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public UserTableDataTable UserTable { + get { + return this.tableUserTable; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public ErrorDescriptionDataTable ErrorDescription { + get { + return this.tableErrorDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public ModelListDataTable ModelList { + get { + return this.tableModelList; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataSet Clone() { + DataSet1 cln = ((DataSet1)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["K4EE_Component_Reel_Result"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_ResultDataTable(ds.Tables["K4EE_Component_Reel_Result"])); + } + if ((ds.Tables["K4EE_Component_Reel_RegExRule"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_RegExRuleDataTable(ds.Tables["K4EE_Component_Reel_RegExRule"])); + } + if ((ds.Tables["K4EE_Component_Reel_SID_Convert"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_SID_ConvertDataTable(ds.Tables["K4EE_Component_Reel_SID_Convert"])); + } + if ((ds.Tables["K4EE_Component_Reel_SID_Information"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_SID_InformationDataTable(ds.Tables["K4EE_Component_Reel_SID_Information"])); + } + if ((ds.Tables["K4EE_Component_Reel_PreSet"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_PreSetDataTable(ds.Tables["K4EE_Component_Reel_PreSet"])); + } + if ((ds.Tables["K4EE_Component_Reel_CustInfo"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_CustInfoDataTable(ds.Tables["K4EE_Component_Reel_CustInfo"])); + } + if ((ds.Tables["ResultSummary"] != null)) { + base.Tables.Add(new ResultSummaryDataTable(ds.Tables["ResultSummary"])); + } + if ((ds.Tables["K4EE_Component_Reel_Print_Information"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_Print_InformationDataTable(ds.Tables["K4EE_Component_Reel_Print_Information"])); + } + if ((ds.Tables["CustCodeList"] != null)) { + base.Tables.Add(new CustCodeListDataTable(ds.Tables["CustCodeList"])); + } + if ((ds.Tables["SidinfoCustGroup"] != null)) { + base.Tables.Add(new SidinfoCustGroupDataTable(ds.Tables["SidinfoCustGroup"])); + } + if ((ds.Tables["Users"] != null)) { + base.Tables.Add(new UsersDataTable(ds.Tables["Users"])); + } + if ((ds.Tables["MCModel"] != null)) { + base.Tables.Add(new MCModelDataTable(ds.Tables["MCModel"])); + } + if ((ds.Tables["language"] != null)) { + base.Tables.Add(new languageDataTable(ds.Tables["language"])); + } + if ((ds.Tables["OPModel"] != null)) { + base.Tables.Add(new OPModelDataTable(ds.Tables["OPModel"])); + } + if ((ds.Tables["BCDData"] != null)) { + base.Tables.Add(new BCDDataDataTable(ds.Tables["BCDData"])); + } + if ((ds.Tables["UserSID"] != null)) { + base.Tables.Add(new UserSIDDataTable(ds.Tables["UserSID"])); + } + if ((ds.Tables["MailFormat"] != null)) { + base.Tables.Add(new MailFormatDataTable(ds.Tables["MailFormat"])); + } + if ((ds.Tables["MailRecipient"] != null)) { + base.Tables.Add(new MailRecipientDataTable(ds.Tables["MailRecipient"])); + } + if ((ds.Tables["SIDHistory"] != null)) { + base.Tables.Add(new SIDHistoryDataTable(ds.Tables["SIDHistory"])); + } + if ((ds.Tables["InputDescription"] != null)) { + base.Tables.Add(new InputDescriptionDataTable(ds.Tables["InputDescription"])); + } + if ((ds.Tables["OutputDescription"] != null)) { + base.Tables.Add(new OutputDescriptionDataTable(ds.Tables["OutputDescription"])); + } + if ((ds.Tables["UserTable"] != null)) { + base.Tables.Add(new UserTableDataTable(ds.Tables["UserTable"])); + } + if ((ds.Tables["ErrorDescription"] != null)) { + base.Tables.Add(new ErrorDescriptionDataTable(ds.Tables["ErrorDescription"])); + } + if ((ds.Tables["ModelList"] != null)) { + base.Tables.Add(new ModelListDataTable(ds.Tables["ModelList"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars(bool initTable) { + this.tableK4EE_Component_Reel_Result = ((K4EE_Component_Reel_ResultDataTable)(base.Tables["K4EE_Component_Reel_Result"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_Result != null)) { + this.tableK4EE_Component_Reel_Result.InitVars(); + } + } + this.tableK4EE_Component_Reel_RegExRule = ((K4EE_Component_Reel_RegExRuleDataTable)(base.Tables["K4EE_Component_Reel_RegExRule"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_RegExRule != null)) { + this.tableK4EE_Component_Reel_RegExRule.InitVars(); + } + } + this.tableK4EE_Component_Reel_SID_Convert = ((K4EE_Component_Reel_SID_ConvertDataTable)(base.Tables["K4EE_Component_Reel_SID_Convert"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_SID_Convert != null)) { + this.tableK4EE_Component_Reel_SID_Convert.InitVars(); + } + } + this.tableK4EE_Component_Reel_SID_Information = ((K4EE_Component_Reel_SID_InformationDataTable)(base.Tables["K4EE_Component_Reel_SID_Information"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_SID_Information != null)) { + this.tableK4EE_Component_Reel_SID_Information.InitVars(); + } + } + this.tableK4EE_Component_Reel_PreSet = ((K4EE_Component_Reel_PreSetDataTable)(base.Tables["K4EE_Component_Reel_PreSet"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_PreSet != null)) { + this.tableK4EE_Component_Reel_PreSet.InitVars(); + } + } + this.tableK4EE_Component_Reel_CustInfo = ((K4EE_Component_Reel_CustInfoDataTable)(base.Tables["K4EE_Component_Reel_CustInfo"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_CustInfo != null)) { + this.tableK4EE_Component_Reel_CustInfo.InitVars(); + } + } + this.tableResultSummary = ((ResultSummaryDataTable)(base.Tables["ResultSummary"])); + if ((initTable == true)) { + if ((this.tableResultSummary != null)) { + this.tableResultSummary.InitVars(); + } + } + this.tableK4EE_Component_Reel_Print_Information = ((K4EE_Component_Reel_Print_InformationDataTable)(base.Tables["K4EE_Component_Reel_Print_Information"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_Print_Information != null)) { + this.tableK4EE_Component_Reel_Print_Information.InitVars(); + } + } + this.tableCustCodeList = ((CustCodeListDataTable)(base.Tables["CustCodeList"])); + if ((initTable == true)) { + if ((this.tableCustCodeList != null)) { + this.tableCustCodeList.InitVars(); + } + } + this.tableSidinfoCustGroup = ((SidinfoCustGroupDataTable)(base.Tables["SidinfoCustGroup"])); + if ((initTable == true)) { + if ((this.tableSidinfoCustGroup != null)) { + this.tableSidinfoCustGroup.InitVars(); + } + } + this.tableUsers = ((UsersDataTable)(base.Tables["Users"])); + if ((initTable == true)) { + if ((this.tableUsers != null)) { + this.tableUsers.InitVars(); + } + } + this.tableMCModel = ((MCModelDataTable)(base.Tables["MCModel"])); + if ((initTable == true)) { + if ((this.tableMCModel != null)) { + this.tableMCModel.InitVars(); + } + } + this.tablelanguage = ((languageDataTable)(base.Tables["language"])); + if ((initTable == true)) { + if ((this.tablelanguage != null)) { + this.tablelanguage.InitVars(); + } + } + this.tableOPModel = ((OPModelDataTable)(base.Tables["OPModel"])); + if ((initTable == true)) { + if ((this.tableOPModel != null)) { + this.tableOPModel.InitVars(); + } + } + this.tableBCDData = ((BCDDataDataTable)(base.Tables["BCDData"])); + if ((initTable == true)) { + if ((this.tableBCDData != null)) { + this.tableBCDData.InitVars(); + } + } + this.tableUserSID = ((UserSIDDataTable)(base.Tables["UserSID"])); + if ((initTable == true)) { + if ((this.tableUserSID != null)) { + this.tableUserSID.InitVars(); + } + } + this.tableMailFormat = ((MailFormatDataTable)(base.Tables["MailFormat"])); + if ((initTable == true)) { + if ((this.tableMailFormat != null)) { + this.tableMailFormat.InitVars(); + } + } + this.tableMailRecipient = ((MailRecipientDataTable)(base.Tables["MailRecipient"])); + if ((initTable == true)) { + if ((this.tableMailRecipient != null)) { + this.tableMailRecipient.InitVars(); + } + } + this.tableSIDHistory = ((SIDHistoryDataTable)(base.Tables["SIDHistory"])); + if ((initTable == true)) { + if ((this.tableSIDHistory != null)) { + this.tableSIDHistory.InitVars(); + } + } + this.tableInputDescription = ((InputDescriptionDataTable)(base.Tables["InputDescription"])); + if ((initTable == true)) { + if ((this.tableInputDescription != null)) { + this.tableInputDescription.InitVars(); + } + } + this.tableOutputDescription = ((OutputDescriptionDataTable)(base.Tables["OutputDescription"])); + if ((initTable == true)) { + if ((this.tableOutputDescription != null)) { + this.tableOutputDescription.InitVars(); + } + } + this.tableUserTable = ((UserTableDataTable)(base.Tables["UserTable"])); + if ((initTable == true)) { + if ((this.tableUserTable != null)) { + this.tableUserTable.InitVars(); + } + } + this.tableErrorDescription = ((ErrorDescriptionDataTable)(base.Tables["ErrorDescription"])); + if ((initTable == true)) { + if ((this.tableErrorDescription != null)) { + this.tableErrorDescription.InitVars(); + } + } + this.tableModelList = ((ModelListDataTable)(base.Tables["ModelList"])); + if ((initTable == true)) { + if ((this.tableModelList != null)) { + this.tableModelList.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.DataSetName = "DataSet1"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DataSet1.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableK4EE_Component_Reel_Result = new K4EE_Component_Reel_ResultDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_Result); + this.tableK4EE_Component_Reel_RegExRule = new K4EE_Component_Reel_RegExRuleDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_RegExRule); + this.tableK4EE_Component_Reel_SID_Convert = new K4EE_Component_Reel_SID_ConvertDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_SID_Convert); + this.tableK4EE_Component_Reel_SID_Information = new K4EE_Component_Reel_SID_InformationDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_SID_Information); + this.tableK4EE_Component_Reel_PreSet = new K4EE_Component_Reel_PreSetDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_PreSet); + this.tableK4EE_Component_Reel_CustInfo = new K4EE_Component_Reel_CustInfoDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_CustInfo); + this.tableResultSummary = new ResultSummaryDataTable(); + base.Tables.Add(this.tableResultSummary); + this.tableK4EE_Component_Reel_Print_Information = new K4EE_Component_Reel_Print_InformationDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_Print_Information); + this.tableCustCodeList = new CustCodeListDataTable(); + base.Tables.Add(this.tableCustCodeList); + this.tableSidinfoCustGroup = new SidinfoCustGroupDataTable(); + base.Tables.Add(this.tableSidinfoCustGroup); + this.tableUsers = new UsersDataTable(); + base.Tables.Add(this.tableUsers); + this.tableMCModel = new MCModelDataTable(); + base.Tables.Add(this.tableMCModel); + this.tablelanguage = new languageDataTable(); + base.Tables.Add(this.tablelanguage); + this.tableOPModel = new OPModelDataTable(); + base.Tables.Add(this.tableOPModel); + this.tableBCDData = new BCDDataDataTable(); + base.Tables.Add(this.tableBCDData); + this.tableUserSID = new UserSIDDataTable(); + base.Tables.Add(this.tableUserSID); + this.tableMailFormat = new MailFormatDataTable(); + base.Tables.Add(this.tableMailFormat); + this.tableMailRecipient = new MailRecipientDataTable(); + base.Tables.Add(this.tableMailRecipient); + this.tableSIDHistory = new SIDHistoryDataTable(); + base.Tables.Add(this.tableSIDHistory); + this.tableInputDescription = new InputDescriptionDataTable(); + base.Tables.Add(this.tableInputDescription); + this.tableOutputDescription = new OutputDescriptionDataTable(); + base.Tables.Add(this.tableOutputDescription); + this.tableUserTable = new UserTableDataTable(); + base.Tables.Add(this.tableUserTable); + this.tableErrorDescription = new ErrorDescriptionDataTable(); + base.Tables.Add(this.tableErrorDescription); + this.tableModelList = new ModelListDataTable(); + base.Tables.Add(this.tableModelList); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_Result() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_RegExRule() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_SID_Convert() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_SID_Information() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_PreSet() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_CustInfo() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeResultSummary() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_Print_Information() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeCustCodeList() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeSidinfoCustGroup() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeUsers() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeMCModel() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializelanguage() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeOPModel() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeBCDData() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeUserSID() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeMailFormat() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeMailRecipient() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeSIDHistory() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeInputDescription() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeOutputDescription() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeUserTable() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeErrorDescription() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private bool ShouldSerializeModelList() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_ResultRowChangeEventHandler(object sender, K4EE_Component_Reel_ResultRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_RegExRuleRowChangeEventHandler(object sender, K4EE_Component_Reel_RegExRuleRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_SID_ConvertRowChangeEventHandler(object sender, K4EE_Component_Reel_SID_ConvertRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_SID_InformationRowChangeEventHandler(object sender, K4EE_Component_Reel_SID_InformationRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_PreSetRowChangeEventHandler(object sender, K4EE_Component_Reel_PreSetRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_CustInfoRowChangeEventHandler(object sender, K4EE_Component_Reel_CustInfoRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void ResultSummaryRowChangeEventHandler(object sender, ResultSummaryRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void K4EE_Component_Reel_Print_InformationRowChangeEventHandler(object sender, K4EE_Component_Reel_Print_InformationRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void CustCodeListRowChangeEventHandler(object sender, CustCodeListRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void SidinfoCustGroupRowChangeEventHandler(object sender, SidinfoCustGroupRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void UsersRowChangeEventHandler(object sender, UsersRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void MCModelRowChangeEventHandler(object sender, MCModelRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void languageRowChangeEventHandler(object sender, languageRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void OPModelRowChangeEventHandler(object sender, OPModelRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void BCDDataRowChangeEventHandler(object sender, BCDDataRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void UserSIDRowChangeEventHandler(object sender, UserSIDRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void MailFormatRowChangeEventHandler(object sender, MailFormatRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void MailRecipientRowChangeEventHandler(object sender, MailRecipientRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void SIDHistoryRowChangeEventHandler(object sender, SIDHistoryRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void InputDescriptionRowChangeEventHandler(object sender, InputDescriptionRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void OutputDescriptionRowChangeEventHandler(object sender, OutputDescriptionRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void UserTableRowChangeEventHandler(object sender, UserTableRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void ErrorDescriptionRowChangeEventHandler(object sender, ErrorDescriptionRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public delegate void ModelListRowChangeEventHandler(object sender, ModelListRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_ResultDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnSTIME; + + private global::System.Data.DataColumn columnETIME; + + private global::System.Data.DataColumn columnPDATE; + + private global::System.Data.DataColumn columnJTYPE; + + private global::System.Data.DataColumn columnJGUID; + + private global::System.Data.DataColumn columnSID; + + private global::System.Data.DataColumn columnSID0; + + private global::System.Data.DataColumn columnRID; + + private global::System.Data.DataColumn columnRID0; + + private global::System.Data.DataColumn columnRSN; + + private global::System.Data.DataColumn columnQR; + + private global::System.Data.DataColumn columnZPL; + + private global::System.Data.DataColumn columnPOS; + + private global::System.Data.DataColumn columnLOC; + + private global::System.Data.DataColumn columnANGLE; + + private global::System.Data.DataColumn columnQTY; + + private global::System.Data.DataColumn columnQTY0; + + private global::System.Data.DataColumn columnwdate; + + private global::System.Data.DataColumn columnVNAME; + + private global::System.Data.DataColumn columnPRNATTACH; + + private global::System.Data.DataColumn columnPRNVALID; + + private global::System.Data.DataColumn columnPTIME; + + private global::System.Data.DataColumn columnMFGDATE; + + private global::System.Data.DataColumn columnVLOT; + + private global::System.Data.DataColumn columnREMARK; + + private global::System.Data.DataColumn columnMC; + + private global::System.Data.DataColumn columnPARTNO; + + private global::System.Data.DataColumn columnCUSTCODE; + + private global::System.Data.DataColumn columnATIME; + + private global::System.Data.DataColumn columnBATCH; + + private global::System.Data.DataColumn columnqtymax; + + private global::System.Data.DataColumn columnGUID; + + private global::System.Data.DataColumn columniNBOUND; + + private global::System.Data.DataColumn columnMCN; + + private global::System.Data.DataColumn columntarget; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultDataTable() { + this.TableName = "K4EE_Component_Reel_Result"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_ResultDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_ResultDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn STIMEColumn { + get { + return this.columnSTIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ETIMEColumn { + get { + return this.columnETIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PDATEColumn { + get { + return this.columnPDATE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn JTYPEColumn { + get { + return this.columnJTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn JGUIDColumn { + get { + return this.columnJGUID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SID0Column { + get { + return this.columnSID0; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RIDColumn { + get { + return this.columnRID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RID0Column { + get { + return this.columnRID0; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RSNColumn { + get { + return this.columnRSN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn QRColumn { + get { + return this.columnQR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ZPLColumn { + get { + return this.columnZPL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn POSColumn { + get { + return this.columnPOS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn LOCColumn { + get { + return this.columnLOC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ANGLEColumn { + get { + return this.columnANGLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn QTYColumn { + get { + return this.columnQTY; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn QTY0Column { + get { + return this.columnQTY0; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn wdateColumn { + get { + return this.columnwdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn VNAMEColumn { + get { + return this.columnVNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PRNATTACHColumn { + get { + return this.columnPRNATTACH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PRNVALIDColumn { + get { + return this.columnPRNVALID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PTIMEColumn { + get { + return this.columnPTIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MFGDATEColumn { + get { + return this.columnMFGDATE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn VLOTColumn { + get { + return this.columnVLOT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn REMARKColumn { + get { + return this.columnREMARK; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MCColumn { + get { + return this.columnMC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PARTNOColumn { + get { + return this.columnPARTNO; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CUSTCODEColumn { + get { + return this.columnCUSTCODE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ATIMEColumn { + get { + return this.columnATIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn BATCHColumn { + get { + return this.columnBATCH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn qtymaxColumn { + get { + return this.columnqtymax; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn GUIDColumn { + get { + return this.columnGUID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn iNBOUNDColumn { + get { + return this.columniNBOUND; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MCNColumn { + get { + return this.columnMCN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn targetColumn { + get { + return this.columntarget; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultRow this[int index] { + get { + return ((K4EE_Component_Reel_ResultRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_ResultRow(K4EE_Component_Reel_ResultRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultRow AddK4EE_Component_Reel_ResultRow( + System.DateTime STIME, + System.DateTime ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + double ANGLE, + int QTY, + int QTY0, + System.DateTime wdate, + string VNAME, + bool PRNATTACH, + bool PRNVALID, + System.DateTime PTIME, + string MFGDATE, + string VLOT, + string REMARK, + string MC, + string PARTNO, + string CUSTCODE, + System.DateTime ATIME, + string BATCH, + int qtymax, + System.Guid GUID, + string iNBOUND, + string MCN, + string target) { + K4EE_Component_Reel_ResultRow rowK4EE_Component_Reel_ResultRow = ((K4EE_Component_Reel_ResultRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + STIME, + ETIME, + PDATE, + JTYPE, + JGUID, + SID, + SID0, + RID, + RID0, + RSN, + QR, + ZPL, + POS, + LOC, + ANGLE, + QTY, + QTY0, + wdate, + VNAME, + PRNATTACH, + PRNVALID, + PTIME, + MFGDATE, + VLOT, + REMARK, + MC, + PARTNO, + CUSTCODE, + ATIME, + BATCH, + qtymax, + GUID, + iNBOUND, + MCN, + target}; + rowK4EE_Component_Reel_ResultRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_ResultRow); + return rowK4EE_Component_Reel_ResultRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultRow FindByidx(int idx) { + return ((K4EE_Component_Reel_ResultRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_ResultDataTable cln = ((K4EE_Component_Reel_ResultDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_ResultDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnSTIME = base.Columns["STIME"]; + this.columnETIME = base.Columns["ETIME"]; + this.columnPDATE = base.Columns["PDATE"]; + this.columnJTYPE = base.Columns["JTYPE"]; + this.columnJGUID = base.Columns["JGUID"]; + this.columnSID = base.Columns["SID"]; + this.columnSID0 = base.Columns["SID0"]; + this.columnRID = base.Columns["RID"]; + this.columnRID0 = base.Columns["RID0"]; + this.columnRSN = base.Columns["RSN"]; + this.columnQR = base.Columns["QR"]; + this.columnZPL = base.Columns["ZPL"]; + this.columnPOS = base.Columns["POS"]; + this.columnLOC = base.Columns["LOC"]; + this.columnANGLE = base.Columns["ANGLE"]; + this.columnQTY = base.Columns["QTY"]; + this.columnQTY0 = base.Columns["QTY0"]; + this.columnwdate = base.Columns["wdate"]; + this.columnVNAME = base.Columns["VNAME"]; + this.columnPRNATTACH = base.Columns["PRNATTACH"]; + this.columnPRNVALID = base.Columns["PRNVALID"]; + this.columnPTIME = base.Columns["PTIME"]; + this.columnMFGDATE = base.Columns["MFGDATE"]; + this.columnVLOT = base.Columns["VLOT"]; + this.columnREMARK = base.Columns["REMARK"]; + this.columnMC = base.Columns["MC"]; + this.columnPARTNO = base.Columns["PARTNO"]; + this.columnCUSTCODE = base.Columns["CUSTCODE"]; + this.columnATIME = base.Columns["ATIME"]; + this.columnBATCH = base.Columns["BATCH"]; + this.columnqtymax = base.Columns["qtymax"]; + this.columnGUID = base.Columns["GUID"]; + this.columniNBOUND = base.Columns["iNBOUND"]; + this.columnMCN = base.Columns["MCN"]; + this.columntarget = base.Columns["target"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnSTIME = new global::System.Data.DataColumn("STIME", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSTIME); + this.columnETIME = new global::System.Data.DataColumn("ETIME", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnETIME); + this.columnPDATE = new global::System.Data.DataColumn("PDATE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPDATE); + this.columnJTYPE = new global::System.Data.DataColumn("JTYPE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnJTYPE); + this.columnJGUID = new global::System.Data.DataColumn("JGUID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnJGUID); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.columnSID0 = new global::System.Data.DataColumn("SID0", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID0); + this.columnRID = new global::System.Data.DataColumn("RID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRID); + this.columnRID0 = new global::System.Data.DataColumn("RID0", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRID0); + this.columnRSN = new global::System.Data.DataColumn("RSN", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRSN); + this.columnQR = new global::System.Data.DataColumn("QR", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQR); + this.columnZPL = new global::System.Data.DataColumn("ZPL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnZPL); + this.columnPOS = new global::System.Data.DataColumn("POS", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPOS); + this.columnLOC = new global::System.Data.DataColumn("LOC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnLOC); + this.columnANGLE = new global::System.Data.DataColumn("ANGLE", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnANGLE); + this.columnQTY = new global::System.Data.DataColumn("QTY", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQTY); + this.columnQTY0 = new global::System.Data.DataColumn("QTY0", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQTY0); + this.columnwdate = new global::System.Data.DataColumn("wdate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnwdate); + this.columnVNAME = new global::System.Data.DataColumn("VNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVNAME); + this.columnPRNATTACH = new global::System.Data.DataColumn("PRNATTACH", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPRNATTACH); + this.columnPRNVALID = new global::System.Data.DataColumn("PRNVALID", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPRNVALID); + this.columnPTIME = new global::System.Data.DataColumn("PTIME", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPTIME); + this.columnMFGDATE = new global::System.Data.DataColumn("MFGDATE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMFGDATE); + this.columnVLOT = new global::System.Data.DataColumn("VLOT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVLOT); + this.columnREMARK = new global::System.Data.DataColumn("REMARK", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnREMARK); + this.columnMC = new global::System.Data.DataColumn("MC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMC); + this.columnPARTNO = new global::System.Data.DataColumn("PARTNO", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPARTNO); + this.columnCUSTCODE = new global::System.Data.DataColumn("CUSTCODE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCUSTCODE); + this.columnATIME = new global::System.Data.DataColumn("ATIME", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnATIME); + this.columnBATCH = new global::System.Data.DataColumn("BATCH", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBATCH); + this.columnqtymax = new global::System.Data.DataColumn("qtymax", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnqtymax); + this.columnGUID = new global::System.Data.DataColumn("GUID", typeof(global::System.Guid), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGUID); + this.columniNBOUND = new global::System.Data.DataColumn("iNBOUND", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columniNBOUND); + this.columnMCN = new global::System.Data.DataColumn("MCN", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMCN); + this.columntarget = new global::System.Data.DataColumn("target", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columntarget); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnSTIME.AllowDBNull = false; + this.columnPDATE.MaxLength = 10; + this.columnJTYPE.MaxLength = 10; + this.columnJGUID.MaxLength = 50; + this.columnSID.MaxLength = 20; + this.columnSID0.MaxLength = 20; + this.columnRID.MaxLength = 50; + this.columnRID0.MaxLength = 50; + this.columnRSN.MaxLength = 10; + this.columnQR.MaxLength = 100; + this.columnZPL.MaxLength = 1000; + this.columnPOS.MaxLength = 10; + this.columnLOC.MaxLength = 1; + this.columnwdate.AllowDBNull = false; + this.columnVNAME.MaxLength = 100; + this.columnMFGDATE.MaxLength = 20; + this.columnVLOT.MaxLength = 100; + this.columnREMARK.MaxLength = 200; + this.columnMC.AllowDBNull = false; + this.columnMC.MaxLength = 10; + this.columnPARTNO.MaxLength = 100; + this.columnCUSTCODE.MaxLength = 20; + this.columnBATCH.MaxLength = 100; + this.columniNBOUND.MaxLength = 200; + this.columntarget.MaxLength = 10; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultRow NewK4EE_Component_Reel_ResultRow() { + return ((K4EE_Component_Reel_ResultRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_ResultRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_ResultRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_ResultRowChanged != null)) { + this.K4EE_Component_Reel_ResultRowChanged(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_ResultRowChanging != null)) { + this.K4EE_Component_Reel_ResultRowChanging(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_ResultRowDeleted != null)) { + this.K4EE_Component_Reel_ResultRowDeleted(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_ResultRowDeleting != null)) { + this.K4EE_Component_Reel_ResultRowDeleting(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_ResultRow(K4EE_Component_Reel_ResultRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_ResultDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_RegExRuleDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnId; + + private global::System.Data.DataColumn columnSeq; + + private global::System.Data.DataColumn columnCustCode; + + private global::System.Data.DataColumn columnDescription; + + private global::System.Data.DataColumn columnSymbol; + + private global::System.Data.DataColumn columnGroups; + + private global::System.Data.DataColumn columnIsEnable; + + private global::System.Data.DataColumn columnIsTrust; + + private global::System.Data.DataColumn columnIsAmkStd; + + private global::System.Data.DataColumn columnIsIgnore; + + private global::System.Data.DataColumn columnPattern; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleDataTable() { + this.TableName = "K4EE_Component_Reel_RegExRule"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_RegExRuleDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_RegExRuleDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IdColumn { + get { + return this.columnId; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SeqColumn { + get { + return this.columnSeq; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CustCodeColumn { + get { + return this.columnCustCode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DescriptionColumn { + get { + return this.columnDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SymbolColumn { + get { + return this.columnSymbol; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn GroupsColumn { + get { + return this.columnGroups; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IsEnableColumn { + get { + return this.columnIsEnable; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IsTrustColumn { + get { + return this.columnIsTrust; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IsAmkStdColumn { + get { + return this.columnIsAmkStd; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IsIgnoreColumn { + get { + return this.columnIsIgnore; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PatternColumn { + get { + return this.columnPattern; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleRow this[int index] { + get { + return ((K4EE_Component_Reel_RegExRuleRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_RegExRuleRowChangeEventHandler K4EE_Component_Reel_RegExRuleRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_RegExRuleRowChangeEventHandler K4EE_Component_Reel_RegExRuleRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_RegExRuleRowChangeEventHandler K4EE_Component_Reel_RegExRuleRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_RegExRuleRowChangeEventHandler K4EE_Component_Reel_RegExRuleRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_RegExRuleRow(K4EE_Component_Reel_RegExRuleRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleRow AddK4EE_Component_Reel_RegExRuleRow(int Seq, string CustCode, string Description, string Symbol, string Groups, bool IsEnable, bool IsTrust, bool IsAmkStd, bool IsIgnore, string Pattern) { + K4EE_Component_Reel_RegExRuleRow rowK4EE_Component_Reel_RegExRuleRow = ((K4EE_Component_Reel_RegExRuleRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + Seq, + CustCode, + Description, + Symbol, + Groups, + IsEnable, + IsTrust, + IsAmkStd, + IsIgnore, + Pattern}; + rowK4EE_Component_Reel_RegExRuleRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_RegExRuleRow); + return rowK4EE_Component_Reel_RegExRuleRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleRow FindById(int Id) { + return ((K4EE_Component_Reel_RegExRuleRow)(this.Rows.Find(new object[] { + Id}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_RegExRuleDataTable cln = ((K4EE_Component_Reel_RegExRuleDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_RegExRuleDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnId = base.Columns["Id"]; + this.columnSeq = base.Columns["Seq"]; + this.columnCustCode = base.Columns["CustCode"]; + this.columnDescription = base.Columns["Description"]; + this.columnSymbol = base.Columns["Symbol"]; + this.columnGroups = base.Columns["Groups"]; + this.columnIsEnable = base.Columns["IsEnable"]; + this.columnIsTrust = base.Columns["IsTrust"]; + this.columnIsAmkStd = base.Columns["IsAmkStd"]; + this.columnIsIgnore = base.Columns["IsIgnore"]; + this.columnPattern = base.Columns["Pattern"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnId = new global::System.Data.DataColumn("Id", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnId); + this.columnSeq = new global::System.Data.DataColumn("Seq", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSeq); + this.columnCustCode = new global::System.Data.DataColumn("CustCode", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCustCode); + this.columnDescription = new global::System.Data.DataColumn("Description", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDescription); + this.columnSymbol = new global::System.Data.DataColumn("Symbol", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSymbol); + this.columnGroups = new global::System.Data.DataColumn("Groups", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnGroups); + this.columnIsEnable = new global::System.Data.DataColumn("IsEnable", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIsEnable); + this.columnIsTrust = new global::System.Data.DataColumn("IsTrust", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIsTrust); + this.columnIsAmkStd = new global::System.Data.DataColumn("IsAmkStd", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIsAmkStd); + this.columnIsIgnore = new global::System.Data.DataColumn("IsIgnore", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIsIgnore); + this.columnPattern = new global::System.Data.DataColumn("Pattern", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPattern); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnId}, true)); + this.columnId.AutoIncrement = true; + this.columnId.AutoIncrementSeed = -1; + this.columnId.AutoIncrementStep = -1; + this.columnId.AllowDBNull = false; + this.columnId.ReadOnly = true; + this.columnId.Unique = true; + this.columnCustCode.MaxLength = 20; + this.columnDescription.MaxLength = 100; + this.columnSymbol.MaxLength = 3; + this.columnGroups.MaxLength = 255; + this.columnPattern.MaxLength = 2147483647; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleRow NewK4EE_Component_Reel_RegExRuleRow() { + return ((K4EE_Component_Reel_RegExRuleRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_RegExRuleRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_RegExRuleRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_RegExRuleRowChanged != null)) { + this.K4EE_Component_Reel_RegExRuleRowChanged(this, new K4EE_Component_Reel_RegExRuleRowChangeEvent(((K4EE_Component_Reel_RegExRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_RegExRuleRowChanging != null)) { + this.K4EE_Component_Reel_RegExRuleRowChanging(this, new K4EE_Component_Reel_RegExRuleRowChangeEvent(((K4EE_Component_Reel_RegExRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_RegExRuleRowDeleted != null)) { + this.K4EE_Component_Reel_RegExRuleRowDeleted(this, new K4EE_Component_Reel_RegExRuleRowChangeEvent(((K4EE_Component_Reel_RegExRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_RegExRuleRowDeleting != null)) { + this.K4EE_Component_Reel_RegExRuleRowDeleting(this, new K4EE_Component_Reel_RegExRuleRowChangeEvent(((K4EE_Component_Reel_RegExRuleRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_RegExRuleRow(K4EE_Component_Reel_RegExRuleRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_RegExRuleDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_SID_ConvertDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnChk; + + private global::System.Data.DataColumn columnSIDFrom; + + private global::System.Data.DataColumn columnSIDTo; + + private global::System.Data.DataColumn columnRemark; + + private global::System.Data.DataColumn columnwdate; + + private global::System.Data.DataColumn columnMC; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertDataTable() { + this.TableName = "K4EE_Component_Reel_SID_Convert"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_SID_ConvertDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_SID_ConvertDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ChkColumn { + get { + return this.columnChk; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDFromColumn { + get { + return this.columnSIDFrom; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDToColumn { + get { + return this.columnSIDTo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RemarkColumn { + get { + return this.columnRemark; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn wdateColumn { + get { + return this.columnwdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MCColumn { + get { + return this.columnMC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertRow this[int index] { + get { + return ((K4EE_Component_Reel_SID_ConvertRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_ConvertRowChangeEventHandler K4EE_Component_Reel_SID_ConvertRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_ConvertRowChangeEventHandler K4EE_Component_Reel_SID_ConvertRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_ConvertRowChangeEventHandler K4EE_Component_Reel_SID_ConvertRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_ConvertRowChangeEventHandler K4EE_Component_Reel_SID_ConvertRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_SID_ConvertRow(K4EE_Component_Reel_SID_ConvertRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertRow AddK4EE_Component_Reel_SID_ConvertRow(bool Chk, string SIDFrom, string SIDTo, string Remark, System.DateTime wdate, string MC) { + K4EE_Component_Reel_SID_ConvertRow rowK4EE_Component_Reel_SID_ConvertRow = ((K4EE_Component_Reel_SID_ConvertRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + Chk, + SIDFrom, + SIDTo, + Remark, + wdate, + MC}; + rowK4EE_Component_Reel_SID_ConvertRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_SID_ConvertRow); + return rowK4EE_Component_Reel_SID_ConvertRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertRow FindByidx(int idx) { + return ((K4EE_Component_Reel_SID_ConvertRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_SID_ConvertDataTable cln = ((K4EE_Component_Reel_SID_ConvertDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_SID_ConvertDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnChk = base.Columns["Chk"]; + this.columnSIDFrom = base.Columns["SIDFrom"]; + this.columnSIDTo = base.Columns["SIDTo"]; + this.columnRemark = base.Columns["Remark"]; + this.columnwdate = base.Columns["wdate"]; + this.columnMC = base.Columns["MC"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnChk = new global::System.Data.DataColumn("Chk", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnChk); + this.columnSIDFrom = new global::System.Data.DataColumn("SIDFrom", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSIDFrom); + this.columnSIDTo = new global::System.Data.DataColumn("SIDTo", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSIDTo); + this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRemark); + this.columnwdate = new global::System.Data.DataColumn("wdate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnwdate); + this.columnMC = new global::System.Data.DataColumn("MC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMC); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnSIDFrom.MaxLength = 20; + this.columnSIDTo.MaxLength = 20; + this.columnRemark.MaxLength = 100; + this.columnMC.MaxLength = 20; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertRow NewK4EE_Component_Reel_SID_ConvertRow() { + return ((K4EE_Component_Reel_SID_ConvertRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_SID_ConvertRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_SID_ConvertRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_SID_ConvertRowChanged != null)) { + this.K4EE_Component_Reel_SID_ConvertRowChanged(this, new K4EE_Component_Reel_SID_ConvertRowChangeEvent(((K4EE_Component_Reel_SID_ConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_SID_ConvertRowChanging != null)) { + this.K4EE_Component_Reel_SID_ConvertRowChanging(this, new K4EE_Component_Reel_SID_ConvertRowChangeEvent(((K4EE_Component_Reel_SID_ConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_SID_ConvertRowDeleted != null)) { + this.K4EE_Component_Reel_SID_ConvertRowDeleted(this, new K4EE_Component_Reel_SID_ConvertRowChangeEvent(((K4EE_Component_Reel_SID_ConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_SID_ConvertRowDeleting != null)) { + this.K4EE_Component_Reel_SID_ConvertRowDeleting(this, new K4EE_Component_Reel_SID_ConvertRowChangeEvent(((K4EE_Component_Reel_SID_ConvertRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_SID_ConvertRow(K4EE_Component_Reel_SID_ConvertRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_SID_ConvertDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_SID_InformationDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnSID; + + private global::System.Data.DataColumn columnCustCode; + + private global::System.Data.DataColumn columnPartNo; + + private global::System.Data.DataColumn columnCustName; + + private global::System.Data.DataColumn columnVenderName; + + private global::System.Data.DataColumn columnRemark; + + private global::System.Data.DataColumn columnwdate; + + private global::System.Data.DataColumn columnMC; + + private global::System.Data.DataColumn columnbatch; + + private global::System.Data.DataColumn columnqtymax; + + private global::System.Data.DataColumn columnVenderLot; + + private global::System.Data.DataColumn columnattach; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationDataTable() { + this.TableName = "K4EE_Component_Reel_SID_Information"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_SID_InformationDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_SID_InformationDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CustCodeColumn { + get { + return this.columnCustCode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PartNoColumn { + get { + return this.columnPartNo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CustNameColumn { + get { + return this.columnCustName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn VenderNameColumn { + get { + return this.columnVenderName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RemarkColumn { + get { + return this.columnRemark; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn wdateColumn { + get { + return this.columnwdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MCColumn { + get { + return this.columnMC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn batchColumn { + get { + return this.columnbatch; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn qtymaxColumn { + get { + return this.columnqtymax; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn VenderLotColumn { + get { + return this.columnVenderLot; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn attachColumn { + get { + return this.columnattach; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationRow this[int index] { + get { + return ((K4EE_Component_Reel_SID_InformationRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_InformationRowChangeEventHandler K4EE_Component_Reel_SID_InformationRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_InformationRowChangeEventHandler K4EE_Component_Reel_SID_InformationRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_InformationRowChangeEventHandler K4EE_Component_Reel_SID_InformationRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_SID_InformationRowChangeEventHandler K4EE_Component_Reel_SID_InformationRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_SID_InformationRow(K4EE_Component_Reel_SID_InformationRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationRow AddK4EE_Component_Reel_SID_InformationRow(string SID, string CustCode, string PartNo, string CustName, string VenderName, string Remark, System.DateTime wdate, string MC, string batch, int qtymax, string VenderLot, string attach) { + K4EE_Component_Reel_SID_InformationRow rowK4EE_Component_Reel_SID_InformationRow = ((K4EE_Component_Reel_SID_InformationRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + SID, + CustCode, + PartNo, + CustName, + VenderName, + Remark, + wdate, + MC, + batch, + qtymax, + VenderLot, + attach}; + rowK4EE_Component_Reel_SID_InformationRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_SID_InformationRow); + return rowK4EE_Component_Reel_SID_InformationRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationRow FindByidx(int idx) { + return ((K4EE_Component_Reel_SID_InformationRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_SID_InformationDataTable cln = ((K4EE_Component_Reel_SID_InformationDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_SID_InformationDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnSID = base.Columns["SID"]; + this.columnCustCode = base.Columns["CustCode"]; + this.columnPartNo = base.Columns["PartNo"]; + this.columnCustName = base.Columns["CustName"]; + this.columnVenderName = base.Columns["VenderName"]; + this.columnRemark = base.Columns["Remark"]; + this.columnwdate = base.Columns["wdate"]; + this.columnMC = base.Columns["MC"]; + this.columnbatch = base.Columns["batch"]; + this.columnqtymax = base.Columns["qtymax"]; + this.columnVenderLot = base.Columns["VenderLot"]; + this.columnattach = base.Columns["attach"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.columnCustCode = new global::System.Data.DataColumn("CustCode", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCustCode); + this.columnPartNo = new global::System.Data.DataColumn("PartNo", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPartNo); + this.columnCustName = new global::System.Data.DataColumn("CustName", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCustName); + this.columnVenderName = new global::System.Data.DataColumn("VenderName", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVenderName); + this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRemark); + this.columnwdate = new global::System.Data.DataColumn("wdate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnwdate); + this.columnMC = new global::System.Data.DataColumn("MC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMC); + this.columnbatch = new global::System.Data.DataColumn("batch", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnbatch); + this.columnqtymax = new global::System.Data.DataColumn("qtymax", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnqtymax); + this.columnVenderLot = new global::System.Data.DataColumn("VenderLot", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVenderLot); + this.columnattach = new global::System.Data.DataColumn("attach", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnattach); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnSID.AllowDBNull = false; + this.columnSID.MaxLength = 50; + this.columnCustCode.AllowDBNull = false; + this.columnCustCode.MaxLength = 10; + this.columnPartNo.AllowDBNull = false; + this.columnPartNo.MaxLength = 100; + this.columnCustName.MaxLength = 100; + this.columnVenderName.MaxLength = 100; + this.columnRemark.MaxLength = 100; + this.columnMC.MaxLength = 20; + this.columnbatch.MaxLength = 100; + this.columnVenderLot.MaxLength = 1000; + this.columnattach.MaxLength = 10; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationRow NewK4EE_Component_Reel_SID_InformationRow() { + return ((K4EE_Component_Reel_SID_InformationRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_SID_InformationRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_SID_InformationRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_SID_InformationRowChanged != null)) { + this.K4EE_Component_Reel_SID_InformationRowChanged(this, new K4EE_Component_Reel_SID_InformationRowChangeEvent(((K4EE_Component_Reel_SID_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_SID_InformationRowChanging != null)) { + this.K4EE_Component_Reel_SID_InformationRowChanging(this, new K4EE_Component_Reel_SID_InformationRowChangeEvent(((K4EE_Component_Reel_SID_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_SID_InformationRowDeleted != null)) { + this.K4EE_Component_Reel_SID_InformationRowDeleted(this, new K4EE_Component_Reel_SID_InformationRowChangeEvent(((K4EE_Component_Reel_SID_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_SID_InformationRowDeleting != null)) { + this.K4EE_Component_Reel_SID_InformationRowDeleting(this, new K4EE_Component_Reel_SID_InformationRowChangeEvent(((K4EE_Component_Reel_SID_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_SID_InformationRow(K4EE_Component_Reel_SID_InformationRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_SID_InformationDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_PreSetDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnMC; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnRemark; + + private global::System.Data.DataColumn columnwdate; + + private global::System.Data.DataColumn columnvOption; + + private global::System.Data.DataColumn columnvJobInfo; + + private global::System.Data.DataColumn columnvSidInfo; + + private global::System.Data.DataColumn columnvServerWrite; + + private global::System.Data.DataColumn columnjobtype; + + private global::System.Data.DataColumn columnbypasssid; + + private global::System.Data.DataColumn columnvWMSInfo; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetDataTable() { + this.TableName = "K4EE_Component_Reel_PreSet"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_PreSetDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_PreSetDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MCColumn { + get { + return this.columnMC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RemarkColumn { + get { + return this.columnRemark; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn wdateColumn { + get { + return this.columnwdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vOptionColumn { + get { + return this.columnvOption; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vJobInfoColumn { + get { + return this.columnvJobInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vSidInfoColumn { + get { + return this.columnvSidInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vServerWriteColumn { + get { + return this.columnvServerWrite; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn jobtypeColumn { + get { + return this.columnjobtype; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn bypasssidColumn { + get { + return this.columnbypasssid; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vWMSInfoColumn { + get { + return this.columnvWMSInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetRow this[int index] { + get { + return ((K4EE_Component_Reel_PreSetRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_PreSetRowChangeEventHandler K4EE_Component_Reel_PreSetRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_PreSetRowChangeEventHandler K4EE_Component_Reel_PreSetRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_PreSetRowChangeEventHandler K4EE_Component_Reel_PreSetRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_PreSetRowChangeEventHandler K4EE_Component_Reel_PreSetRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_PreSetRow(K4EE_Component_Reel_PreSetRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetRow AddK4EE_Component_Reel_PreSetRow(string MC, string Title, string Remark, System.DateTime wdate, int vOption, int vJobInfo, int vSidInfo, int vServerWrite, string jobtype, string bypasssid, int vWMSInfo) { + K4EE_Component_Reel_PreSetRow rowK4EE_Component_Reel_PreSetRow = ((K4EE_Component_Reel_PreSetRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + MC, + Title, + Remark, + wdate, + vOption, + vJobInfo, + vSidInfo, + vServerWrite, + jobtype, + bypasssid, + vWMSInfo}; + rowK4EE_Component_Reel_PreSetRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_PreSetRow); + return rowK4EE_Component_Reel_PreSetRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetRow FindByidx(int idx) { + return ((K4EE_Component_Reel_PreSetRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_PreSetDataTable cln = ((K4EE_Component_Reel_PreSetDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_PreSetDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnMC = base.Columns["MC"]; + this.columnTitle = base.Columns["Title"]; + this.columnRemark = base.Columns["Remark"]; + this.columnwdate = base.Columns["wdate"]; + this.columnvOption = base.Columns["vOption"]; + this.columnvJobInfo = base.Columns["vJobInfo"]; + this.columnvSidInfo = base.Columns["vSidInfo"]; + this.columnvServerWrite = base.Columns["vServerWrite"]; + this.columnjobtype = base.Columns["jobtype"]; + this.columnbypasssid = base.Columns["bypasssid"]; + this.columnvWMSInfo = base.Columns["vWMSInfo"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnMC = new global::System.Data.DataColumn("MC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMC); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRemark); + this.columnwdate = new global::System.Data.DataColumn("wdate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnwdate); + this.columnvOption = new global::System.Data.DataColumn("vOption", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvOption); + this.columnvJobInfo = new global::System.Data.DataColumn("vJobInfo", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvJobInfo); + this.columnvSidInfo = new global::System.Data.DataColumn("vSidInfo", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvSidInfo); + this.columnvServerWrite = new global::System.Data.DataColumn("vServerWrite", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvServerWrite); + this.columnjobtype = new global::System.Data.DataColumn("jobtype", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnjobtype); + this.columnbypasssid = new global::System.Data.DataColumn("bypasssid", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnbypasssid); + this.columnvWMSInfo = new global::System.Data.DataColumn("vWMSInfo", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvWMSInfo); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnMC.MaxLength = 20; + this.columnTitle.AllowDBNull = false; + this.columnTitle.MaxLength = 50; + this.columnRemark.MaxLength = 100; + this.columnjobtype.MaxLength = 10; + this.columnbypasssid.MaxLength = 255; + this.columnvWMSInfo.DefaultValue = ((int)(0)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetRow NewK4EE_Component_Reel_PreSetRow() { + return ((K4EE_Component_Reel_PreSetRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_PreSetRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_PreSetRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_PreSetRowChanged != null)) { + this.K4EE_Component_Reel_PreSetRowChanged(this, new K4EE_Component_Reel_PreSetRowChangeEvent(((K4EE_Component_Reel_PreSetRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_PreSetRowChanging != null)) { + this.K4EE_Component_Reel_PreSetRowChanging(this, new K4EE_Component_Reel_PreSetRowChangeEvent(((K4EE_Component_Reel_PreSetRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_PreSetRowDeleted != null)) { + this.K4EE_Component_Reel_PreSetRowDeleted(this, new K4EE_Component_Reel_PreSetRowChangeEvent(((K4EE_Component_Reel_PreSetRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_PreSetRowDeleting != null)) { + this.K4EE_Component_Reel_PreSetRowDeleting(this, new K4EE_Component_Reel_PreSetRowChangeEvent(((K4EE_Component_Reel_PreSetRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_PreSetRow(K4EE_Component_Reel_PreSetRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_PreSetDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_CustInfoDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columncode; + + private global::System.Data.DataColumn columnname; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoDataTable() { + this.TableName = "K4EE_Component_Reel_CustInfo"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_CustInfoDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_CustInfoDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn codeColumn { + get { + return this.columncode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn nameColumn { + get { + return this.columnname; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoRow this[int index] { + get { + return ((K4EE_Component_Reel_CustInfoRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_CustInfoRowChangeEventHandler K4EE_Component_Reel_CustInfoRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_CustInfoRowChangeEventHandler K4EE_Component_Reel_CustInfoRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_CustInfoRowChangeEventHandler K4EE_Component_Reel_CustInfoRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_CustInfoRowChangeEventHandler K4EE_Component_Reel_CustInfoRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_CustInfoRow(K4EE_Component_Reel_CustInfoRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoRow AddK4EE_Component_Reel_CustInfoRow(string code, string name) { + K4EE_Component_Reel_CustInfoRow rowK4EE_Component_Reel_CustInfoRow = ((K4EE_Component_Reel_CustInfoRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + code, + name}; + rowK4EE_Component_Reel_CustInfoRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_CustInfoRow); + return rowK4EE_Component_Reel_CustInfoRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoRow FindBycode(string code) { + return ((K4EE_Component_Reel_CustInfoRow)(this.Rows.Find(new object[] { + code}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_CustInfoDataTable cln = ((K4EE_Component_Reel_CustInfoDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_CustInfoDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columncode = base.Columns["code"]; + this.columnname = base.Columns["name"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columncode = new global::System.Data.DataColumn("code", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columncode); + this.columnname = new global::System.Data.DataColumn("name", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnname); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columncode}, true)); + this.columncode.AllowDBNull = false; + this.columncode.Unique = true; + this.columncode.MaxLength = 10; + this.columnname.MaxLength = 100; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoRow NewK4EE_Component_Reel_CustInfoRow() { + return ((K4EE_Component_Reel_CustInfoRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_CustInfoRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_CustInfoRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_CustInfoRowChanged != null)) { + this.K4EE_Component_Reel_CustInfoRowChanged(this, new K4EE_Component_Reel_CustInfoRowChangeEvent(((K4EE_Component_Reel_CustInfoRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_CustInfoRowChanging != null)) { + this.K4EE_Component_Reel_CustInfoRowChanging(this, new K4EE_Component_Reel_CustInfoRowChangeEvent(((K4EE_Component_Reel_CustInfoRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_CustInfoRowDeleted != null)) { + this.K4EE_Component_Reel_CustInfoRowDeleted(this, new K4EE_Component_Reel_CustInfoRowChangeEvent(((K4EE_Component_Reel_CustInfoRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_CustInfoRowDeleting != null)) { + this.K4EE_Component_Reel_CustInfoRowDeleting(this, new K4EE_Component_Reel_CustInfoRowChangeEvent(((K4EE_Component_Reel_CustInfoRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_CustInfoRow(K4EE_Component_Reel_CustInfoRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_CustInfoDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class ResultSummaryDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnPARTNO; + + private global::System.Data.DataColumn columnVLOT; + + private global::System.Data.DataColumn columnQTY; + + private global::System.Data.DataColumn columnKPC; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryDataTable() { + this.TableName = "ResultSummary"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal ResultSummaryDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected ResultSummaryDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PARTNOColumn { + get { + return this.columnPARTNO; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn VLOTColumn { + get { + return this.columnVLOT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn QTYColumn { + get { + return this.columnQTY; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn KPCColumn { + get { + return this.columnKPC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryRow this[int index] { + get { + return ((ResultSummaryRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ResultSummaryRowChangeEventHandler ResultSummaryRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ResultSummaryRowChangeEventHandler ResultSummaryRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ResultSummaryRowChangeEventHandler ResultSummaryRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ResultSummaryRowChangeEventHandler ResultSummaryRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddResultSummaryRow(ResultSummaryRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryRow AddResultSummaryRow(string PARTNO, string VLOT, int QTY, int KPC) { + ResultSummaryRow rowResultSummaryRow = ((ResultSummaryRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + PARTNO, + VLOT, + QTY, + KPC}; + rowResultSummaryRow.ItemArray = columnValuesArray; + this.Rows.Add(rowResultSummaryRow); + return rowResultSummaryRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryRow FindByPARTNOVLOT(string PARTNO, string VLOT) { + return ((ResultSummaryRow)(this.Rows.Find(new object[] { + PARTNO, + VLOT}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + ResultSummaryDataTable cln = ((ResultSummaryDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new ResultSummaryDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnPARTNO = base.Columns["PARTNO"]; + this.columnVLOT = base.Columns["VLOT"]; + this.columnQTY = base.Columns["QTY"]; + this.columnKPC = base.Columns["KPC"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnPARTNO = new global::System.Data.DataColumn("PARTNO", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPARTNO); + this.columnVLOT = new global::System.Data.DataColumn("VLOT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVLOT); + this.columnQTY = new global::System.Data.DataColumn("QTY", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQTY); + this.columnKPC = new global::System.Data.DataColumn("KPC", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnKPC); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnPARTNO, + this.columnVLOT}, true)); + this.columnPARTNO.AllowDBNull = false; + this.columnPARTNO.MaxLength = 100; + this.columnVLOT.AllowDBNull = false; + this.columnVLOT.MaxLength = 100; + this.columnQTY.ReadOnly = true; + this.columnKPC.ReadOnly = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryRow NewResultSummaryRow() { + return ((ResultSummaryRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new ResultSummaryRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(ResultSummaryRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.ResultSummaryRowChanged != null)) { + this.ResultSummaryRowChanged(this, new ResultSummaryRowChangeEvent(((ResultSummaryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.ResultSummaryRowChanging != null)) { + this.ResultSummaryRowChanging(this, new ResultSummaryRowChangeEvent(((ResultSummaryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.ResultSummaryRowDeleted != null)) { + this.ResultSummaryRowDeleted(this, new ResultSummaryRowChangeEvent(((ResultSummaryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.ResultSummaryRowDeleting != null)) { + this.ResultSummaryRowDeleting(this, new ResultSummaryRowChangeEvent(((ResultSummaryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveResultSummaryRow(ResultSummaryRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "ResultSummaryDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_Print_InformationDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnMC; + + private global::System.Data.DataColumn columnSID; + + private global::System.Data.DataColumn columnPrintPosition; + + private global::System.Data.DataColumn columnRemark; + + private global::System.Data.DataColumn columnwdate; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationDataTable() { + this.TableName = "K4EE_Component_Reel_Print_Information"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_Print_InformationDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected K4EE_Component_Reel_Print_InformationDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MCColumn { + get { + return this.columnMC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PrintPositionColumn { + get { + return this.columnPrintPosition; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RemarkColumn { + get { + return this.columnRemark; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn wdateColumn { + get { + return this.columnwdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationRow this[int index] { + get { + return ((K4EE_Component_Reel_Print_InformationRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_Print_InformationRowChangeEventHandler K4EE_Component_Reel_Print_InformationRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_Print_InformationRowChangeEventHandler K4EE_Component_Reel_Print_InformationRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_Print_InformationRowChangeEventHandler K4EE_Component_Reel_Print_InformationRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event K4EE_Component_Reel_Print_InformationRowChangeEventHandler K4EE_Component_Reel_Print_InformationRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddK4EE_Component_Reel_Print_InformationRow(K4EE_Component_Reel_Print_InformationRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationRow AddK4EE_Component_Reel_Print_InformationRow(string MC, string SID, string PrintPosition, string Remark, System.DateTime wdate) { + K4EE_Component_Reel_Print_InformationRow rowK4EE_Component_Reel_Print_InformationRow = ((K4EE_Component_Reel_Print_InformationRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + MC, + SID, + PrintPosition, + Remark, + wdate}; + rowK4EE_Component_Reel_Print_InformationRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_Print_InformationRow); + return rowK4EE_Component_Reel_Print_InformationRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationRow FindByidx(int idx) { + return ((K4EE_Component_Reel_Print_InformationRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_Print_InformationDataTable cln = ((K4EE_Component_Reel_Print_InformationDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_Print_InformationDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnMC = base.Columns["MC"]; + this.columnSID = base.Columns["SID"]; + this.columnPrintPosition = base.Columns["PrintPosition"]; + this.columnRemark = base.Columns["Remark"]; + this.columnwdate = base.Columns["wdate"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnMC = new global::System.Data.DataColumn("MC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMC); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.columnPrintPosition = new global::System.Data.DataColumn("PrintPosition", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPrintPosition); + this.columnRemark = new global::System.Data.DataColumn("Remark", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRemark); + this.columnwdate = new global::System.Data.DataColumn("wdate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnwdate); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnMC.MaxLength = 20; + this.columnSID.AllowDBNull = false; + this.columnSID.MaxLength = 50; + this.columnPrintPosition.MaxLength = 10; + this.columnRemark.MaxLength = 100; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationRow NewK4EE_Component_Reel_Print_InformationRow() { + return ((K4EE_Component_Reel_Print_InformationRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_Print_InformationRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_Print_InformationRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_Print_InformationRowChanged != null)) { + this.K4EE_Component_Reel_Print_InformationRowChanged(this, new K4EE_Component_Reel_Print_InformationRowChangeEvent(((K4EE_Component_Reel_Print_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_Print_InformationRowChanging != null)) { + this.K4EE_Component_Reel_Print_InformationRowChanging(this, new K4EE_Component_Reel_Print_InformationRowChangeEvent(((K4EE_Component_Reel_Print_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_Print_InformationRowDeleted != null)) { + this.K4EE_Component_Reel_Print_InformationRowDeleted(this, new K4EE_Component_Reel_Print_InformationRowChangeEvent(((K4EE_Component_Reel_Print_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_Print_InformationRowDeleting != null)) { + this.K4EE_Component_Reel_Print_InformationRowDeleting(this, new K4EE_Component_Reel_Print_InformationRowChangeEvent(((K4EE_Component_Reel_Print_InformationRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveK4EE_Component_Reel_Print_InformationRow(K4EE_Component_Reel_Print_InformationRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_Print_InformationDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class CustCodeListDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnCustCode; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListDataTable() { + this.TableName = "CustCodeList"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal CustCodeListDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected CustCodeListDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CustCodeColumn { + get { + return this.columnCustCode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListRow this[int index] { + get { + return ((CustCodeListRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event CustCodeListRowChangeEventHandler CustCodeListRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event CustCodeListRowChangeEventHandler CustCodeListRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event CustCodeListRowChangeEventHandler CustCodeListRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event CustCodeListRowChangeEventHandler CustCodeListRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddCustCodeListRow(CustCodeListRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListRow AddCustCodeListRow(string CustCode) { + CustCodeListRow rowCustCodeListRow = ((CustCodeListRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + CustCode}; + rowCustCodeListRow.ItemArray = columnValuesArray; + this.Rows.Add(rowCustCodeListRow); + return rowCustCodeListRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListRow FindByCustCode(string CustCode) { + return ((CustCodeListRow)(this.Rows.Find(new object[] { + CustCode}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + CustCodeListDataTable cln = ((CustCodeListDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new CustCodeListDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnCustCode = base.Columns["CustCode"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnCustCode = new global::System.Data.DataColumn("CustCode", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCustCode); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnCustCode}, true)); + this.columnCustCode.AllowDBNull = false; + this.columnCustCode.Unique = true; + this.columnCustCode.MaxLength = 10; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListRow NewCustCodeListRow() { + return ((CustCodeListRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new CustCodeListRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(CustCodeListRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.CustCodeListRowChanged != null)) { + this.CustCodeListRowChanged(this, new CustCodeListRowChangeEvent(((CustCodeListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.CustCodeListRowChanging != null)) { + this.CustCodeListRowChanging(this, new CustCodeListRowChangeEvent(((CustCodeListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.CustCodeListRowDeleted != null)) { + this.CustCodeListRowDeleted(this, new CustCodeListRowChangeEvent(((CustCodeListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.CustCodeListRowDeleting != null)) { + this.CustCodeListRowDeleting(this, new CustCodeListRowChangeEvent(((CustCodeListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveCustCodeListRow(CustCodeListRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "CustCodeListDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class SidinfoCustGroupDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnCustCode; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupDataTable() { + this.TableName = "SidinfoCustGroup"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal SidinfoCustGroupDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected SidinfoCustGroupDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CustCodeColumn { + get { + return this.columnCustCode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupRow this[int index] { + get { + return ((SidinfoCustGroupRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SidinfoCustGroupRowChangeEventHandler SidinfoCustGroupRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SidinfoCustGroupRowChangeEventHandler SidinfoCustGroupRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SidinfoCustGroupRowChangeEventHandler SidinfoCustGroupRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SidinfoCustGroupRowChangeEventHandler SidinfoCustGroupRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddSidinfoCustGroupRow(SidinfoCustGroupRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupRow AddSidinfoCustGroupRow(string CustCode) { + SidinfoCustGroupRow rowSidinfoCustGroupRow = ((SidinfoCustGroupRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + CustCode}; + rowSidinfoCustGroupRow.ItemArray = columnValuesArray; + this.Rows.Add(rowSidinfoCustGroupRow); + return rowSidinfoCustGroupRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupRow FindByCustCode(string CustCode) { + return ((SidinfoCustGroupRow)(this.Rows.Find(new object[] { + CustCode}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + SidinfoCustGroupDataTable cln = ((SidinfoCustGroupDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new SidinfoCustGroupDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnCustCode = base.Columns["CustCode"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnCustCode = new global::System.Data.DataColumn("CustCode", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCustCode); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnCustCode}, true)); + this.columnCustCode.AllowDBNull = false; + this.columnCustCode.Unique = true; + this.columnCustCode.MaxLength = 10; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupRow NewSidinfoCustGroupRow() { + return ((SidinfoCustGroupRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new SidinfoCustGroupRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(SidinfoCustGroupRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.SidinfoCustGroupRowChanged != null)) { + this.SidinfoCustGroupRowChanged(this, new SidinfoCustGroupRowChangeEvent(((SidinfoCustGroupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.SidinfoCustGroupRowChanging != null)) { + this.SidinfoCustGroupRowChanging(this, new SidinfoCustGroupRowChangeEvent(((SidinfoCustGroupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.SidinfoCustGroupRowDeleted != null)) { + this.SidinfoCustGroupRowDeleted(this, new SidinfoCustGroupRowChangeEvent(((SidinfoCustGroupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.SidinfoCustGroupRowDeleting != null)) { + this.SidinfoCustGroupRowDeleting(this, new SidinfoCustGroupRowChangeEvent(((SidinfoCustGroupRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveSidinfoCustGroupRow(SidinfoCustGroupRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "SidinfoCustGroupDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class UsersDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnNo; + + private global::System.Data.DataColumn columnName; + + private global::System.Data.DataColumn columnMemo; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersDataTable() { + this.TableName = "Users"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal UsersDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected UsersDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn NoColumn { + get { + return this.columnNo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn NameColumn { + get { + return this.columnName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MemoColumn { + get { + return this.columnMemo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersRow this[int index] { + get { + return ((UsersRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UsersRowChangeEventHandler UsersRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UsersRowChangeEventHandler UsersRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UsersRowChangeEventHandler UsersRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UsersRowChangeEventHandler UsersRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddUsersRow(UsersRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersRow AddUsersRow(string No, string Name, string Memo) { + UsersRow rowUsersRow = ((UsersRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + No, + Name, + Memo}; + rowUsersRow.ItemArray = columnValuesArray; + this.Rows.Add(rowUsersRow); + return rowUsersRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersRow FindByidx(int idx) { + return ((UsersRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + UsersDataTable cln = ((UsersDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new UsersDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnNo = base.Columns["No"]; + this.columnName = base.Columns["Name"]; + this.columnMemo = base.Columns["Memo"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnNo = new global::System.Data.DataColumn("No", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnNo); + this.columnName = new global::System.Data.DataColumn("Name", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnName); + this.columnMemo = new global::System.Data.DataColumn("Memo", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMemo); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = 1; + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersRow NewUsersRow() { + return ((UsersRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new UsersRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(UsersRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.UsersRowChanged != null)) { + this.UsersRowChanged(this, new UsersRowChangeEvent(((UsersRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.UsersRowChanging != null)) { + this.UsersRowChanging(this, new UsersRowChangeEvent(((UsersRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.UsersRowDeleted != null)) { + this.UsersRowDeleted(this, new UsersRowChangeEvent(((UsersRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.UsersRowDeleting != null)) { + this.UsersRowDeleting(this, new UsersRowChangeEvent(((UsersRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveUsersRow(UsersRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "UsersDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class MCModelDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnpidx; + + private global::System.Data.DataColumn columnMotIndex; + + private global::System.Data.DataColumn columnPosIndex; + + private global::System.Data.DataColumn columnPosTitle; + + private global::System.Data.DataColumn columnPosition; + + private global::System.Data.DataColumn columnSpdTitle; + + private global::System.Data.DataColumn columnSpeed; + + private global::System.Data.DataColumn columnSpeedAcc; + + private global::System.Data.DataColumn columnCheck; + + private global::System.Data.DataColumn columnSpeedDcc; + + private global::System.Data.DataColumn columnDescription; + + private global::System.Data.DataColumn columnCategory; + + private global::System.Data.DataColumn columnMotName; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelDataTable() { + this.TableName = "MCModel"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal MCModelDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected MCModelDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn pidxColumn { + get { + return this.columnpidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MotIndexColumn { + get { + return this.columnMotIndex; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PosIndexColumn { + get { + return this.columnPosIndex; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PosTitleColumn { + get { + return this.columnPosTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PositionColumn { + get { + return this.columnPosition; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SpdTitleColumn { + get { + return this.columnSpdTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SpeedColumn { + get { + return this.columnSpeed; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SpeedAccColumn { + get { + return this.columnSpeedAcc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CheckColumn { + get { + return this.columnCheck; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SpeedDccColumn { + get { + return this.columnSpeedDcc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DescriptionColumn { + get { + return this.columnDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CategoryColumn { + get { + return this.columnCategory; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MotNameColumn { + get { + return this.columnMotName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelRow this[int index] { + get { + return ((MCModelRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MCModelRowChangeEventHandler MCModelRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MCModelRowChangeEventHandler MCModelRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MCModelRowChangeEventHandler MCModelRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MCModelRowChangeEventHandler MCModelRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddMCModelRow(MCModelRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelRow AddMCModelRow(int idx, string Title, int pidx, short MotIndex, short PosIndex, string PosTitle, double Position, string SpdTitle, double Speed, double SpeedAcc, bool Check, double SpeedDcc, string Description, string Category, string MotName) { + MCModelRow rowMCModelRow = ((MCModelRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + idx, + Title, + pidx, + MotIndex, + PosIndex, + PosTitle, + Position, + SpdTitle, + Speed, + SpeedAcc, + Check, + SpeedDcc, + Description, + Category, + MotName}; + rowMCModelRow.ItemArray = columnValuesArray; + this.Rows.Add(rowMCModelRow); + return rowMCModelRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelRow FindByidx(int idx) { + return ((MCModelRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + MCModelDataTable cln = ((MCModelDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new MCModelDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnTitle = base.Columns["Title"]; + this.columnpidx = base.Columns["pidx"]; + this.columnMotIndex = base.Columns["MotIndex"]; + this.columnPosIndex = base.Columns["PosIndex"]; + this.columnPosTitle = base.Columns["PosTitle"]; + this.columnPosition = base.Columns["Position"]; + this.columnSpdTitle = base.Columns["SpdTitle"]; + this.columnSpeed = base.Columns["Speed"]; + this.columnSpeedAcc = base.Columns["SpeedAcc"]; + this.columnCheck = base.Columns["Check"]; + this.columnSpeedDcc = base.Columns["SpeedDcc"]; + this.columnDescription = base.Columns["Description"]; + this.columnCategory = base.Columns["Category"]; + this.columnMotName = base.Columns["MotName"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnpidx = new global::System.Data.DataColumn("pidx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnpidx); + this.columnMotIndex = new global::System.Data.DataColumn("MotIndex", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMotIndex); + this.columnPosIndex = new global::System.Data.DataColumn("PosIndex", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPosIndex); + this.columnPosTitle = new global::System.Data.DataColumn("PosTitle", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPosTitle); + this.columnPosition = new global::System.Data.DataColumn("Position", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPosition); + this.columnSpdTitle = new global::System.Data.DataColumn("SpdTitle", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSpdTitle); + this.columnSpeed = new global::System.Data.DataColumn("Speed", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSpeed); + this.columnSpeedAcc = new global::System.Data.DataColumn("SpeedAcc", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSpeedAcc); + this.columnCheck = new global::System.Data.DataColumn("Check", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCheck); + this.columnSpeedDcc = new global::System.Data.DataColumn("SpeedDcc", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSpeedDcc); + this.columnDescription = new global::System.Data.DataColumn("Description", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDescription); + this.columnCategory = new global::System.Data.DataColumn("Category", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCategory); + this.columnMotName = new global::System.Data.DataColumn("MotName", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMotName); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrementSeed = 1; + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelRow NewMCModelRow() { + return ((MCModelRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new MCModelRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(MCModelRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.MCModelRowChanged != null)) { + this.MCModelRowChanged(this, new MCModelRowChangeEvent(((MCModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.MCModelRowChanging != null)) { + this.MCModelRowChanging(this, new MCModelRowChangeEvent(((MCModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.MCModelRowDeleted != null)) { + this.MCModelRowDeleted(this, new MCModelRowChangeEvent(((MCModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.MCModelRowDeleting != null)) { + this.MCModelRowDeleting(this, new MCModelRowChangeEvent(((MCModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveMCModelRow(MCModelRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "MCModelDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class languageDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnSection; + + private global::System.Data.DataColumn columnKey; + + private global::System.Data.DataColumn columnValue; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageDataTable() { + this.TableName = "language"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal languageDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected languageDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SectionColumn { + get { + return this.columnSection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn KeyColumn { + get { + return this.columnKey; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ValueColumn { + get { + return this.columnValue; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageRow this[int index] { + get { + return ((languageRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event languageRowChangeEventHandler languageRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event languageRowChangeEventHandler languageRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event languageRowChangeEventHandler languageRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event languageRowChangeEventHandler languageRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddlanguageRow(languageRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageRow AddlanguageRow(string Section, string Key, string Value) { + languageRow rowlanguageRow = ((languageRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + Section, + Key, + Value}; + rowlanguageRow.ItemArray = columnValuesArray; + this.Rows.Add(rowlanguageRow); + return rowlanguageRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageRow FindByKeySection(string Key, string Section) { + return ((languageRow)(this.Rows.Find(new object[] { + Key, + Section}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + languageDataTable cln = ((languageDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new languageDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnSection = base.Columns["Section"]; + this.columnKey = base.Columns["Key"]; + this.columnValue = base.Columns["Value"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnSection = new global::System.Data.DataColumn("Section", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSection); + this.columnKey = new global::System.Data.DataColumn("Key", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnKey); + this.columnValue = new global::System.Data.DataColumn("Value", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnValue); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnKey, + this.columnSection}, true)); + this.columnSection.AllowDBNull = false; + this.columnKey.AllowDBNull = false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageRow NewlanguageRow() { + return ((languageRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new languageRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(languageRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.languageRowChanged != null)) { + this.languageRowChanged(this, new languageRowChangeEvent(((languageRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.languageRowChanging != null)) { + this.languageRowChanging(this, new languageRowChangeEvent(((languageRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.languageRowDeleted != null)) { + this.languageRowDeleted(this, new languageRowChangeEvent(((languageRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.languageRowDeleting != null)) { + this.languageRowDeleting(this, new languageRowChangeEvent(((languageRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemovelanguageRow(languageRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "languageDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class OPModelDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnMidx; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnMemo; + + private global::System.Data.DataColumn columnCode; + + private global::System.Data.DataColumn columnMotion; + + private global::System.Data.DataColumn columnBCD_1D; + + private global::System.Data.DataColumn columnBCD_QR; + + private global::System.Data.DataColumn columnBCD_DM; + + private global::System.Data.DataColumn columnvOption; + + private global::System.Data.DataColumn columnvSIDInfo; + + private global::System.Data.DataColumn columnvJobInfo; + + private global::System.Data.DataColumn columnvSIDConv; + + private global::System.Data.DataColumn columnDef_VName; + + private global::System.Data.DataColumn columnDef_MFG; + + private global::System.Data.DataColumn columnIgnoreOtherBarcode; + + private global::System.Data.DataColumn columnbConv; + + private global::System.Data.DataColumn columnBSave; + + private global::System.Data.DataColumn columnDisableCamera; + + private global::System.Data.DataColumn columnDisablePrinter; + + private global::System.Data.DataColumn columnCheckSIDExsit; + + private global::System.Data.DataColumn columnbOwnZPL; + + private global::System.Data.DataColumn columnIgnorePartNo; + + private global::System.Data.DataColumn columnIgnoreBatch; + + private global::System.Data.DataColumn columnAutoOutConveyor; + + private global::System.Data.DataColumn columnvWMSInfo; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelDataTable() { + this.TableName = "OPModel"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal OPModelDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected OPModelDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MidxColumn { + get { + return this.columnMidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MemoColumn { + get { + return this.columnMemo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CodeColumn { + get { + return this.columnCode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn MotionColumn { + get { + return this.columnMotion; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn BCD_1DColumn { + get { + return this.columnBCD_1D; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn BCD_QRColumn { + get { + return this.columnBCD_QR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn BCD_DMColumn { + get { + return this.columnBCD_DM; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vOptionColumn { + get { + return this.columnvOption; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vSIDInfoColumn { + get { + return this.columnvSIDInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vJobInfoColumn { + get { + return this.columnvJobInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vSIDConvColumn { + get { + return this.columnvSIDConv; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn Def_VNameColumn { + get { + return this.columnDef_VName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn Def_MFGColumn { + get { + return this.columnDef_MFG; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IgnoreOtherBarcodeColumn { + get { + return this.columnIgnoreOtherBarcode; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn bConvColumn { + get { + return this.columnbConv; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn BSaveColumn { + get { + return this.columnBSave; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DisableCameraColumn { + get { + return this.columnDisableCamera; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DisablePrinterColumn { + get { + return this.columnDisablePrinter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn CheckSIDExsitColumn { + get { + return this.columnCheckSIDExsit; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn bOwnZPLColumn { + get { + return this.columnbOwnZPL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IgnorePartNoColumn { + get { + return this.columnIgnorePartNo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IgnoreBatchColumn { + get { + return this.columnIgnoreBatch; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn AutoOutConveyorColumn { + get { + return this.columnAutoOutConveyor; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn vWMSInfoColumn { + get { + return this.columnvWMSInfo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelRow this[int index] { + get { + return ((OPModelRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OPModelRowChangeEventHandler OPModelRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OPModelRowChangeEventHandler OPModelRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OPModelRowChangeEventHandler OPModelRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OPModelRowChangeEventHandler OPModelRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddOPModelRow(OPModelRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelRow AddOPModelRow( + int Midx, + string Title, + string Memo, + string Code, + string Motion, + bool BCD_1D, + bool BCD_QR, + bool BCD_DM, + ushort vOption, + ushort vSIDInfo, + ushort vJobInfo, + ushort vSIDConv, + string Def_VName, + string Def_MFG, + bool IgnoreOtherBarcode, + bool bConv, + int BSave, + bool DisableCamera, + bool DisablePrinter, + bool CheckSIDExsit, + bool bOwnZPL, + bool IgnorePartNo, + bool IgnoreBatch, + int AutoOutConveyor, + ushort vWMSInfo) { + OPModelRow rowOPModelRow = ((OPModelRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + Midx, + Title, + Memo, + Code, + Motion, + BCD_1D, + BCD_QR, + BCD_DM, + vOption, + vSIDInfo, + vJobInfo, + vSIDConv, + Def_VName, + Def_MFG, + IgnoreOtherBarcode, + bConv, + BSave, + DisableCamera, + DisablePrinter, + CheckSIDExsit, + bOwnZPL, + IgnorePartNo, + IgnoreBatch, + AutoOutConveyor, + vWMSInfo}; + rowOPModelRow.ItemArray = columnValuesArray; + this.Rows.Add(rowOPModelRow); + return rowOPModelRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelRow FindByidx(int idx) { + return ((OPModelRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + OPModelDataTable cln = ((OPModelDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new OPModelDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnMidx = base.Columns["Midx"]; + this.columnTitle = base.Columns["Title"]; + this.columnMemo = base.Columns["Memo"]; + this.columnCode = base.Columns["Code"]; + this.columnMotion = base.Columns["Motion"]; + this.columnBCD_1D = base.Columns["BCD_1D"]; + this.columnBCD_QR = base.Columns["BCD_QR"]; + this.columnBCD_DM = base.Columns["BCD_DM"]; + this.columnvOption = base.Columns["vOption"]; + this.columnvSIDInfo = base.Columns["vSIDInfo"]; + this.columnvJobInfo = base.Columns["vJobInfo"]; + this.columnvSIDConv = base.Columns["vSIDConv"]; + this.columnDef_VName = base.Columns["Def_VName"]; + this.columnDef_MFG = base.Columns["Def_MFG"]; + this.columnIgnoreOtherBarcode = base.Columns["IgnoreOtherBarcode"]; + this.columnbConv = base.Columns["bConv"]; + this.columnBSave = base.Columns["BSave"]; + this.columnDisableCamera = base.Columns["DisableCamera"]; + this.columnDisablePrinter = base.Columns["DisablePrinter"]; + this.columnCheckSIDExsit = base.Columns["CheckSIDExsit"]; + this.columnbOwnZPL = base.Columns["bOwnZPL"]; + this.columnIgnorePartNo = base.Columns["IgnorePartNo"]; + this.columnIgnoreBatch = base.Columns["IgnoreBatch"]; + this.columnAutoOutConveyor = base.Columns["AutoOutConveyor"]; + this.columnvWMSInfo = base.Columns["vWMSInfo"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnMidx = new global::System.Data.DataColumn("Midx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMidx); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnMemo = new global::System.Data.DataColumn("Memo", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMemo); + this.columnCode = new global::System.Data.DataColumn("Code", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCode); + this.columnMotion = new global::System.Data.DataColumn("Motion", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMotion); + this.columnBCD_1D = new global::System.Data.DataColumn("BCD_1D", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBCD_1D); + this.columnBCD_QR = new global::System.Data.DataColumn("BCD_QR", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBCD_QR); + this.columnBCD_DM = new global::System.Data.DataColumn("BCD_DM", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBCD_DM); + this.columnvOption = new global::System.Data.DataColumn("vOption", typeof(ushort), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvOption); + this.columnvSIDInfo = new global::System.Data.DataColumn("vSIDInfo", typeof(ushort), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvSIDInfo); + this.columnvJobInfo = new global::System.Data.DataColumn("vJobInfo", typeof(ushort), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvJobInfo); + this.columnvSIDConv = new global::System.Data.DataColumn("vSIDConv", typeof(ushort), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvSIDConv); + this.columnDef_VName = new global::System.Data.DataColumn("Def_VName", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDef_VName); + this.columnDef_MFG = new global::System.Data.DataColumn("Def_MFG", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDef_MFG); + this.columnIgnoreOtherBarcode = new global::System.Data.DataColumn("IgnoreOtherBarcode", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIgnoreOtherBarcode); + this.columnbConv = new global::System.Data.DataColumn("bConv", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnbConv); + this.columnBSave = new global::System.Data.DataColumn("BSave", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBSave); + this.columnDisableCamera = new global::System.Data.DataColumn("DisableCamera", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDisableCamera); + this.columnDisablePrinter = new global::System.Data.DataColumn("DisablePrinter", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDisablePrinter); + this.columnCheckSIDExsit = new global::System.Data.DataColumn("CheckSIDExsit", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCheckSIDExsit); + this.columnbOwnZPL = new global::System.Data.DataColumn("bOwnZPL", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnbOwnZPL); + this.columnIgnorePartNo = new global::System.Data.DataColumn("IgnorePartNo", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIgnorePartNo); + this.columnIgnoreBatch = new global::System.Data.DataColumn("IgnoreBatch", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIgnoreBatch); + this.columnAutoOutConveyor = new global::System.Data.DataColumn("AutoOutConveyor", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAutoOutConveyor); + this.columnvWMSInfo = new global::System.Data.DataColumn("vWMSInfo", typeof(ushort), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnvWMSInfo); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = 1; + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + this.columnvWMSInfo.DefaultValue = ((ushort)(0)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelRow NewOPModelRow() { + return ((OPModelRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new OPModelRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(OPModelRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.OPModelRowChanged != null)) { + this.OPModelRowChanged(this, new OPModelRowChangeEvent(((OPModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.OPModelRowChanging != null)) { + this.OPModelRowChanging(this, new OPModelRowChangeEvent(((OPModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.OPModelRowDeleted != null)) { + this.OPModelRowDeleted(this, new OPModelRowChangeEvent(((OPModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.OPModelRowDeleting != null)) { + this.OPModelRowDeleting(this, new OPModelRowChangeEvent(((OPModelRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveOPModelRow(OPModelRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "OPModelDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class BCDDataDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnStart; + + private global::System.Data.DataColumn columnID; + + private global::System.Data.DataColumn columnSID; + + private global::System.Data.DataColumn columnRAW; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataDataTable() { + this.TableName = "BCDData"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal BCDDataDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected BCDDataDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn StartColumn { + get { + return this.columnStart; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IDColumn { + get { + return this.columnID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn RAWColumn { + get { + return this.columnRAW; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataRow this[int index] { + get { + return ((BCDDataRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event BCDDataRowChangeEventHandler BCDDataRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event BCDDataRowChangeEventHandler BCDDataRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event BCDDataRowChangeEventHandler BCDDataRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event BCDDataRowChangeEventHandler BCDDataRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddBCDDataRow(BCDDataRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataRow AddBCDDataRow(System.DateTime Start, string ID, string SID, string RAW) { + BCDDataRow rowBCDDataRow = ((BCDDataRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + Start, + ID, + SID, + RAW}; + rowBCDDataRow.ItemArray = columnValuesArray; + this.Rows.Add(rowBCDDataRow); + return rowBCDDataRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataRow FindByStart(System.DateTime Start) { + return ((BCDDataRow)(this.Rows.Find(new object[] { + Start}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + BCDDataDataTable cln = ((BCDDataDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new BCDDataDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnStart = base.Columns["Start"]; + this.columnID = base.Columns["ID"]; + this.columnSID = base.Columns["SID"]; + this.columnRAW = base.Columns["RAW"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnStart = new global::System.Data.DataColumn("Start", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnStart); + this.columnID = new global::System.Data.DataColumn("ID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnID); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.columnRAW = new global::System.Data.DataColumn("RAW", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRAW); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnStart}, true)); + this.columnStart.AllowDBNull = false; + this.columnStart.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataRow NewBCDDataRow() { + return ((BCDDataRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new BCDDataRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(BCDDataRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.BCDDataRowChanged != null)) { + this.BCDDataRowChanged(this, new BCDDataRowChangeEvent(((BCDDataRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.BCDDataRowChanging != null)) { + this.BCDDataRowChanging(this, new BCDDataRowChangeEvent(((BCDDataRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.BCDDataRowDeleted != null)) { + this.BCDDataRowDeleted(this, new BCDDataRowChangeEvent(((BCDDataRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.BCDDataRowDeleting != null)) { + this.BCDDataRowDeleting(this, new BCDDataRowChangeEvent(((BCDDataRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveBCDDataRow(BCDDataRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "BCDDataDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class UserSIDDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnPort; + + private global::System.Data.DataColumn columnSID; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDDataTable() { + this.TableName = "UserSID"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal UserSIDDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected UserSIDDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PortColumn { + get { + return this.columnPort; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDRow this[int index] { + get { + return ((UserSIDRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserSIDRowChangeEventHandler UserSIDRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserSIDRowChangeEventHandler UserSIDRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserSIDRowChangeEventHandler UserSIDRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserSIDRowChangeEventHandler UserSIDRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddUserSIDRow(UserSIDRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDRow AddUserSIDRow(string Port, string SID) { + UserSIDRow rowUserSIDRow = ((UserSIDRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + Port, + SID}; + rowUserSIDRow.ItemArray = columnValuesArray; + this.Rows.Add(rowUserSIDRow); + return rowUserSIDRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDRow FindByidx(int idx) { + return ((UserSIDRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + UserSIDDataTable cln = ((UserSIDDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new UserSIDDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnPort = base.Columns["Port"]; + this.columnSID = base.Columns["SID"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnPort = new global::System.Data.DataColumn("Port", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPort); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDRow NewUserSIDRow() { + return ((UserSIDRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new UserSIDRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(UserSIDRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.UserSIDRowChanged != null)) { + this.UserSIDRowChanged(this, new UserSIDRowChangeEvent(((UserSIDRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.UserSIDRowChanging != null)) { + this.UserSIDRowChanging(this, new UserSIDRowChangeEvent(((UserSIDRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.UserSIDRowDeleted != null)) { + this.UserSIDRowDeleted(this, new UserSIDRowChangeEvent(((UserSIDRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.UserSIDRowDeleting != null)) { + this.UserSIDRowDeleting(this, new UserSIDRowChangeEvent(((UserSIDRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveUserSIDRow(UserSIDRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "UserSIDDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class MailFormatDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnsubject; + + private global::System.Data.DataColumn columncontent; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailFormatDataTable() { + this.TableName = "MailFormat"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal MailFormatDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected MailFormatDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn subjectColumn { + get { + return this.columnsubject; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn contentColumn { + get { + return this.columncontent; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailFormatRow this[int index] { + get { + return ((MailFormatRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailFormatRowChangeEventHandler MailFormatRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailFormatRowChangeEventHandler MailFormatRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailFormatRowChangeEventHandler MailFormatRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailFormatRowChangeEventHandler MailFormatRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddMailFormatRow(MailFormatRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailFormatRow AddMailFormatRow(string subject, string content) { + MailFormatRow rowMailFormatRow = ((MailFormatRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + subject, + content}; + rowMailFormatRow.ItemArray = columnValuesArray; + this.Rows.Add(rowMailFormatRow); + return rowMailFormatRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + MailFormatDataTable cln = ((MailFormatDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new MailFormatDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnsubject = base.Columns["subject"]; + this.columncontent = base.Columns["content"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnsubject = new global::System.Data.DataColumn("subject", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnsubject); + this.columncontent = new global::System.Data.DataColumn("content", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columncontent); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailFormatRow NewMailFormatRow() { + return ((MailFormatRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new MailFormatRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(MailFormatRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.MailFormatRowChanged != null)) { + this.MailFormatRowChanged(this, new MailFormatRowChangeEvent(((MailFormatRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.MailFormatRowChanging != null)) { + this.MailFormatRowChanging(this, new MailFormatRowChangeEvent(((MailFormatRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.MailFormatRowDeleted != null)) { + this.MailFormatRowDeleted(this, new MailFormatRowChangeEvent(((MailFormatRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.MailFormatRowDeleting != null)) { + this.MailFormatRowDeleting(this, new MailFormatRowChangeEvent(((MailFormatRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveMailFormatRow(MailFormatRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "MailFormatDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class MailRecipientDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnName; + + private global::System.Data.DataColumn columnAddress; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientDataTable() { + this.TableName = "MailRecipient"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal MailRecipientDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected MailRecipientDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn NameColumn { + get { + return this.columnName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn AddressColumn { + get { + return this.columnAddress; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientRow this[int index] { + get { + return ((MailRecipientRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailRecipientRowChangeEventHandler MailRecipientRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailRecipientRowChangeEventHandler MailRecipientRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailRecipientRowChangeEventHandler MailRecipientRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event MailRecipientRowChangeEventHandler MailRecipientRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddMailRecipientRow(MailRecipientRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientRow AddMailRecipientRow(string Name, string Address) { + MailRecipientRow rowMailRecipientRow = ((MailRecipientRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + Name, + Address}; + rowMailRecipientRow.ItemArray = columnValuesArray; + this.Rows.Add(rowMailRecipientRow); + return rowMailRecipientRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientRow FindByidx(int idx) { + return ((MailRecipientRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + MailRecipientDataTable cln = ((MailRecipientDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new MailRecipientDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnName = base.Columns["Name"]; + this.columnAddress = base.Columns["Address"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnName = new global::System.Data.DataColumn("Name", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnName); + this.columnAddress = new global::System.Data.DataColumn("Address", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnAddress); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = 1; + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientRow NewMailRecipientRow() { + return ((MailRecipientRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new MailRecipientRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(MailRecipientRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.MailRecipientRowChanged != null)) { + this.MailRecipientRowChanged(this, new MailRecipientRowChangeEvent(((MailRecipientRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.MailRecipientRowChanging != null)) { + this.MailRecipientRowChanging(this, new MailRecipientRowChangeEvent(((MailRecipientRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.MailRecipientRowDeleted != null)) { + this.MailRecipientRowDeleted(this, new MailRecipientRowChangeEvent(((MailRecipientRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.MailRecipientRowDeleting != null)) { + this.MailRecipientRowDeleting(this, new MailRecipientRowChangeEvent(((MailRecipientRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveMailRecipientRow(MailRecipientRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "MailRecipientDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class SIDHistoryDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columntime; + + private global::System.Data.DataColumn columnseqdate; + + private global::System.Data.DataColumn columnseqno; + + private global::System.Data.DataColumn columnsid; + + private global::System.Data.DataColumn columnrid; + + private global::System.Data.DataColumn columnqty; + + private global::System.Data.DataColumn columnrev; + + private global::System.Data.DataColumn columnacc; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SIDHistoryDataTable() { + this.TableName = "SIDHistory"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal SIDHistoryDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected SIDHistoryDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn timeColumn { + get { + return this.columntime; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn seqdateColumn { + get { + return this.columnseqdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn seqnoColumn { + get { + return this.columnseqno; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn sidColumn { + get { + return this.columnsid; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ridColumn { + get { + return this.columnrid; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn qtyColumn { + get { + return this.columnqty; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn revColumn { + get { + return this.columnrev; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn accColumn { + get { + return this.columnacc; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SIDHistoryRow this[int index] { + get { + return ((SIDHistoryRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SIDHistoryRowChangeEventHandler SIDHistoryRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SIDHistoryRowChangeEventHandler SIDHistoryRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SIDHistoryRowChangeEventHandler SIDHistoryRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event SIDHistoryRowChangeEventHandler SIDHistoryRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddSIDHistoryRow(SIDHistoryRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SIDHistoryRow AddSIDHistoryRow(System.DateTime time, string seqdate, string seqno, string sid, string rid, int qty, int rev, int acc) { + SIDHistoryRow rowSIDHistoryRow = ((SIDHistoryRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + time, + seqdate, + seqno, + sid, + rid, + qty, + rev, + acc}; + rowSIDHistoryRow.ItemArray = columnValuesArray; + this.Rows.Add(rowSIDHistoryRow); + return rowSIDHistoryRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + SIDHistoryDataTable cln = ((SIDHistoryDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new SIDHistoryDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columntime = base.Columns["time"]; + this.columnseqdate = base.Columns["seqdate"]; + this.columnseqno = base.Columns["seqno"]; + this.columnsid = base.Columns["sid"]; + this.columnrid = base.Columns["rid"]; + this.columnqty = base.Columns["qty"]; + this.columnrev = base.Columns["rev"]; + this.columnacc = base.Columns["acc"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columntime = new global::System.Data.DataColumn("time", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columntime); + this.columnseqdate = new global::System.Data.DataColumn("seqdate", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnseqdate); + this.columnseqno = new global::System.Data.DataColumn("seqno", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnseqno); + this.columnsid = new global::System.Data.DataColumn("sid", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnsid); + this.columnrid = new global::System.Data.DataColumn("rid", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnrid); + this.columnqty = new global::System.Data.DataColumn("qty", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnqty); + this.columnrev = new global::System.Data.DataColumn("rev", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnrev); + this.columnacc = new global::System.Data.DataColumn("acc", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnacc); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint11", new global::System.Data.DataColumn[] { + this.columnidx}, false)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = 1; + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + this.columnsid.Caption = "info_filename"; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SIDHistoryRow NewSIDHistoryRow() { + return ((SIDHistoryRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new SIDHistoryRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(SIDHistoryRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.SIDHistoryRowChanged != null)) { + this.SIDHistoryRowChanged(this, new SIDHistoryRowChangeEvent(((SIDHistoryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.SIDHistoryRowChanging != null)) { + this.SIDHistoryRowChanging(this, new SIDHistoryRowChangeEvent(((SIDHistoryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.SIDHistoryRowDeleted != null)) { + this.SIDHistoryRowDeleted(this, new SIDHistoryRowChangeEvent(((SIDHistoryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.SIDHistoryRowDeleting != null)) { + this.SIDHistoryRowDeleting(this, new SIDHistoryRowChangeEvent(((SIDHistoryRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveSIDHistoryRow(SIDHistoryRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "SIDHistoryDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class InputDescriptionDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIdx; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnDescription; + + private global::System.Data.DataColumn columnTerminalNo; + + private global::System.Data.DataColumn columnInvert; + + private global::System.Data.DataColumn columnName; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionDataTable() { + this.TableName = "InputDescription"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal InputDescriptionDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected InputDescriptionDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IdxColumn { + get { + return this.columnIdx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DescriptionColumn { + get { + return this.columnDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TerminalNoColumn { + get { + return this.columnTerminalNo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn InvertColumn { + get { + return this.columnInvert; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn NameColumn { + get { + return this.columnName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionRow this[int index] { + get { + return ((InputDescriptionRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event InputDescriptionRowChangeEventHandler InputDescriptionRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event InputDescriptionRowChangeEventHandler InputDescriptionRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event InputDescriptionRowChangeEventHandler InputDescriptionRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event InputDescriptionRowChangeEventHandler InputDescriptionRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddInputDescriptionRow(InputDescriptionRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionRow AddInputDescriptionRow(short Idx, string Title, string Description, int TerminalNo, bool Invert, string Name) { + InputDescriptionRow rowInputDescriptionRow = ((InputDescriptionRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + Idx, + Title, + Description, + TerminalNo, + Invert, + Name}; + rowInputDescriptionRow.ItemArray = columnValuesArray; + this.Rows.Add(rowInputDescriptionRow); + return rowInputDescriptionRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionRow FindByIdx(short Idx) { + return ((InputDescriptionRow)(this.Rows.Find(new object[] { + Idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + InputDescriptionDataTable cln = ((InputDescriptionDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new InputDescriptionDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnIdx = base.Columns["Idx"]; + this.columnTitle = base.Columns["Title"]; + this.columnDescription = base.Columns["Description"]; + this.columnTerminalNo = base.Columns["TerminalNo"]; + this.columnInvert = base.Columns["Invert"]; + this.columnName = base.Columns["Name"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnIdx = new global::System.Data.DataColumn("Idx", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIdx); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnDescription = new global::System.Data.DataColumn("Description", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDescription); + this.columnTerminalNo = new global::System.Data.DataColumn("TerminalNo", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTerminalNo); + this.columnInvert = new global::System.Data.DataColumn("Invert", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnInvert); + this.columnName = new global::System.Data.DataColumn("Name", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnName); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIdx}, true)); + this.columnIdx.AllowDBNull = false; + this.columnIdx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionRow NewInputDescriptionRow() { + return ((InputDescriptionRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new InputDescriptionRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(InputDescriptionRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.InputDescriptionRowChanged != null)) { + this.InputDescriptionRowChanged(this, new InputDescriptionRowChangeEvent(((InputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.InputDescriptionRowChanging != null)) { + this.InputDescriptionRowChanging(this, new InputDescriptionRowChangeEvent(((InputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.InputDescriptionRowDeleted != null)) { + this.InputDescriptionRowDeleted(this, new InputDescriptionRowChangeEvent(((InputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.InputDescriptionRowDeleting != null)) { + this.InputDescriptionRowDeleting(this, new InputDescriptionRowChangeEvent(((InputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveInputDescriptionRow(InputDescriptionRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "InputDescriptionDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class OutputDescriptionDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIdx; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnDescription; + + private global::System.Data.DataColumn columnTerminalNo; + + private global::System.Data.DataColumn columnInvert; + + private global::System.Data.DataColumn columnName; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionDataTable() { + this.TableName = "OutputDescription"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal OutputDescriptionDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected OutputDescriptionDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IdxColumn { + get { + return this.columnIdx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DescriptionColumn { + get { + return this.columnDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TerminalNoColumn { + get { + return this.columnTerminalNo; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn InvertColumn { + get { + return this.columnInvert; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn NameColumn { + get { + return this.columnName; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionRow this[int index] { + get { + return ((OutputDescriptionRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OutputDescriptionRowChangeEventHandler OutputDescriptionRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OutputDescriptionRowChangeEventHandler OutputDescriptionRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OutputDescriptionRowChangeEventHandler OutputDescriptionRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event OutputDescriptionRowChangeEventHandler OutputDescriptionRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddOutputDescriptionRow(OutputDescriptionRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionRow AddOutputDescriptionRow(short Idx, string Title, string Description, int TerminalNo, bool Invert, string Name) { + OutputDescriptionRow rowOutputDescriptionRow = ((OutputDescriptionRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + Idx, + Title, + Description, + TerminalNo, + Invert, + Name}; + rowOutputDescriptionRow.ItemArray = columnValuesArray; + this.Rows.Add(rowOutputDescriptionRow); + return rowOutputDescriptionRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionRow FindByIdx(short Idx) { + return ((OutputDescriptionRow)(this.Rows.Find(new object[] { + Idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + OutputDescriptionDataTable cln = ((OutputDescriptionDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new OutputDescriptionDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnIdx = base.Columns["Idx"]; + this.columnTitle = base.Columns["Title"]; + this.columnDescription = base.Columns["Description"]; + this.columnTerminalNo = base.Columns["TerminalNo"]; + this.columnInvert = base.Columns["Invert"]; + this.columnName = base.Columns["Name"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnIdx = new global::System.Data.DataColumn("Idx", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIdx); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnDescription = new global::System.Data.DataColumn("Description", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDescription); + this.columnTerminalNo = new global::System.Data.DataColumn("TerminalNo", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTerminalNo); + this.columnInvert = new global::System.Data.DataColumn("Invert", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnInvert); + this.columnName = new global::System.Data.DataColumn("Name", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnName); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIdx}, true)); + this.columnIdx.AllowDBNull = false; + this.columnIdx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionRow NewOutputDescriptionRow() { + return ((OutputDescriptionRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new OutputDescriptionRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(OutputDescriptionRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.OutputDescriptionRowChanged != null)) { + this.OutputDescriptionRowChanged(this, new OutputDescriptionRowChangeEvent(((OutputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.OutputDescriptionRowChanging != null)) { + this.OutputDescriptionRowChanging(this, new OutputDescriptionRowChangeEvent(((OutputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.OutputDescriptionRowDeleted != null)) { + this.OutputDescriptionRowDeleted(this, new OutputDescriptionRowChangeEvent(((OutputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.OutputDescriptionRowDeleting != null)) { + this.OutputDescriptionRowDeleting(this, new OutputDescriptionRowChangeEvent(((OutputDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveOutputDescriptionRow(OutputDescriptionRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "OutputDescriptionDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class UserTableDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnID; + + private global::System.Data.DataColumn columnPASS; + + private global::System.Data.DataColumn columnLEVEL; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableDataTable() { + this.TableName = "UserTable"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal UserTableDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected UserTableDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IDColumn { + get { + return this.columnID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn PASSColumn { + get { + return this.columnPASS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn LEVELColumn { + get { + return this.columnLEVEL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableRow this[int index] { + get { + return ((UserTableRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserTableRowChangeEventHandler UserTableRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserTableRowChangeEventHandler UserTableRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserTableRowChangeEventHandler UserTableRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event UserTableRowChangeEventHandler UserTableRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddUserTableRow(UserTableRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableRow AddUserTableRow(string ID, string PASS, string LEVEL) { + UserTableRow rowUserTableRow = ((UserTableRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + ID, + PASS, + LEVEL}; + rowUserTableRow.ItemArray = columnValuesArray; + this.Rows.Add(rowUserTableRow); + return rowUserTableRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableRow FindByID(string ID) { + return ((UserTableRow)(this.Rows.Find(new object[] { + ID}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + UserTableDataTable cln = ((UserTableDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new UserTableDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnID = base.Columns["ID"]; + this.columnPASS = base.Columns["PASS"]; + this.columnLEVEL = base.Columns["LEVEL"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnID = new global::System.Data.DataColumn("ID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnID); + this.columnPASS = new global::System.Data.DataColumn("PASS", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPASS); + this.columnLEVEL = new global::System.Data.DataColumn("LEVEL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnLEVEL); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnID}, true)); + this.columnID.AllowDBNull = false; + this.columnID.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableRow NewUserTableRow() { + return ((UserTableRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new UserTableRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(UserTableRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.UserTableRowChanged != null)) { + this.UserTableRowChanged(this, new UserTableRowChangeEvent(((UserTableRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.UserTableRowChanging != null)) { + this.UserTableRowChanging(this, new UserTableRowChangeEvent(((UserTableRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.UserTableRowDeleted != null)) { + this.UserTableRowDeleted(this, new UserTableRowChangeEvent(((UserTableRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.UserTableRowDeleting != null)) { + this.UserTableRowDeleting(this, new UserTableRowChangeEvent(((UserTableRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveUserTableRow(UserTableRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "UserTableDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class ErrorDescriptionDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnIdx; + + private global::System.Data.DataColumn columnTitle; + + private global::System.Data.DataColumn columnDescription; + + private global::System.Data.DataColumn columnShorts; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionDataTable() { + this.TableName = "ErrorDescription"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal ErrorDescriptionDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected ErrorDescriptionDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn IdxColumn { + get { + return this.columnIdx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn DescriptionColumn { + get { + return this.columnDescription; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn ShortsColumn { + get { + return this.columnShorts; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionRow this[int index] { + get { + return ((ErrorDescriptionRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ErrorDescriptionRowChangeEventHandler ErrorDescriptionRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ErrorDescriptionRowChangeEventHandler ErrorDescriptionRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ErrorDescriptionRowChangeEventHandler ErrorDescriptionRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ErrorDescriptionRowChangeEventHandler ErrorDescriptionRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddErrorDescriptionRow(ErrorDescriptionRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionRow AddErrorDescriptionRow(short Idx, string Title, string Description, string Shorts) { + ErrorDescriptionRow rowErrorDescriptionRow = ((ErrorDescriptionRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + Idx, + Title, + Description, + Shorts}; + rowErrorDescriptionRow.ItemArray = columnValuesArray; + this.Rows.Add(rowErrorDescriptionRow); + return rowErrorDescriptionRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionRow FindByIdx(short Idx) { + return ((ErrorDescriptionRow)(this.Rows.Find(new object[] { + Idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + ErrorDescriptionDataTable cln = ((ErrorDescriptionDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new ErrorDescriptionDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnIdx = base.Columns["Idx"]; + this.columnTitle = base.Columns["Title"]; + this.columnDescription = base.Columns["Description"]; + this.columnShorts = base.Columns["Shorts"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnIdx = new global::System.Data.DataColumn("Idx", typeof(short), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnIdx); + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.columnDescription = new global::System.Data.DataColumn("Description", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnDescription); + this.columnShorts = new global::System.Data.DataColumn("Shorts", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnShorts); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnIdx}, true)); + this.columnIdx.AllowDBNull = false; + this.columnIdx.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionRow NewErrorDescriptionRow() { + return ((ErrorDescriptionRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new ErrorDescriptionRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(ErrorDescriptionRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.ErrorDescriptionRowChanged != null)) { + this.ErrorDescriptionRowChanged(this, new ErrorDescriptionRowChangeEvent(((ErrorDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.ErrorDescriptionRowChanging != null)) { + this.ErrorDescriptionRowChanging(this, new ErrorDescriptionRowChangeEvent(((ErrorDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.ErrorDescriptionRowDeleted != null)) { + this.ErrorDescriptionRowDeleted(this, new ErrorDescriptionRowChangeEvent(((ErrorDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.ErrorDescriptionRowDeleting != null)) { + this.ErrorDescriptionRowDeleting(this, new ErrorDescriptionRowChangeEvent(((ErrorDescriptionRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveErrorDescriptionRow(ErrorDescriptionRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "ErrorDescriptionDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class ModelListDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnTitle; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListDataTable() { + this.TableName = "ModelList"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal ModelListDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected ModelListDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataColumn TitleColumn { + get { + return this.columnTitle; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListRow this[int index] { + get { + return ((ModelListRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ModelListRowChangeEventHandler ModelListRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ModelListRowChangeEventHandler ModelListRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ModelListRowChangeEventHandler ModelListRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public event ModelListRowChangeEventHandler ModelListRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void AddModelListRow(ModelListRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListRow AddModelListRow(string Title) { + ModelListRow rowModelListRow = ((ModelListRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + Title}; + rowModelListRow.ItemArray = columnValuesArray; + this.Rows.Add(rowModelListRow); + return rowModelListRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListRow FindByTitle(string Title) { + return ((ModelListRow)(this.Rows.Find(new object[] { + Title}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public override global::System.Data.DataTable Clone() { + ModelListDataTable cln = ((ModelListDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new ModelListDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal void InitVars() { + this.columnTitle = base.Columns["Title"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitClass() { + this.columnTitle = new global::System.Data.DataColumn("Title", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnTitle); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnTitle}, true)); + this.columnTitle.AllowDBNull = false; + this.columnTitle.Unique = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListRow NewModelListRow() { + return ((ModelListRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new ModelListRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(ModelListRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.ModelListRowChanged != null)) { + this.ModelListRowChanged(this, new ModelListRowChangeEvent(((ModelListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.ModelListRowChanging != null)) { + this.ModelListRowChanging(this, new ModelListRowChangeEvent(((ModelListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.ModelListRowDeleted != null)) { + this.ModelListRowDeleted(this, new ModelListRowChangeEvent(((ModelListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.ModelListRowDeleting != null)) { + this.ModelListRowDeleting(this, new ModelListRowChangeEvent(((ModelListRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void RemoveModelListRow(ModelListRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "ModelListDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_ResultRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_ResultDataTable tableK4EE_Component_Reel_Result; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_ResultRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_Result = ((K4EE_Component_Reel_ResultDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_Result.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime STIME { + get { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.STIMEColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.STIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime ETIME { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.ETIMEColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Result\' 테이블의 \'ETIME\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ETIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PDATE { + get { + if (this.IsPDATENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.PDATEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PDATEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string JTYPE { + get { + if (this.IsJTYPENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.JTYPEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.JTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string JGUID { + get { + if (this.IsJGUIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.JGUIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.JGUIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SID { + get { + if (this.IsSIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.SIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SID0 { + get { + if (this.IsSID0Null()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.SID0Column])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.SID0Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string RID { + get { + if (this.IsRIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.RIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.RIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string RID0 { + get { + if (this.IsRID0Null()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.RID0Column])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.RID0Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string RSN { + get { + if (this.IsRSNNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.RSNColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.RSNColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string QR { + get { + if (this.IsQRNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.QRColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.QRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string ZPL { + get { + if (this.IsZPLNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.ZPLColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ZPLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string POS { + get { + if (this.IsPOSNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.POSColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.POSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string LOC { + get { + if (this.IsLOCNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.LOCColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.LOCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public double ANGLE { + get { + if (this.IsANGLENull()) { + return 0D; + } + else { + return ((double)(this[this.tableK4EE_Component_Reel_Result.ANGLEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ANGLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int QTY { + get { + if (this.IsQTYNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_Result.QTYColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.QTYColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int QTY0 { + get { + if (this.IsQTY0Null()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_Result.QTY0Column])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.QTY0Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime wdate { + get { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.wdateColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.wdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string VNAME { + get { + if (this.IsVNAMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.VNAMEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.VNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool PRNATTACH { + get { + if (this.IsPRNATTACHNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_Result.PRNATTACHColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PRNATTACHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool PRNVALID { + get { + if (this.IsPRNVALIDNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_Result.PRNVALIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PRNVALIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime PTIME { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.PTIMEColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Result\' 테이블의 \'PTIME\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PTIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MFGDATE { + get { + if (this.IsMFGDATENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.MFGDATEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.MFGDATEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string VLOT { + get { + if (this.IsVLOTNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.VLOTColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.VLOTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string REMARK { + get { + if (this.IsREMARKNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.REMARKColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.REMARKColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MC { + get { + return ((string)(this[this.tableK4EE_Component_Reel_Result.MCColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.MCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PARTNO { + get { + if (this.IsPARTNONull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.PARTNOColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PARTNOColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string CUSTCODE { + get { + if (this.IsCUSTCODENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.CUSTCODEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.CUSTCODEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime ATIME { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.ATIMEColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Result\' 테이블의 \'ATIME\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ATIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string BATCH { + get { + if (this.IsBATCHNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.BATCHColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.BATCHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int qtymax { + get { + if (this.IsqtymaxNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_Result.qtymaxColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.qtymaxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.Guid GUID { + get { + try { + return ((global::System.Guid)(this[this.tableK4EE_Component_Reel_Result.GUIDColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Result\' 테이블의 \'GUID\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.GUIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string iNBOUND { + get { + if (this.IsiNBOUNDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.iNBOUNDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.iNBOUNDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MCN { + get { + if (this.IsMCNNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.MCNColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.MCNColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string target { + get { + if (this.IstargetNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.targetColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.targetColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsETIMENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ETIMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetETIMENull() { + this[this.tableK4EE_Component_Reel_Result.ETIMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPDATENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PDATEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPDATENull() { + this[this.tableK4EE_Component_Reel_Result.PDATEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsJTYPENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.JTYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetJTYPENull() { + this[this.tableK4EE_Component_Reel_Result.JTYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsJGUIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.JGUIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetJGUIDNull() { + this[this.tableK4EE_Component_Reel_Result.JGUIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.SIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSIDNull() { + this[this.tableK4EE_Component_Reel_Result.SIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSID0Null() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.SID0Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSID0Null() { + this[this.tableK4EE_Component_Reel_Result.SID0Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.RIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRIDNull() { + this[this.tableK4EE_Component_Reel_Result.RIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRID0Null() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.RID0Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRID0Null() { + this[this.tableK4EE_Component_Reel_Result.RID0Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRSNNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.RSNColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRSNNull() { + this[this.tableK4EE_Component_Reel_Result.RSNColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsQRNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.QRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetQRNull() { + this[this.tableK4EE_Component_Reel_Result.QRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsZPLNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ZPLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetZPLNull() { + this[this.tableK4EE_Component_Reel_Result.ZPLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPOSNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.POSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPOSNull() { + this[this.tableK4EE_Component_Reel_Result.POSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsLOCNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.LOCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetLOCNull() { + this[this.tableK4EE_Component_Reel_Result.LOCColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsANGLENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ANGLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetANGLENull() { + this[this.tableK4EE_Component_Reel_Result.ANGLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsQTYNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.QTYColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetQTYNull() { + this[this.tableK4EE_Component_Reel_Result.QTYColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsQTY0Null() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.QTY0Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetQTY0Null() { + this[this.tableK4EE_Component_Reel_Result.QTY0Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsVNAMENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.VNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetVNAMENull() { + this[this.tableK4EE_Component_Reel_Result.VNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPRNATTACHNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PRNATTACHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPRNATTACHNull() { + this[this.tableK4EE_Component_Reel_Result.PRNATTACHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPRNVALIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PRNVALIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPRNVALIDNull() { + this[this.tableK4EE_Component_Reel_Result.PRNVALIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPTIMENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PTIMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPTIMENull() { + this[this.tableK4EE_Component_Reel_Result.PTIMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMFGDATENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.MFGDATEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMFGDATENull() { + this[this.tableK4EE_Component_Reel_Result.MFGDATEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsVLOTNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.VLOTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetVLOTNull() { + this[this.tableK4EE_Component_Reel_Result.VLOTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsREMARKNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.REMARKColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetREMARKNull() { + this[this.tableK4EE_Component_Reel_Result.REMARKColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPARTNONull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PARTNOColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPARTNONull() { + this[this.tableK4EE_Component_Reel_Result.PARTNOColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCUSTCODENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.CUSTCODEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCUSTCODENull() { + this[this.tableK4EE_Component_Reel_Result.CUSTCODEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsATIMENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ATIMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetATIMENull() { + this[this.tableK4EE_Component_Reel_Result.ATIMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsBATCHNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.BATCHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetBATCHNull() { + this[this.tableK4EE_Component_Reel_Result.BATCHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsqtymaxNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.qtymaxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetqtymaxNull() { + this[this.tableK4EE_Component_Reel_Result.qtymaxColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsGUIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.GUIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetGUIDNull() { + this[this.tableK4EE_Component_Reel_Result.GUIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsiNBOUNDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.iNBOUNDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetiNBOUNDNull() { + this[this.tableK4EE_Component_Reel_Result.iNBOUNDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMCNNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.MCNColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMCNNull() { + this[this.tableK4EE_Component_Reel_Result.MCNColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IstargetNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.targetColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SettargetNull() { + this[this.tableK4EE_Component_Reel_Result.targetColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_RegExRuleRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_RegExRuleDataTable tableK4EE_Component_Reel_RegExRule; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_RegExRuleRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_RegExRule = ((K4EE_Component_Reel_RegExRuleDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int Id { + get { + return ((int)(this[this.tableK4EE_Component_Reel_RegExRule.IdColumn])); + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.IdColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int Seq { + get { + if (this.IsSeqNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_RegExRule.SeqColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.SeqColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string CustCode { + get { + if (this.IsCustCodeNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_RegExRule.CustCodeColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.CustCodeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Description { + get { + if (this.IsDescriptionNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_RegExRule.DescriptionColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.DescriptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Symbol { + get { + if (this.IsSymbolNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_RegExRule.SymbolColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.SymbolColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Groups { + get { + if (this.IsGroupsNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_RegExRule.GroupsColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.GroupsColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsEnable { + get { + if (this.IsIsEnableNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_RegExRule.IsEnableColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.IsEnableColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTrust { + get { + if (this.IsIsTrustNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_RegExRule.IsTrustColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.IsTrustColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsAmkStd { + get { + if (this.IsIsAmkStdNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_RegExRule.IsAmkStdColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.IsAmkStdColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIgnore { + get { + if (this.IsIsIgnoreNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_RegExRule.IsIgnoreColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.IsIgnoreColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Pattern { + get { + if (this.IsPatternNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_RegExRule.PatternColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_RegExRule.PatternColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSeqNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.SeqColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSeqNull() { + this[this.tableK4EE_Component_Reel_RegExRule.SeqColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCustCodeNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.CustCodeColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCustCodeNull() { + this[this.tableK4EE_Component_Reel_RegExRule.CustCodeColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDescriptionNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.DescriptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDescriptionNull() { + this[this.tableK4EE_Component_Reel_RegExRule.DescriptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSymbolNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.SymbolColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSymbolNull() { + this[this.tableK4EE_Component_Reel_RegExRule.SymbolColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsGroupsNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.GroupsColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetGroupsNull() { + this[this.tableK4EE_Component_Reel_RegExRule.GroupsColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIsEnableNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.IsEnableColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIsEnableNull() { + this[this.tableK4EE_Component_Reel_RegExRule.IsEnableColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIsTrustNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.IsTrustColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIsTrustNull() { + this[this.tableK4EE_Component_Reel_RegExRule.IsTrustColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIsAmkStdNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.IsAmkStdColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIsAmkStdNull() { + this[this.tableK4EE_Component_Reel_RegExRule.IsAmkStdColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIsIgnoreNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.IsIgnoreColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIsIgnoreNull() { + this[this.tableK4EE_Component_Reel_RegExRule.IsIgnoreColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPatternNull() { + return this.IsNull(this.tableK4EE_Component_Reel_RegExRule.PatternColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPatternNull() { + this[this.tableK4EE_Component_Reel_RegExRule.PatternColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_SID_ConvertRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_SID_ConvertDataTable tableK4EE_Component_Reel_SID_Convert; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_SID_ConvertRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_SID_Convert = ((K4EE_Component_Reel_SID_ConvertDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_SID_Convert.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool Chk { + get { + if (this.IsChkNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_SID_Convert.ChkColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.ChkColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SIDFrom { + get { + if (this.IsSIDFromNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Convert.SIDFromColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.SIDFromColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SIDTo { + get { + if (this.IsSIDToNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Convert.SIDToColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.SIDToColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Remark { + get { + if (this.IsRemarkNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Convert.RemarkColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.RemarkColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime wdate { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_SID_Convert.wdateColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_SID_Convert\' 테이블의 \'wdate\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.wdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MC { + get { + if (this.IsMCNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Convert.MCColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Convert.MCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsChkNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Convert.ChkColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetChkNull() { + this[this.tableK4EE_Component_Reel_SID_Convert.ChkColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSIDFromNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Convert.SIDFromColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSIDFromNull() { + this[this.tableK4EE_Component_Reel_SID_Convert.SIDFromColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSIDToNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Convert.SIDToColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSIDToNull() { + this[this.tableK4EE_Component_Reel_SID_Convert.SIDToColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRemarkNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Convert.RemarkColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRemarkNull() { + this[this.tableK4EE_Component_Reel_SID_Convert.RemarkColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IswdateNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Convert.wdateColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetwdateNull() { + this[this.tableK4EE_Component_Reel_SID_Convert.wdateColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMCNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Convert.MCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMCNull() { + this[this.tableK4EE_Component_Reel_SID_Convert.MCColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_SID_InformationRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_SID_InformationDataTable tableK4EE_Component_Reel_SID_Information; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_SID_InformationRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_SID_Information = ((K4EE_Component_Reel_SID_InformationDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_SID_Information.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SID { + get { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.SIDColumn])); + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string CustCode { + get { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.CustCodeColumn])); + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.CustCodeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PartNo { + get { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.PartNoColumn])); + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.PartNoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string CustName { + get { + if (this.IsCustNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.CustNameColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.CustNameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string VenderName { + get { + if (this.IsVenderNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.VenderNameColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.VenderNameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Remark { + get { + if (this.IsRemarkNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.RemarkColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.RemarkColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime wdate { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_SID_Information.wdateColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_SID_Information\' 테이블의 \'wdate\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.wdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MC { + get { + if (this.IsMCNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.MCColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.MCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string batch { + get { + if (this.IsbatchNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.batchColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.batchColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int qtymax { + get { + if (this.IsqtymaxNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_SID_Information.qtymaxColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.qtymaxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string VenderLot { + get { + if (this.IsVenderLotNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.VenderLotColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.VenderLotColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string attach { + get { + if (this.IsattachNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_SID_Information.attachColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_SID_Information.attachColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCustNameNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.CustNameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCustNameNull() { + this[this.tableK4EE_Component_Reel_SID_Information.CustNameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsVenderNameNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.VenderNameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetVenderNameNull() { + this[this.tableK4EE_Component_Reel_SID_Information.VenderNameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRemarkNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.RemarkColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRemarkNull() { + this[this.tableK4EE_Component_Reel_SID_Information.RemarkColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IswdateNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.wdateColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetwdateNull() { + this[this.tableK4EE_Component_Reel_SID_Information.wdateColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMCNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.MCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMCNull() { + this[this.tableK4EE_Component_Reel_SID_Information.MCColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsbatchNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.batchColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetbatchNull() { + this[this.tableK4EE_Component_Reel_SID_Information.batchColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsqtymaxNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.qtymaxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetqtymaxNull() { + this[this.tableK4EE_Component_Reel_SID_Information.qtymaxColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsVenderLotNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.VenderLotColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetVenderLotNull() { + this[this.tableK4EE_Component_Reel_SID_Information.VenderLotColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsattachNull() { + return this.IsNull(this.tableK4EE_Component_Reel_SID_Information.attachColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetattachNull() { + this[this.tableK4EE_Component_Reel_SID_Information.attachColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_PreSetRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_PreSetDataTable tableK4EE_Component_Reel_PreSet; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_PreSetRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_PreSet = ((K4EE_Component_Reel_PreSetDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_PreSet.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_PreSet.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MC { + get { + if (this.IsMCNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_PreSet.MCColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.MCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + return ((string)(this[this.tableK4EE_Component_Reel_PreSet.TitleColumn])); + } + set { + this[this.tableK4EE_Component_Reel_PreSet.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Remark { + get { + if (this.IsRemarkNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_PreSet.RemarkColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.RemarkColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime wdate { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_PreSet.wdateColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_PreSet\' 테이블의 \'wdate\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.wdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int vOption { + get { + if (this.IsvOptionNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_PreSet.vOptionColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.vOptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int vJobInfo { + get { + if (this.IsvJobInfoNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_PreSet.vJobInfoColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.vJobInfoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int vSidInfo { + get { + if (this.IsvSidInfoNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_PreSet.vSidInfoColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.vSidInfoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int vServerWrite { + get { + if (this.IsvServerWriteNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_PreSet.vServerWriteColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.vServerWriteColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string jobtype { + get { + if (this.IsjobtypeNull()) { + return "ㅡ"; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_PreSet.jobtypeColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.jobtypeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string bypasssid { + get { + if (this.IsbypasssidNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_PreSet.bypasssidColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.bypasssidColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int vWMSInfo { + get { + if (this.IsvWMSInfoNull()) { + return 0; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_PreSet.vWMSInfoColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_PreSet.vWMSInfoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMCNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.MCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMCNull() { + this[this.tableK4EE_Component_Reel_PreSet.MCColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRemarkNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.RemarkColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRemarkNull() { + this[this.tableK4EE_Component_Reel_PreSet.RemarkColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IswdateNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.wdateColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetwdateNull() { + this[this.tableK4EE_Component_Reel_PreSet.wdateColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvOptionNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.vOptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvOptionNull() { + this[this.tableK4EE_Component_Reel_PreSet.vOptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvJobInfoNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.vJobInfoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvJobInfoNull() { + this[this.tableK4EE_Component_Reel_PreSet.vJobInfoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvSidInfoNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.vSidInfoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvSidInfoNull() { + this[this.tableK4EE_Component_Reel_PreSet.vSidInfoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvServerWriteNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.vServerWriteColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvServerWriteNull() { + this[this.tableK4EE_Component_Reel_PreSet.vServerWriteColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsjobtypeNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.jobtypeColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetjobtypeNull() { + this[this.tableK4EE_Component_Reel_PreSet.jobtypeColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsbypasssidNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.bypasssidColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetbypasssidNull() { + this[this.tableK4EE_Component_Reel_PreSet.bypasssidColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvWMSInfoNull() { + return this.IsNull(this.tableK4EE_Component_Reel_PreSet.vWMSInfoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvWMSInfoNull() { + this[this.tableK4EE_Component_Reel_PreSet.vWMSInfoColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_CustInfoRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_CustInfoDataTable tableK4EE_Component_Reel_CustInfo; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_CustInfoRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_CustInfo = ((K4EE_Component_Reel_CustInfoDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string code { + get { + return ((string)(this[this.tableK4EE_Component_Reel_CustInfo.codeColumn])); + } + set { + this[this.tableK4EE_Component_Reel_CustInfo.codeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string name { + get { + if (this.IsnameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_CustInfo.nameColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_CustInfo.nameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsnameNull() { + return this.IsNull(this.tableK4EE_Component_Reel_CustInfo.nameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetnameNull() { + this[this.tableK4EE_Component_Reel_CustInfo.nameColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class ResultSummaryRow : global::System.Data.DataRow { + + private ResultSummaryDataTable tableResultSummary; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal ResultSummaryRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableResultSummary = ((ResultSummaryDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PARTNO { + get { + return ((string)(this[this.tableResultSummary.PARTNOColumn])); + } + set { + this[this.tableResultSummary.PARTNOColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string VLOT { + get { + return ((string)(this[this.tableResultSummary.VLOTColumn])); + } + set { + this[this.tableResultSummary.VLOTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int QTY { + get { + if (this.IsQTYNull()) { + return 0; + } + else { + return ((int)(this[this.tableResultSummary.QTYColumn])); + } + } + set { + this[this.tableResultSummary.QTYColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int KPC { + get { + if (this.IsKPCNull()) { + return 0; + } + else { + return ((int)(this[this.tableResultSummary.KPCColumn])); + } + } + set { + this[this.tableResultSummary.KPCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsQTYNull() { + return this.IsNull(this.tableResultSummary.QTYColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetQTYNull() { + this[this.tableResultSummary.QTYColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsKPCNull() { + return this.IsNull(this.tableResultSummary.KPCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetKPCNull() { + this[this.tableResultSummary.KPCColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_Print_InformationRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_Print_InformationDataTable tableK4EE_Component_Reel_Print_Information; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal K4EE_Component_Reel_Print_InformationRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_Print_Information = ((K4EE_Component_Reel_Print_InformationDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_Print_Information.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Print_Information.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MC { + get { + if (this.IsMCNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Print_Information.MCColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Print_Information.MCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SID { + get { + return ((string)(this[this.tableK4EE_Component_Reel_Print_Information.SIDColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Print_Information.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PrintPosition { + get { + if (this.IsPrintPositionNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Print_Information.PrintPositionColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Print_Information.PrintPositionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Remark { + get { + if (this.IsRemarkNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Print_Information.RemarkColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Print_Information.RemarkColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime wdate { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Print_Information.wdateColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Print_Information\' 테이블의 \'wdate\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Print_Information.wdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMCNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Print_Information.MCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMCNull() { + this[this.tableK4EE_Component_Reel_Print_Information.MCColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPrintPositionNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Print_Information.PrintPositionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPrintPositionNull() { + this[this.tableK4EE_Component_Reel_Print_Information.PrintPositionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRemarkNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Print_Information.RemarkColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRemarkNull() { + this[this.tableK4EE_Component_Reel_Print_Information.RemarkColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IswdateNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Print_Information.wdateColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetwdateNull() { + this[this.tableK4EE_Component_Reel_Print_Information.wdateColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class CustCodeListRow : global::System.Data.DataRow { + + private CustCodeListDataTable tableCustCodeList; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal CustCodeListRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableCustCodeList = ((CustCodeListDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string CustCode { + get { + return ((string)(this[this.tableCustCodeList.CustCodeColumn])); + } + set { + this[this.tableCustCodeList.CustCodeColumn] = value; + } + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class SidinfoCustGroupRow : global::System.Data.DataRow { + + private SidinfoCustGroupDataTable tableSidinfoCustGroup; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal SidinfoCustGroupRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableSidinfoCustGroup = ((SidinfoCustGroupDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string CustCode { + get { + return ((string)(this[this.tableSidinfoCustGroup.CustCodeColumn])); + } + set { + this[this.tableSidinfoCustGroup.CustCodeColumn] = value; + } + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class UsersRow : global::System.Data.DataRow { + + private UsersDataTable tableUsers; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal UsersRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableUsers = ((UsersDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableUsers.idxColumn])); + } + set { + this[this.tableUsers.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string No { + get { + if (this.IsNoNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableUsers.NoColumn])); + } + } + set { + this[this.tableUsers.NoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Name { + get { + if (this.IsNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableUsers.NameColumn])); + } + } + set { + this[this.tableUsers.NameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Memo { + get { + if (this.IsMemoNull()) { + return ""; + } + else { + return ((string)(this[this.tableUsers.MemoColumn])); + } + } + set { + this[this.tableUsers.MemoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsNoNull() { + return this.IsNull(this.tableUsers.NoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetNoNull() { + this[this.tableUsers.NoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsNameNull() { + return this.IsNull(this.tableUsers.NameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetNameNull() { + this[this.tableUsers.NameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMemoNull() { + return this.IsNull(this.tableUsers.MemoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMemoNull() { + this[this.tableUsers.MemoColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class MCModelRow : global::System.Data.DataRow { + + private MCModelDataTable tableMCModel; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal MCModelRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableMCModel = ((MCModelDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableMCModel.idxColumn])); + } + set { + this[this.tableMCModel.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + if (this.IsTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMCModel.TitleColumn])); + } + } + set { + this[this.tableMCModel.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int pidx { + get { + if (this.IspidxNull()) { + return -1; + } + else { + return ((int)(this[this.tableMCModel.pidxColumn])); + } + } + set { + this[this.tableMCModel.pidxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public short MotIndex { + get { + if (this.IsMotIndexNull()) { + return -1; + } + else { + return ((short)(this[this.tableMCModel.MotIndexColumn])); + } + } + set { + this[this.tableMCModel.MotIndexColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public short PosIndex { + get { + if (this.IsPosIndexNull()) { + return -1; + } + else { + return ((short)(this[this.tableMCModel.PosIndexColumn])); + } + } + set { + this[this.tableMCModel.PosIndexColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PosTitle { + get { + if (this.IsPosTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMCModel.PosTitleColumn])); + } + } + set { + this[this.tableMCModel.PosTitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public double Position { + get { + if (this.IsPositionNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMCModel.PositionColumn])); + } + } + set { + this[this.tableMCModel.PositionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SpdTitle { + get { + if (this.IsSpdTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMCModel.SpdTitleColumn])); + } + } + set { + this[this.tableMCModel.SpdTitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public double Speed { + get { + if (this.IsSpeedNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMCModel.SpeedColumn])); + } + } + set { + this[this.tableMCModel.SpeedColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public double SpeedAcc { + get { + if (this.IsSpeedAccNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMCModel.SpeedAccColumn])); + } + } + set { + this[this.tableMCModel.SpeedAccColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool Check { + get { + if (this.IsCheckNull()) { + return false; + } + else { + return ((bool)(this[this.tableMCModel.CheckColumn])); + } + } + set { + this[this.tableMCModel.CheckColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public double SpeedDcc { + get { + if (this.IsSpeedDccNull()) { + return 0D; + } + else { + return ((double)(this[this.tableMCModel.SpeedDccColumn])); + } + } + set { + this[this.tableMCModel.SpeedDccColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Description { + get { + if (this.IsDescriptionNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMCModel.DescriptionColumn])); + } + } + set { + this[this.tableMCModel.DescriptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Category { + get { + if (this.IsCategoryNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMCModel.CategoryColumn])); + } + } + set { + this[this.tableMCModel.CategoryColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string MotName { + get { + if (this.IsMotNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableMCModel.MotNameColumn])); + } + } + set { + this[this.tableMCModel.MotNameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTitleNull() { + return this.IsNull(this.tableMCModel.TitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTitleNull() { + this[this.tableMCModel.TitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IspidxNull() { + return this.IsNull(this.tableMCModel.pidxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetpidxNull() { + this[this.tableMCModel.pidxColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMotIndexNull() { + return this.IsNull(this.tableMCModel.MotIndexColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMotIndexNull() { + this[this.tableMCModel.MotIndexColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPosIndexNull() { + return this.IsNull(this.tableMCModel.PosIndexColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPosIndexNull() { + this[this.tableMCModel.PosIndexColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPosTitleNull() { + return this.IsNull(this.tableMCModel.PosTitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPosTitleNull() { + this[this.tableMCModel.PosTitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPositionNull() { + return this.IsNull(this.tableMCModel.PositionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPositionNull() { + this[this.tableMCModel.PositionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSpdTitleNull() { + return this.IsNull(this.tableMCModel.SpdTitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSpdTitleNull() { + this[this.tableMCModel.SpdTitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSpeedNull() { + return this.IsNull(this.tableMCModel.SpeedColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSpeedNull() { + this[this.tableMCModel.SpeedColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSpeedAccNull() { + return this.IsNull(this.tableMCModel.SpeedAccColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSpeedAccNull() { + this[this.tableMCModel.SpeedAccColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCheckNull() { + return this.IsNull(this.tableMCModel.CheckColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCheckNull() { + this[this.tableMCModel.CheckColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSpeedDccNull() { + return this.IsNull(this.tableMCModel.SpeedDccColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSpeedDccNull() { + this[this.tableMCModel.SpeedDccColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDescriptionNull() { + return this.IsNull(this.tableMCModel.DescriptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDescriptionNull() { + this[this.tableMCModel.DescriptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCategoryNull() { + return this.IsNull(this.tableMCModel.CategoryColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCategoryNull() { + this[this.tableMCModel.CategoryColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMotNameNull() { + return this.IsNull(this.tableMCModel.MotNameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMotNameNull() { + this[this.tableMCModel.MotNameColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class languageRow : global::System.Data.DataRow { + + private languageDataTable tablelanguage; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal languageRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tablelanguage = ((languageDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Section { + get { + return ((string)(this[this.tablelanguage.SectionColumn])); + } + set { + this[this.tablelanguage.SectionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Key { + get { + return ((string)(this[this.tablelanguage.KeyColumn])); + } + set { + this[this.tablelanguage.KeyColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Value { + get { + if (this.IsValueNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tablelanguage.ValueColumn])); + } + } + set { + this[this.tablelanguage.ValueColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsValueNull() { + return this.IsNull(this.tablelanguage.ValueColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetValueNull() { + this[this.tablelanguage.ValueColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class OPModelRow : global::System.Data.DataRow { + + private OPModelDataTable tableOPModel; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal OPModelRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableOPModel = ((OPModelDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableOPModel.idxColumn])); + } + set { + this[this.tableOPModel.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int Midx { + get { + if (this.IsMidxNull()) { + return -1; + } + else { + return ((int)(this[this.tableOPModel.MidxColumn])); + } + } + set { + this[this.tableOPModel.MidxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + if (this.IsTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOPModel.TitleColumn])); + } + } + set { + this[this.tableOPModel.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Memo { + get { + if (this.IsMemoNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOPModel.MemoColumn])); + } + } + set { + this[this.tableOPModel.MemoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Code { + get { + if (this.IsCodeNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOPModel.CodeColumn])); + } + } + set { + this[this.tableOPModel.CodeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Motion { + get { + if (this.IsMotionNull()) { + return "Default"; + } + else { + return ((string)(this[this.tableOPModel.MotionColumn])); + } + } + set { + this[this.tableOPModel.MotionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool BCD_1D { + get { + if (this.IsBCD_1DNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.BCD_1DColumn])); + } + } + set { + this[this.tableOPModel.BCD_1DColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool BCD_QR { + get { + if (this.IsBCD_QRNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.BCD_QRColumn])); + } + } + set { + this[this.tableOPModel.BCD_QRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool BCD_DM { + get { + if (this.IsBCD_DMNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.BCD_DMColumn])); + } + } + set { + this[this.tableOPModel.BCD_DMColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ushort vOption { + get { + if (this.IsvOptionNull()) { + return 0; + } + else { + return ((ushort)(this[this.tableOPModel.vOptionColumn])); + } + } + set { + this[this.tableOPModel.vOptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ushort vSIDInfo { + get { + if (this.IsvSIDInfoNull()) { + return 0; + } + else { + return ((ushort)(this[this.tableOPModel.vSIDInfoColumn])); + } + } + set { + this[this.tableOPModel.vSIDInfoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ushort vJobInfo { + get { + if (this.IsvJobInfoNull()) { + return 0; + } + else { + return ((ushort)(this[this.tableOPModel.vJobInfoColumn])); + } + } + set { + this[this.tableOPModel.vJobInfoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ushort vSIDConv { + get { + if (this.IsvSIDConvNull()) { + return 0; + } + else { + return ((ushort)(this[this.tableOPModel.vSIDConvColumn])); + } + } + set { + this[this.tableOPModel.vSIDConvColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Def_VName { + get { + if (this.IsDef_VNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOPModel.Def_VNameColumn])); + } + } + set { + this[this.tableOPModel.Def_VNameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Def_MFG { + get { + if (this.IsDef_MFGNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOPModel.Def_MFGColumn])); + } + } + set { + this[this.tableOPModel.Def_MFGColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IgnoreOtherBarcode { + get { + if (this.IsIgnoreOtherBarcodeNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.IgnoreOtherBarcodeColumn])); + } + } + set { + this[this.tableOPModel.IgnoreOtherBarcodeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool bConv { + get { + if (this.IsbConvNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.bConvColumn])); + } + } + set { + this[this.tableOPModel.bConvColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int BSave { + get { + if (this.IsBSaveNull()) { + return 0; + } + else { + return ((int)(this[this.tableOPModel.BSaveColumn])); + } + } + set { + this[this.tableOPModel.BSaveColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool DisableCamera { + get { + if (this.IsDisableCameraNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.DisableCameraColumn])); + } + } + set { + this[this.tableOPModel.DisableCameraColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool DisablePrinter { + get { + if (this.IsDisablePrinterNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.DisablePrinterColumn])); + } + } + set { + this[this.tableOPModel.DisablePrinterColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool CheckSIDExsit { + get { + if (this.IsCheckSIDExsitNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.CheckSIDExsitColumn])); + } + } + set { + this[this.tableOPModel.CheckSIDExsitColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool bOwnZPL { + get { + if (this.IsbOwnZPLNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.bOwnZPLColumn])); + } + } + set { + this[this.tableOPModel.bOwnZPLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IgnorePartNo { + get { + if (this.IsIgnorePartNoNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.IgnorePartNoColumn])); + } + } + set { + this[this.tableOPModel.IgnorePartNoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IgnoreBatch { + get { + if (this.IsIgnoreBatchNull()) { + return false; + } + else { + return ((bool)(this[this.tableOPModel.IgnoreBatchColumn])); + } + } + set { + this[this.tableOPModel.IgnoreBatchColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int AutoOutConveyor { + get { + if (this.IsAutoOutConveyorNull()) { + return 0; + } + else { + return ((int)(this[this.tableOPModel.AutoOutConveyorColumn])); + } + } + set { + this[this.tableOPModel.AutoOutConveyorColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ushort vWMSInfo { + get { + if (this.IsvWMSInfoNull()) { + return 0; + } + else { + return ((ushort)(this[this.tableOPModel.vWMSInfoColumn])); + } + } + set { + this[this.tableOPModel.vWMSInfoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMidxNull() { + return this.IsNull(this.tableOPModel.MidxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMidxNull() { + this[this.tableOPModel.MidxColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTitleNull() { + return this.IsNull(this.tableOPModel.TitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTitleNull() { + this[this.tableOPModel.TitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMemoNull() { + return this.IsNull(this.tableOPModel.MemoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMemoNull() { + this[this.tableOPModel.MemoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCodeNull() { + return this.IsNull(this.tableOPModel.CodeColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCodeNull() { + this[this.tableOPModel.CodeColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsMotionNull() { + return this.IsNull(this.tableOPModel.MotionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetMotionNull() { + this[this.tableOPModel.MotionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsBCD_1DNull() { + return this.IsNull(this.tableOPModel.BCD_1DColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetBCD_1DNull() { + this[this.tableOPModel.BCD_1DColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsBCD_QRNull() { + return this.IsNull(this.tableOPModel.BCD_QRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetBCD_QRNull() { + this[this.tableOPModel.BCD_QRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsBCD_DMNull() { + return this.IsNull(this.tableOPModel.BCD_DMColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetBCD_DMNull() { + this[this.tableOPModel.BCD_DMColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvOptionNull() { + return this.IsNull(this.tableOPModel.vOptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvOptionNull() { + this[this.tableOPModel.vOptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvSIDInfoNull() { + return this.IsNull(this.tableOPModel.vSIDInfoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvSIDInfoNull() { + this[this.tableOPModel.vSIDInfoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvJobInfoNull() { + return this.IsNull(this.tableOPModel.vJobInfoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvJobInfoNull() { + this[this.tableOPModel.vJobInfoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvSIDConvNull() { + return this.IsNull(this.tableOPModel.vSIDConvColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvSIDConvNull() { + this[this.tableOPModel.vSIDConvColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDef_VNameNull() { + return this.IsNull(this.tableOPModel.Def_VNameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDef_VNameNull() { + this[this.tableOPModel.Def_VNameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDef_MFGNull() { + return this.IsNull(this.tableOPModel.Def_MFGColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDef_MFGNull() { + this[this.tableOPModel.Def_MFGColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIgnoreOtherBarcodeNull() { + return this.IsNull(this.tableOPModel.IgnoreOtherBarcodeColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIgnoreOtherBarcodeNull() { + this[this.tableOPModel.IgnoreOtherBarcodeColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsbConvNull() { + return this.IsNull(this.tableOPModel.bConvColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetbConvNull() { + this[this.tableOPModel.bConvColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsBSaveNull() { + return this.IsNull(this.tableOPModel.BSaveColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetBSaveNull() { + this[this.tableOPModel.BSaveColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDisableCameraNull() { + return this.IsNull(this.tableOPModel.DisableCameraColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDisableCameraNull() { + this[this.tableOPModel.DisableCameraColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDisablePrinterNull() { + return this.IsNull(this.tableOPModel.DisablePrinterColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDisablePrinterNull() { + this[this.tableOPModel.DisablePrinterColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsCheckSIDExsitNull() { + return this.IsNull(this.tableOPModel.CheckSIDExsitColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetCheckSIDExsitNull() { + this[this.tableOPModel.CheckSIDExsitColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsbOwnZPLNull() { + return this.IsNull(this.tableOPModel.bOwnZPLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetbOwnZPLNull() { + this[this.tableOPModel.bOwnZPLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIgnorePartNoNull() { + return this.IsNull(this.tableOPModel.IgnorePartNoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIgnorePartNoNull() { + this[this.tableOPModel.IgnorePartNoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIgnoreBatchNull() { + return this.IsNull(this.tableOPModel.IgnoreBatchColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIgnoreBatchNull() { + this[this.tableOPModel.IgnoreBatchColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsAutoOutConveyorNull() { + return this.IsNull(this.tableOPModel.AutoOutConveyorColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetAutoOutConveyorNull() { + this[this.tableOPModel.AutoOutConveyorColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsvWMSInfoNull() { + return this.IsNull(this.tableOPModel.vWMSInfoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetvWMSInfoNull() { + this[this.tableOPModel.vWMSInfoColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class BCDDataRow : global::System.Data.DataRow { + + private BCDDataDataTable tableBCDData; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal BCDDataRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableBCDData = ((BCDDataDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime Start { + get { + return ((global::System.DateTime)(this[this.tableBCDData.StartColumn])); + } + set { + this[this.tableBCDData.StartColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string ID { + get { + if (this.IsIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableBCDData.IDColumn])); + } + } + set { + this[this.tableBCDData.IDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SID { + get { + if (this.IsSIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableBCDData.SIDColumn])); + } + } + set { + this[this.tableBCDData.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string RAW { + get { + if (this.IsRAWNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableBCDData.RAWColumn])); + } + } + set { + this[this.tableBCDData.RAWColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsIDNull() { + return this.IsNull(this.tableBCDData.IDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetIDNull() { + this[this.tableBCDData.IDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSIDNull() { + return this.IsNull(this.tableBCDData.SIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSIDNull() { + this[this.tableBCDData.SIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsRAWNull() { + return this.IsNull(this.tableBCDData.RAWColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetRAWNull() { + this[this.tableBCDData.RAWColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class UserSIDRow : global::System.Data.DataRow { + + private UserSIDDataTable tableUserSID; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal UserSIDRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableUserSID = ((UserSIDDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableUserSID.idxColumn])); + } + set { + this[this.tableUserSID.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Port { + get { + if (this.IsPortNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableUserSID.PortColumn])); + } + } + set { + this[this.tableUserSID.PortColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string SID { + get { + if (this.IsSIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableUserSID.SIDColumn])); + } + } + set { + this[this.tableUserSID.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPortNull() { + return this.IsNull(this.tableUserSID.PortColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPortNull() { + this[this.tableUserSID.PortColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsSIDNull() { + return this.IsNull(this.tableUserSID.SIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetSIDNull() { + this[this.tableUserSID.SIDColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class MailFormatRow : global::System.Data.DataRow { + + private MailFormatDataTable tableMailFormat; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal MailFormatRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableMailFormat = ((MailFormatDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string subject { + get { + try { + return ((string)(this[this.tableMailFormat.subjectColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'MailFormat\' 테이블의 \'subject\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableMailFormat.subjectColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string content { + get { + try { + return ((string)(this[this.tableMailFormat.contentColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'MailFormat\' 테이블의 \'content\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableMailFormat.contentColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IssubjectNull() { + return this.IsNull(this.tableMailFormat.subjectColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetsubjectNull() { + this[this.tableMailFormat.subjectColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IscontentNull() { + return this.IsNull(this.tableMailFormat.contentColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetcontentNull() { + this[this.tableMailFormat.contentColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class MailRecipientRow : global::System.Data.DataRow { + + private MailRecipientDataTable tableMailRecipient; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal MailRecipientRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableMailRecipient = ((MailRecipientDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableMailRecipient.idxColumn])); + } + set { + this[this.tableMailRecipient.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Name { + get { + try { + return ((string)(this[this.tableMailRecipient.NameColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'MailRecipient\' 테이블의 \'Name\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableMailRecipient.NameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Address { + get { + try { + return ((string)(this[this.tableMailRecipient.AddressColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'MailRecipient\' 테이블의 \'Address\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableMailRecipient.AddressColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsNameNull() { + return this.IsNull(this.tableMailRecipient.NameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetNameNull() { + this[this.tableMailRecipient.NameColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsAddressNull() { + return this.IsNull(this.tableMailRecipient.AddressColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetAddressNull() { + this[this.tableMailRecipient.AddressColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class SIDHistoryRow : global::System.Data.DataRow { + + private SIDHistoryDataTable tableSIDHistory; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal SIDHistoryRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableSIDHistory = ((SIDHistoryDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableSIDHistory.idxColumn])); + } + set { + this[this.tableSIDHistory.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public System.DateTime time { + get { + try { + return ((global::System.DateTime)(this[this.tableSIDHistory.timeColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'SIDHistory\' 테이블의 \'time\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableSIDHistory.timeColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string seqdate { + get { + if (this.IsseqdateNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableSIDHistory.seqdateColumn])); + } + } + set { + this[this.tableSIDHistory.seqdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string seqno { + get { + if (this.IsseqnoNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableSIDHistory.seqnoColumn])); + } + } + set { + this[this.tableSIDHistory.seqnoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string sid { + get { + if (this.IssidNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableSIDHistory.sidColumn])); + } + } + set { + this[this.tableSIDHistory.sidColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string rid { + get { + if (this.IsridNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableSIDHistory.ridColumn])); + } + } + set { + this[this.tableSIDHistory.ridColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int qty { + get { + if (this.IsqtyNull()) { + return 0; + } + else { + return ((int)(this[this.tableSIDHistory.qtyColumn])); + } + } + set { + this[this.tableSIDHistory.qtyColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int rev { + get { + if (this.IsrevNull()) { + return 0; + } + else { + return ((int)(this[this.tableSIDHistory.revColumn])); + } + } + set { + this[this.tableSIDHistory.revColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int acc { + get { + if (this.IsaccNull()) { + return 0; + } + else { + return ((int)(this[this.tableSIDHistory.accColumn])); + } + } + set { + this[this.tableSIDHistory.accColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IstimeNull() { + return this.IsNull(this.tableSIDHistory.timeColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SettimeNull() { + this[this.tableSIDHistory.timeColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsseqdateNull() { + return this.IsNull(this.tableSIDHistory.seqdateColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetseqdateNull() { + this[this.tableSIDHistory.seqdateColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsseqnoNull() { + return this.IsNull(this.tableSIDHistory.seqnoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetseqnoNull() { + this[this.tableSIDHistory.seqnoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IssidNull() { + return this.IsNull(this.tableSIDHistory.sidColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetsidNull() { + this[this.tableSIDHistory.sidColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsridNull() { + return this.IsNull(this.tableSIDHistory.ridColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetridNull() { + this[this.tableSIDHistory.ridColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsqtyNull() { + return this.IsNull(this.tableSIDHistory.qtyColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetqtyNull() { + this[this.tableSIDHistory.qtyColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsrevNull() { + return this.IsNull(this.tableSIDHistory.revColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetrevNull() { + this[this.tableSIDHistory.revColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsaccNull() { + return this.IsNull(this.tableSIDHistory.accColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetaccNull() { + this[this.tableSIDHistory.accColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class InputDescriptionRow : global::System.Data.DataRow { + + private InputDescriptionDataTable tableInputDescription; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal InputDescriptionRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableInputDescription = ((InputDescriptionDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public short Idx { + get { + return ((short)(this[this.tableInputDescription.IdxColumn])); + } + set { + this[this.tableInputDescription.IdxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + if (this.IsTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableInputDescription.TitleColumn])); + } + } + set { + this[this.tableInputDescription.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Description { + get { + if (this.IsDescriptionNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableInputDescription.DescriptionColumn])); + } + } + set { + this[this.tableInputDescription.DescriptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int TerminalNo { + get { + try { + return ((int)(this[this.tableInputDescription.TerminalNoColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'InputDescription\' 테이블의 \'TerminalNo\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableInputDescription.TerminalNoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool Invert { + get { + try { + return ((bool)(this[this.tableInputDescription.InvertColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'InputDescription\' 테이블의 \'Invert\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableInputDescription.InvertColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Name { + get { + if (this.IsNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableInputDescription.NameColumn])); + } + } + set { + this[this.tableInputDescription.NameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTitleNull() { + return this.IsNull(this.tableInputDescription.TitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTitleNull() { + this[this.tableInputDescription.TitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDescriptionNull() { + return this.IsNull(this.tableInputDescription.DescriptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDescriptionNull() { + this[this.tableInputDescription.DescriptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTerminalNoNull() { + return this.IsNull(this.tableInputDescription.TerminalNoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTerminalNoNull() { + this[this.tableInputDescription.TerminalNoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsInvertNull() { + return this.IsNull(this.tableInputDescription.InvertColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetInvertNull() { + this[this.tableInputDescription.InvertColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsNameNull() { + return this.IsNull(this.tableInputDescription.NameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetNameNull() { + this[this.tableInputDescription.NameColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class OutputDescriptionRow : global::System.Data.DataRow { + + private OutputDescriptionDataTable tableOutputDescription; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal OutputDescriptionRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableOutputDescription = ((OutputDescriptionDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public short Idx { + get { + return ((short)(this[this.tableOutputDescription.IdxColumn])); + } + set { + this[this.tableOutputDescription.IdxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + if (this.IsTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOutputDescription.TitleColumn])); + } + } + set { + this[this.tableOutputDescription.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Description { + get { + if (this.IsDescriptionNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOutputDescription.DescriptionColumn])); + } + } + set { + this[this.tableOutputDescription.DescriptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int TerminalNo { + get { + try { + return ((int)(this[this.tableOutputDescription.TerminalNoColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'OutputDescription\' 테이블의 \'TerminalNo\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableOutputDescription.TerminalNoColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool Invert { + get { + try { + return ((bool)(this[this.tableOutputDescription.InvertColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'OutputDescription\' 테이블의 \'Invert\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableOutputDescription.InvertColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Name { + get { + if (this.IsNameNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableOutputDescription.NameColumn])); + } + } + set { + this[this.tableOutputDescription.NameColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTitleNull() { + return this.IsNull(this.tableOutputDescription.TitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTitleNull() { + this[this.tableOutputDescription.TitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDescriptionNull() { + return this.IsNull(this.tableOutputDescription.DescriptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDescriptionNull() { + this[this.tableOutputDescription.DescriptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTerminalNoNull() { + return this.IsNull(this.tableOutputDescription.TerminalNoColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTerminalNoNull() { + this[this.tableOutputDescription.TerminalNoColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsInvertNull() { + return this.IsNull(this.tableOutputDescription.InvertColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetInvertNull() { + this[this.tableOutputDescription.InvertColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsNameNull() { + return this.IsNull(this.tableOutputDescription.NameColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetNameNull() { + this[this.tableOutputDescription.NameColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class UserTableRow : global::System.Data.DataRow { + + private UserTableDataTable tableUserTable; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal UserTableRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableUserTable = ((UserTableDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string ID { + get { + return ((string)(this[this.tableUserTable.IDColumn])); + } + set { + this[this.tableUserTable.IDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string PASS { + get { + if (this.IsPASSNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableUserTable.PASSColumn])); + } + } + set { + this[this.tableUserTable.PASSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string LEVEL { + get { + if (this.IsLEVELNull()) { + return "O"; + } + else { + return ((string)(this[this.tableUserTable.LEVELColumn])); + } + } + set { + this[this.tableUserTable.LEVELColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsPASSNull() { + return this.IsNull(this.tableUserTable.PASSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetPASSNull() { + this[this.tableUserTable.PASSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsLEVELNull() { + return this.IsNull(this.tableUserTable.LEVELColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetLEVELNull() { + this[this.tableUserTable.LEVELColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class ErrorDescriptionRow : global::System.Data.DataRow { + + private ErrorDescriptionDataTable tableErrorDescription; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal ErrorDescriptionRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableErrorDescription = ((ErrorDescriptionDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public short Idx { + get { + return ((short)(this[this.tableErrorDescription.IdxColumn])); + } + set { + this[this.tableErrorDescription.IdxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + if (this.IsTitleNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableErrorDescription.TitleColumn])); + } + } + set { + this[this.tableErrorDescription.TitleColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Description { + get { + if (this.IsDescriptionNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableErrorDescription.DescriptionColumn])); + } + } + set { + this[this.tableErrorDescription.DescriptionColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Shorts { + get { + if (this.IsShortsNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableErrorDescription.ShortsColumn])); + } + } + set { + this[this.tableErrorDescription.ShortsColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsTitleNull() { + return this.IsNull(this.tableErrorDescription.TitleColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetTitleNull() { + this[this.tableErrorDescription.TitleColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsDescriptionNull() { + return this.IsNull(this.tableErrorDescription.DescriptionColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetDescriptionNull() { + this[this.tableErrorDescription.DescriptionColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool IsShortsNull() { + return this.IsNull(this.tableErrorDescription.ShortsColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public void SetShortsNull() { + this[this.tableErrorDescription.ShortsColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class ModelListRow : global::System.Data.DataRow { + + private ModelListDataTable tableModelList; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal ModelListRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableModelList = ((ModelListDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public string Title { + get { + return ((string)(this[this.tableModelList.TitleColumn])); + } + set { + this[this.tableModelList.TitleColumn] = value; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_ResultRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_ResultRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultRowChangeEvent(K4EE_Component_Reel_ResultRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_RegExRuleRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_RegExRuleRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleRowChangeEvent(K4EE_Component_Reel_RegExRuleRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_SID_ConvertRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_SID_ConvertRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertRowChangeEvent(K4EE_Component_Reel_SID_ConvertRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_SID_InformationRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_SID_InformationRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationRowChangeEvent(K4EE_Component_Reel_SID_InformationRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_PreSetRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_PreSetRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetRowChangeEvent(K4EE_Component_Reel_PreSetRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_CustInfoRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_CustInfoRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoRowChangeEvent(K4EE_Component_Reel_CustInfoRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class ResultSummaryRowChangeEvent : global::System.EventArgs { + + private ResultSummaryRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryRowChangeEvent(ResultSummaryRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class K4EE_Component_Reel_Print_InformationRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_Print_InformationRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationRowChangeEvent(K4EE_Component_Reel_Print_InformationRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class CustCodeListRowChangeEvent : global::System.EventArgs { + + private CustCodeListRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListRowChangeEvent(CustCodeListRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class SidinfoCustGroupRowChangeEvent : global::System.EventArgs { + + private SidinfoCustGroupRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupRowChangeEvent(SidinfoCustGroupRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class UsersRowChangeEvent : global::System.EventArgs { + + private UsersRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersRowChangeEvent(UsersRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UsersRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class MCModelRowChangeEvent : global::System.EventArgs { + + private MCModelRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelRowChangeEvent(MCModelRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MCModelRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class languageRowChangeEvent : global::System.EventArgs { + + private languageRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageRowChangeEvent(languageRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public languageRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class OPModelRowChangeEvent : global::System.EventArgs { + + private OPModelRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelRowChangeEvent(OPModelRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OPModelRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class BCDDataRowChangeEvent : global::System.EventArgs { + + private BCDDataRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataRowChangeEvent(BCDDataRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public BCDDataRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class UserSIDRowChangeEvent : global::System.EventArgs { + + private UserSIDRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDRowChangeEvent(UserSIDRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserSIDRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class MailFormatRowChangeEvent : global::System.EventArgs { + + private MailFormatRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailFormatRowChangeEvent(MailFormatRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailFormatRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class MailRecipientRowChangeEvent : global::System.EventArgs { + + private MailRecipientRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientRowChangeEvent(MailRecipientRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public MailRecipientRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class SIDHistoryRowChangeEvent : global::System.EventArgs { + + private SIDHistoryRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SIDHistoryRowChangeEvent(SIDHistoryRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SIDHistoryRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class InputDescriptionRowChangeEvent : global::System.EventArgs { + + private InputDescriptionRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionRowChangeEvent(InputDescriptionRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public InputDescriptionRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class OutputDescriptionRowChangeEvent : global::System.EventArgs { + + private OutputDescriptionRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionRowChangeEvent(OutputDescriptionRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public OutputDescriptionRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class UserTableRowChangeEvent : global::System.EventArgs { + + private UserTableRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableRowChangeEvent(UserTableRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UserTableRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class ErrorDescriptionRowChangeEvent : global::System.EventArgs { + + private ErrorDescriptionRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionRowChangeEvent(ErrorDescriptionRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ErrorDescriptionRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public class ModelListRowChangeEvent : global::System.EventArgs { + + private ModelListRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListRowChangeEvent(ModelListRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ModelListRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} +namespace Project.DataSet1TableAdapters { + + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_ResultTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_ResultTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_Result"; + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("STIME", "STIME"); + tableMapping.ColumnMappings.Add("ETIME", "ETIME"); + tableMapping.ColumnMappings.Add("PDATE", "PDATE"); + tableMapping.ColumnMappings.Add("JTYPE", "JTYPE"); + tableMapping.ColumnMappings.Add("JGUID", "JGUID"); + tableMapping.ColumnMappings.Add("SID", "SID"); + tableMapping.ColumnMappings.Add("SID0", "SID0"); + tableMapping.ColumnMappings.Add("RID", "RID"); + tableMapping.ColumnMappings.Add("RID0", "RID0"); + tableMapping.ColumnMappings.Add("RSN", "RSN"); + tableMapping.ColumnMappings.Add("QR", "QR"); + tableMapping.ColumnMappings.Add("ZPL", "ZPL"); + tableMapping.ColumnMappings.Add("POS", "POS"); + tableMapping.ColumnMappings.Add("LOC", "LOC"); + tableMapping.ColumnMappings.Add("ANGLE", "ANGLE"); + tableMapping.ColumnMappings.Add("QTY", "QTY"); + tableMapping.ColumnMappings.Add("QTY0", "QTY0"); + tableMapping.ColumnMappings.Add("wdate", "wdate"); + tableMapping.ColumnMappings.Add("VNAME", "VNAME"); + tableMapping.ColumnMappings.Add("PRNATTACH", "PRNATTACH"); + tableMapping.ColumnMappings.Add("PRNVALID", "PRNVALID"); + tableMapping.ColumnMappings.Add("PTIME", "PTIME"); + tableMapping.ColumnMappings.Add("MFGDATE", "MFGDATE"); + tableMapping.ColumnMappings.Add("VLOT", "VLOT"); + tableMapping.ColumnMappings.Add("REMARK", "REMARK"); + tableMapping.ColumnMappings.Add("MC", "MC"); + tableMapping.ColumnMappings.Add("PARTNO", "PARTNO"); + tableMapping.ColumnMappings.Add("CUSTCODE", "CUSTCODE"); + tableMapping.ColumnMappings.Add("ATIME", "ATIME"); + tableMapping.ColumnMappings.Add("BATCH", "BATCH"); + tableMapping.ColumnMappings.Add("qtymax", "qtymax"); + tableMapping.ColumnMappings.Add("GUID", "GUID"); + tableMapping.ColumnMappings.Add("iNBOUND", "iNBOUND"); + tableMapping.ColumnMappings.Add("MCN", "MCN"); + tableMapping.ColumnMappings.Add("target", "target"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = "DELETE FROM [K4EE_Component_Reel_Result] WHERE (([idx] = @Original_idx) AND ([STI" + + "ME] = @Original_STIME) AND ((@IsNull_ETIME = 1 AND [ETIME] IS NULL) OR ([ETIME] " + + "= @Original_ETIME)) AND ((@IsNull_PDATE = 1 AND [PDATE] IS NULL) OR ([PDATE] = @" + + "Original_PDATE)) AND ((@IsNull_JTYPE = 1 AND [JTYPE] IS NULL) OR ([JTYPE] = @Ori" + + "ginal_JTYPE)) AND ((@IsNull_JGUID = 1 AND [JGUID] IS NULL) OR ([JGUID] = @Origin" + + "al_JGUID)) AND ((@IsNull_SID = 1 AND [SID] IS NULL) OR ([SID] = @Original_SID)) " + + "AND ((@IsNull_SID0 = 1 AND [SID0] IS NULL) OR ([SID0] = @Original_SID0)) AND ((@" + + "IsNull_RID = 1 AND [RID] IS NULL) OR ([RID] = @Original_RID)) AND ((@IsNull_RID0" + + " = 1 AND [RID0] IS NULL) OR ([RID0] = @Original_RID0)) AND ((@IsNull_RSN = 1 AND" + + " [RSN] IS NULL) OR ([RSN] = @Original_RSN)) AND ((@IsNull_QR = 1 AND [QR] IS NUL" + + "L) OR ([QR] = @Original_QR)) AND ((@IsNull_ZPL = 1 AND [ZPL] IS NULL) OR ([ZPL] " + + "= @Original_ZPL)) AND ((@IsNull_POS = 1 AND [POS] IS NULL) OR ([POS] = @Original" + + "_POS)) AND ((@IsNull_LOC = 1 AND [LOC] IS NULL) OR ([LOC] = @Original_LOC)) AND " + + "((@IsNull_ANGLE = 1 AND [ANGLE] IS NULL) OR ([ANGLE] = @Original_ANGLE)) AND ((@" + + "IsNull_QTY = 1 AND [QTY] IS NULL) OR ([QTY] = @Original_QTY)) AND ((@IsNull_QTY0" + + " = 1 AND [QTY0] IS NULL) OR ([QTY0] = @Original_QTY0)) AND ([wdate] = @Original_" + + "wdate) AND ((@IsNull_VNAME = 1 AND [VNAME] IS NULL) OR ([VNAME] = @Original_VNAM" + + "E)) AND ((@IsNull_PRNATTACH = 1 AND [PRNATTACH] IS NULL) OR ([PRNATTACH] = @Orig" + + "inal_PRNATTACH)) AND ((@IsNull_PRNVALID = 1 AND [PRNVALID] IS NULL) OR ([PRNVALI" + + "D] = @Original_PRNVALID)) AND ((@IsNull_PTIME = 1 AND [PTIME] IS NULL) OR ([PTIM" + + "E] = @Original_PTIME)) AND ((@IsNull_MFGDATE = 1 AND [MFGDATE] IS NULL) OR ([MFG" + + "DATE] = @Original_MFGDATE)) AND ((@IsNull_VLOT = 1 AND [VLOT] IS NULL) OR ([VLOT" + + "] = @Original_VLOT)) AND ((@IsNull_REMARK = 1 AND [REMARK] IS NULL) OR ([REMARK]" + + " = @Original_REMARK)) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Origina" + + "l_MC)) AND ((@IsNull_PARTNO = 1 AND [PARTNO] IS NULL) OR ([PARTNO] = @Original_P" + + "ARTNO)) AND ((@IsNull_CUSTCODE = 1 AND [CUSTCODE] IS NULL) OR ([CUSTCODE] = @Ori" + + "ginal_CUSTCODE)) AND ((@IsNull_ATIME = 1 AND [ATIME] IS NULL) OR ([ATIME] = @Ori" + + "ginal_ATIME)) AND ((@IsNull_BATCH = 1 AND [BATCH] IS NULL) OR ([BATCH] = @Origin" + + "al_BATCH)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Origin" + + "al_qtymax)) AND ((@IsNull_GUID = 1 AND [GUID] IS NULL) OR ([GUID] = @Original_GU" + + "ID)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_STIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ETIME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ETIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PDATE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PDATE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_JTYPE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JTYPE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_JGUID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JGUID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SID0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID0", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RID0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RID0", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RSN", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RSN", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QR", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QR", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ZPL", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ZPL", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_POS", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_POS", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_LOC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_LOC", global::System.Data.SqlDbType.VarChar, 1, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ANGLE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ANGLE", global::System.Data.SqlDbType.Float, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QTY", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QTY", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QTY0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QTY0", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VNAME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VNAME", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PRNATTACH", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PRNATTACH", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PRNVALID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PRNVALID", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PTIME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PTIME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PTIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "PTIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MFGDATE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MFGDATE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MFGDATE", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MFGDATE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VLOT", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VLOT", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_REMARK", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "REMARK", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_REMARK", global::System.Data.SqlDbType.VarChar, 200, global::System.Data.ParameterDirection.Input, 0, 0, "REMARK", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PARTNO", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PARTNO", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PARTNO", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PARTNO", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CUSTCODE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CUSTCODE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CUSTCODE", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "CUSTCODE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ATIME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ATIME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ATIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ATIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_BATCH", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BATCH", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_GUID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_GUID", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_Result] ([STIME], [ETIME], [PDATE], [JTYPE], [JGUID], [SID], [SID0], [RID], [RID0], [RSN], [QR], [ZPL], [POS], [LOC], [ANGLE], [QTY], [QTY0], [wdate], [VNAME], [PRNATTACH], [PRNVALID], [PTIME], [MFGDATE], [VLOT], [REMARK], [MC], [PARTNO], [CUSTCODE], [ATIME], [BATCH], [qtymax], [GUID], [iNBOUND], [MCN], [target]) VALUES (@STIME, @ETIME, @PDATE, @JTYPE, @JGUID, @SID, @SID0, @RID, @RID0, @RSN, @QR, @ZPL, @POS, @LOC, @ANGLE, @QTY, @QTY0, @wdate, @VNAME, @PRNATTACH, @PRNVALID, @PTIME, @MFGDATE, @VLOT, @REMARK, @MC, @PARTNO, @CUSTCODE, @ATIME, @BATCH, @qtymax, @GUID, @iNBOUND, @MCN, @target)"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@STIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ETIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PDATE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JTYPE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JGUID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID0", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID0", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RSN", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QR", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ZPL", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@POS", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@LOC", global::System.Data.SqlDbType.VarChar, 1, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ANGLE", global::System.Data.SqlDbType.Float, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY0", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VNAME", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNATTACH", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNVALID", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PTIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "PTIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MFGDATE", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MFGDATE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VLOT", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@REMARK", global::System.Data.SqlDbType.VarChar, 200, global::System.Data.ParameterDirection.Input, 0, 0, "REMARK", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PARTNO", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PARTNO", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CUSTCODE", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "CUSTCODE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ATIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ATIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BATCH", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@GUID", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@iNBOUND", global::System.Data.SqlDbType.VarChar, 200, global::System.Data.ParameterDirection.Input, 0, 0, "iNBOUND", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MCN", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "MCN", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@target", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "target", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE K4EE_Component_Reel_Result +SET STIME = @STIME, ETIME = @ETIME, PDATE = @PDATE, JTYPE = @JTYPE, JGUID = @JGUID, SID = @SID, SID0 = @SID0, RID = @RID, RID0 = @RID0, RSN = @RSN, QR = @QR, + ZPL = @ZPL, POS = @POS, LOC = @LOC, ANGLE = @ANGLE, QTY = @QTY, QTY0 = @QTY0, wdate = @wdate, VNAME = @VNAME, PRNATTACH = @PRNATTACH, PRNVALID = @PRNVALID, + PTIME = @PTIME, MFGDATE = @MFGDATE, VLOT = @VLOT, REMARK = @REMARK, MC = @MC, PARTNO = @PARTNO, CUSTCODE = @CUSTCODE, ATIME = @ATIME, BATCH = @BATCH, + qtymax = @qtymax, GUID = @GUID, iNBOUND = @iNBOUND, MCN = @MCN +WHERE (STIME = @Original_STIME) AND (JGUID = @Original_JGUID) AND (GUID = @Original_GUID); +SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, wdate, VNAME, PRNATTACH, PRNVALID, PTIME, MFGDATE, VLOT, REMARK, MC, PARTNO, CUSTCODE, ATIME, BATCH, qtymax, GUID FROM K4EE_Component_Reel_Result WHERE (idx = @idx) ORDER BY wdate DESC"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@STIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ETIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PDATE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JTYPE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JGUID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID0", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID0", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RSN", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QR", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ZPL", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@POS", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@LOC", global::System.Data.SqlDbType.VarChar, 1, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ANGLE", global::System.Data.SqlDbType.Float, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY0", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VNAME", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNATTACH", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNVALID", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PTIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "PTIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MFGDATE", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MFGDATE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VLOT", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@REMARK", global::System.Data.SqlDbType.VarChar, 200, global::System.Data.ParameterDirection.Input, 0, 0, "REMARK", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PARTNO", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PARTNO", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CUSTCODE", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "CUSTCODE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ATIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ATIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BATCH", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@GUID", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@iNBOUND", global::System.Data.SqlDbType.VarChar, 200, global::System.Data.ParameterDirection.Input, 0, 0, "iNBOUND", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MCN", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "MCN", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_STIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JGUID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_GUID", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[11]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = @"SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, wdate, VNAME, PRNATTACH, PRNVALID, PTIME, MFGDATE, VLOT, REMARK, + MC, PARTNO, CUSTCODE, ATIME, BATCH, qtymax, GUID, iNBOUND, MCN, target +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(MC, '') = @mc) +ORDER BY wdate DESC, idx"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[1].Connection = this.Connection; + this._commandCollection[1].CommandText = @"SELECT TOP (50) ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, + RID0, RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(MC, '') = @mc) +ORDER BY wdate DESC"; + this._commandCollection[1].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[2].Connection = this.Connection; + this._commandCollection[2].CommandText = @"SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (GUID = @guid) AND (ISNULL(MC, '') = @mc) AND (PRNATTACH = 1) AND (PRNVALID = 1) +ORDER BY wdate DESC"; + this._commandCollection[2].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@guid", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[3].Connection = this.Connection; + this._commandCollection[3].CommandText = @"SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (JGUID = @jguid)"; + this._commandCollection[3].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[3].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@jguid", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[4] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[4].Connection = this.Connection; + this._commandCollection[4].CommandText = @"SELECT TOP (1) ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, + RID0, RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (MC = @mc) AND (VLOT = @vlot) +ORDER BY wdate DESC"; + this._commandCollection[4].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[4].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[4].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vlot", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[5] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[5].Connection = this.Connection; + this._commandCollection[5].CommandText = @"SELECT TOP (50) ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, + RID0, RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(MC, '') = @mc) +ORDER BY wdate DESC"; + this._commandCollection[5].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[5].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[5].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[5].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[6] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[6].Connection = this.Connection; + this._commandCollection[6].CommandText = @"SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, wdate, VNAME, PRNATTACH, PRNVALID, PTIME, MFGDATE, VLOT, REMARK, + MC, PARTNO, CUSTCODE, ATIME, BATCH, qtymax, GUID, iNBOUND, MCN, target +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (MC = @mc) AND (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(QR, '') LIKE @search) +ORDER BY wdate DESC"; + this._commandCollection[6].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[6].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[6].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[6].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[6].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@search", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[7] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[7].Connection = this.Connection; + this._commandCollection[7].CommandText = @"SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (STIME BETWEEN @sd AND @ed) AND (MC = @mc) AND (ISNULL(PRNVALID, 0) = 1) AND (ISNULL(PRNATTACH, 0) = 1) +ORDER BY wdate DESC, idx"; + this._commandCollection[7].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[7].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[7].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[7].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[8] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[8].Connection = this.Connection; + this._commandCollection[8].CommandText = @"SELECT ANGLE, ATIME, BATCH, CUSTCODE, ETIME, GUID, JGUID, JTYPE, LOC, MC, MCN, MFGDATE, PARTNO, PDATE, POS, PRNATTACH, PRNVALID, PTIME, QR, QTY, QTY0, REMARK, RID, RID0, + RSN, SID, SID0, STIME, VLOT, VNAME, ZPL, iNBOUND, idx, qtymax, target, wdate +FROM K4EE_Component_Reel_Result WITH (NOLOCK) +WHERE (STIME BETWEEN @sd AND @ed) AND (MC = @mc) AND (ISNULL(PRNVALID, 0) = 1) AND (ISNULL(PRNATTACH, 0) = 1) AND (GUID = @guid) +ORDER BY wdate DESC, idx"; + this._commandCollection[8].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[8].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[8].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[8].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[8].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@guid", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "GUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[9] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[9].Connection = this.Connection; + this._commandCollection[9].CommandText = "SELECT COUNT(*) AS Expr1\r\nFROM K4EE_Component_Reel_Result with (nolock)\r\nWHE" + + "RE (iNBOUND = \'OK\') AND (SID = @sid) AND (BATCH = @batch) AND (MC <> \'R0\')"; + this._commandCollection[9].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[9].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[9].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@batch", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[10] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[10].Connection = this.Connection; + this._commandCollection[10].CommandText = "SELECT TOP (1) ISNULL(POS, \'\') AS Expr1\r\nFROM K4EE_Component_Reel_Result wit" + + "h (nolock)\r\nWHERE (MC = @mc) AND (SID = @sid) AND (ISNULL(POS, \'\') <> \'\')\r\nORDE" + + "R BY wdate DESC"; + this._commandCollection[10].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[10].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[10].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string sd, string ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(ed)); + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetData(string sd, string ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(ed)); + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillBy50(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string sd, string ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[1]; + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(ed)); + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetBy50(string sd, string ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[1]; + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(ed)); + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByAllGUID(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, global::System.Nullable guid, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[2]; + if ((guid.HasValue == true)) { + this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(guid.Value)); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetByAllGUID(global::System.Nullable guid, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[2]; + if ((guid.HasValue == true)) { + this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(guid.Value)); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByJGUID(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string jguid) { + this.Adapter.SelectCommand = this.CommandCollection[3]; + if ((jguid == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(jguid)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetByJGUID(string jguid) { + this.Adapter.SelectCommand = this.CommandCollection[3]; + if ((jguid == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(jguid)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByLastVLotOne(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string mc, string vlot) { + this.Adapter.SelectCommand = this.CommandCollection[4]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((vlot == null)) { + this.Adapter.SelectCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(vlot)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetByLastVLotOne(string mc, string vlot) { + this.Adapter.SelectCommand = this.CommandCollection[4]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((vlot == null)) { + this.Adapter.SelectCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(vlot)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByLen7(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string sd, string ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[5]; + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(ed)); + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetByLen7(string sd, string ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[5]; + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(ed)); + } + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillBySearch(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string mc, string sd, string ed, string search) { + this.Adapter.SelectCommand = this.CommandCollection[6]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(ed)); + } + if ((search == null)) { + throw new global::System.ArgumentNullException("search"); + } + else { + this.Adapter.SelectCommand.Parameters[3].Value = ((string)(search)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetBySearch(string mc, string sd, string ed, string search) { + this.Adapter.SelectCommand = this.CommandCollection[6]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(ed)); + } + if ((search == null)) { + throw new global::System.ArgumentNullException("search"); + } + else { + this.Adapter.SelectCommand.Parameters[3].Value = ((string)(search)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByValid(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, System.DateTime sd, System.DateTime ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[7]; + this.Adapter.SelectCommand.Parameters[0].Value = ((System.DateTime)(sd)); + this.Adapter.SelectCommand.Parameters[1].Value = ((System.DateTime)(ed)); + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetByValid(System.DateTime sd, System.DateTime ed, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[7]; + this.Adapter.SelectCommand.Parameters[0].Value = ((System.DateTime)(sd)); + this.Adapter.SelectCommand.Parameters[1].Value = ((System.DateTime)(ed)); + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByValidGuid(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, System.DateTime sd, System.DateTime ed, string mc, global::System.Nullable guid) { + this.Adapter.SelectCommand = this.CommandCollection[8]; + this.Adapter.SelectCommand.Parameters[0].Value = ((System.DateTime)(sd)); + this.Adapter.SelectCommand.Parameters[1].Value = ((System.DateTime)(ed)); + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + if ((guid.HasValue == true)) { + this.Adapter.SelectCommand.Parameters[3].Value = ((System.Guid)(guid.Value)); + } + else { + this.Adapter.SelectCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetByValidGuid(System.DateTime sd, System.DateTime ed, string mc, global::System.Nullable guid) { + this.Adapter.SelectCommand = this.CommandCollection[8]; + this.Adapter.SelectCommand.Parameters[0].Value = ((System.DateTime)(sd)); + this.Adapter.SelectCommand.Parameters[1].Value = ((System.DateTime)(ed)); + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(mc)); + } + if ((guid.HasValue == true)) { + this.Adapter.SelectCommand.Parameters[3].Value = ((System.Guid)(guid.Value)); + } + else { + this.Adapter.SelectCommand.Parameters[3].Value = global::System.DBNull.Value; + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_Result"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete( + int Original_idx, + System.DateTime Original_STIME, + global::System.Nullable Original_ETIME, + string Original_PDATE, + string Original_JTYPE, + string Original_JGUID, + string Original_SID, + string Original_SID0, + string Original_RID, + string Original_RID0, + string Original_RSN, + string Original_QR, + string Original_ZPL, + string Original_POS, + string Original_LOC, + global::System.Nullable Original_ANGLE, + global::System.Nullable Original_QTY, + global::System.Nullable Original_QTY0, + System.DateTime Original_wdate, + string Original_VNAME, + global::System.Nullable Original_PRNATTACH, + global::System.Nullable Original_PRNVALID, + global::System.Nullable Original_PTIME, + string Original_MFGDATE, + string Original_VLOT, + string Original_REMARK, + string Original_MC, + string Original_PARTNO, + string Original_CUSTCODE, + global::System.Nullable Original_ATIME, + string Original_BATCH, + global::System.Nullable Original_qtymax, + global::System.Nullable Original_GUID) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx)); + this.Adapter.DeleteCommand.Parameters[1].Value = ((System.DateTime)(Original_STIME)); + if ((Original_ETIME.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[3].Value = ((System.DateTime)(Original_ETIME.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((Original_PDATE == null)) { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[5].Value = ((string)(Original_PDATE)); + } + if ((Original_JTYPE == null)) { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[7].Value = ((string)(Original_JTYPE)); + } + if ((Original_JGUID == null)) { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[9].Value = ((string)(Original_JGUID)); + } + if ((Original_SID == null)) { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[11].Value = ((string)(Original_SID)); + } + if ((Original_SID0 == null)) { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[13].Value = ((string)(Original_SID0)); + } + if ((Original_RID == null)) { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[15].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[15].Value = ((string)(Original_RID)); + } + if ((Original_RID0 == null)) { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[17].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[17].Value = ((string)(Original_RID0)); + } + if ((Original_RSN == null)) { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[19].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[19].Value = ((string)(Original_RSN)); + } + if ((Original_QR == null)) { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[21].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[21].Value = ((string)(Original_QR)); + } + if ((Original_ZPL == null)) { + this.Adapter.DeleteCommand.Parameters[22].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[23].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[22].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[23].Value = ((string)(Original_ZPL)); + } + if ((Original_POS == null)) { + this.Adapter.DeleteCommand.Parameters[24].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[25].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[24].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[25].Value = ((string)(Original_POS)); + } + if ((Original_LOC == null)) { + this.Adapter.DeleteCommand.Parameters[26].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[27].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[26].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[27].Value = ((string)(Original_LOC)); + } + if ((Original_ANGLE.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[28].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[29].Value = ((double)(Original_ANGLE.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[28].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[29].Value = global::System.DBNull.Value; + } + if ((Original_QTY.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[30].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[31].Value = ((int)(Original_QTY.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[30].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[31].Value = global::System.DBNull.Value; + } + if ((Original_QTY0.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[32].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[33].Value = ((int)(Original_QTY0.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[32].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[33].Value = global::System.DBNull.Value; + } + this.Adapter.DeleteCommand.Parameters[34].Value = ((System.DateTime)(Original_wdate)); + if ((Original_VNAME == null)) { + this.Adapter.DeleteCommand.Parameters[35].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[36].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[35].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[36].Value = ((string)(Original_VNAME)); + } + if ((Original_PRNATTACH.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[37].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[38].Value = ((bool)(Original_PRNATTACH.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[37].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[38].Value = global::System.DBNull.Value; + } + if ((Original_PRNVALID.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[39].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[40].Value = ((bool)(Original_PRNVALID.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[39].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[40].Value = global::System.DBNull.Value; + } + if ((Original_PTIME.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[41].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[42].Value = ((System.DateTime)(Original_PTIME.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[41].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[42].Value = global::System.DBNull.Value; + } + if ((Original_MFGDATE == null)) { + this.Adapter.DeleteCommand.Parameters[43].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[44].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[43].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[44].Value = ((string)(Original_MFGDATE)); + } + if ((Original_VLOT == null)) { + this.Adapter.DeleteCommand.Parameters[45].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[46].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[45].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[46].Value = ((string)(Original_VLOT)); + } + if ((Original_REMARK == null)) { + this.Adapter.DeleteCommand.Parameters[47].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[48].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[47].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[48].Value = ((string)(Original_REMARK)); + } + if ((Original_MC == null)) { + throw new global::System.ArgumentNullException("Original_MC"); + } + else { + this.Adapter.DeleteCommand.Parameters[49].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[50].Value = ((string)(Original_MC)); + } + if ((Original_PARTNO == null)) { + this.Adapter.DeleteCommand.Parameters[51].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[52].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[51].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[52].Value = ((string)(Original_PARTNO)); + } + if ((Original_CUSTCODE == null)) { + this.Adapter.DeleteCommand.Parameters[53].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[54].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[53].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[54].Value = ((string)(Original_CUSTCODE)); + } + if ((Original_ATIME.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[55].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[56].Value = ((System.DateTime)(Original_ATIME.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[55].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[56].Value = global::System.DBNull.Value; + } + if ((Original_BATCH == null)) { + this.Adapter.DeleteCommand.Parameters[57].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[58].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[57].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[58].Value = ((string)(Original_BATCH)); + } + if ((Original_qtymax.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[59].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[60].Value = ((int)(Original_qtymax.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[59].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[60].Value = global::System.DBNull.Value; + } + if ((Original_GUID.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[61].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[62].Value = ((System.Guid)(Original_GUID.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[61].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[62].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert( + System.DateTime STIME, + global::System.Nullable ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + global::System.Nullable ANGLE, + global::System.Nullable QTY, + global::System.Nullable QTY0, + System.DateTime wdate, + string VNAME, + global::System.Nullable PRNATTACH, + global::System.Nullable PRNVALID, + global::System.Nullable PTIME, + string MFGDATE, + string VLOT, + string REMARK, + string MC, + string PARTNO, + string CUSTCODE, + global::System.Nullable ATIME, + string BATCH, + global::System.Nullable qtymax, + global::System.Nullable GUID, + string iNBOUND, + string MCN, + string target) { + this.Adapter.InsertCommand.Parameters[0].Value = ((System.DateTime)(STIME)); + if ((ETIME.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[1].Value = ((System.DateTime)(ETIME.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + if ((PDATE == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(PDATE)); + } + if ((JTYPE == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(JTYPE)); + } + if ((JGUID == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(JGUID)); + } + if ((SID == null)) { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = ((string)(SID)); + } + if ((SID0 == null)) { + this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[6].Value = ((string)(SID0)); + } + if ((RID == null)) { + this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[7].Value = ((string)(RID)); + } + if ((RID0 == null)) { + this.Adapter.InsertCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[8].Value = ((string)(RID0)); + } + if ((RSN == null)) { + this.Adapter.InsertCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[9].Value = ((string)(RSN)); + } + if ((QR == null)) { + this.Adapter.InsertCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[10].Value = ((string)(QR)); + } + if ((ZPL == null)) { + this.Adapter.InsertCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[11].Value = ((string)(ZPL)); + } + if ((POS == null)) { + this.Adapter.InsertCommand.Parameters[12].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[12].Value = ((string)(POS)); + } + if ((LOC == null)) { + this.Adapter.InsertCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[13].Value = ((string)(LOC)); + } + if ((ANGLE.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[14].Value = ((double)(ANGLE.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[14].Value = global::System.DBNull.Value; + } + if ((QTY.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[15].Value = ((int)(QTY.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[15].Value = global::System.DBNull.Value; + } + if ((QTY0.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[16].Value = ((int)(QTY0.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[16].Value = global::System.DBNull.Value; + } + this.Adapter.InsertCommand.Parameters[17].Value = ((System.DateTime)(wdate)); + if ((VNAME == null)) { + this.Adapter.InsertCommand.Parameters[18].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[18].Value = ((string)(VNAME)); + } + if ((PRNATTACH.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[19].Value = ((bool)(PRNATTACH.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[19].Value = global::System.DBNull.Value; + } + if ((PRNVALID.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[20].Value = ((bool)(PRNVALID.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[20].Value = global::System.DBNull.Value; + } + if ((PTIME.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[21].Value = ((System.DateTime)(PTIME.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[21].Value = global::System.DBNull.Value; + } + if ((MFGDATE == null)) { + this.Adapter.InsertCommand.Parameters[22].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[22].Value = ((string)(MFGDATE)); + } + if ((VLOT == null)) { + this.Adapter.InsertCommand.Parameters[23].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[23].Value = ((string)(VLOT)); + } + if ((REMARK == null)) { + this.Adapter.InsertCommand.Parameters[24].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[24].Value = ((string)(REMARK)); + } + if ((MC == null)) { + throw new global::System.ArgumentNullException("MC"); + } + else { + this.Adapter.InsertCommand.Parameters[25].Value = ((string)(MC)); + } + if ((PARTNO == null)) { + this.Adapter.InsertCommand.Parameters[26].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[26].Value = ((string)(PARTNO)); + } + if ((CUSTCODE == null)) { + this.Adapter.InsertCommand.Parameters[27].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[27].Value = ((string)(CUSTCODE)); + } + if ((ATIME.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[28].Value = ((System.DateTime)(ATIME.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[28].Value = global::System.DBNull.Value; + } + if ((BATCH == null)) { + this.Adapter.InsertCommand.Parameters[29].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[29].Value = ((string)(BATCH)); + } + if ((qtymax.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[30].Value = ((int)(qtymax.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[30].Value = global::System.DBNull.Value; + } + if ((GUID.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[31].Value = ((System.Guid)(GUID.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[31].Value = global::System.DBNull.Value; + } + if ((iNBOUND == null)) { + this.Adapter.InsertCommand.Parameters[32].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[32].Value = ((string)(iNBOUND)); + } + if ((MCN == null)) { + this.Adapter.InsertCommand.Parameters[33].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[33].Value = ((string)(MCN)); + } + if ((target == null)) { + this.Adapter.InsertCommand.Parameters[34].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[34].Value = ((string)(target)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + System.DateTime STIME, + global::System.Nullable ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + global::System.Nullable ANGLE, + global::System.Nullable QTY, + global::System.Nullable QTY0, + System.DateTime wdate, + string VNAME, + global::System.Nullable PRNATTACH, + global::System.Nullable PRNVALID, + global::System.Nullable PTIME, + string MFGDATE, + string VLOT, + string REMARK, + string MC, + string PARTNO, + string CUSTCODE, + global::System.Nullable ATIME, + string BATCH, + global::System.Nullable qtymax, + global::System.Nullable GUID, + string iNBOUND, + string MCN, + System.DateTime Original_STIME, + string Original_JGUID, + global::System.Nullable Original_GUID, + object idx) { + this.Adapter.UpdateCommand.Parameters[0].Value = ((System.DateTime)(STIME)); + if ((ETIME.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[1].Value = ((System.DateTime)(ETIME.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value; + } + if ((PDATE == null)) { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(PDATE)); + } + if ((JTYPE == null)) { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(JTYPE)); + } + if ((JGUID == null)) { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(JGUID)); + } + if ((SID == null)) { + this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(SID)); + } + if ((SID0 == null)) { + this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = ((string)(SID0)); + } + if ((RID == null)) { + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(RID)); + } + if ((RID0 == null)) { + this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(RID0)); + } + if ((RSN == null)) { + this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = ((string)(RSN)); + } + if ((QR == null)) { + this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[10].Value = ((string)(QR)); + } + if ((ZPL == null)) { + this.Adapter.UpdateCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[11].Value = ((string)(ZPL)); + } + if ((POS == null)) { + this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[12].Value = ((string)(POS)); + } + if ((LOC == null)) { + this.Adapter.UpdateCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[13].Value = ((string)(LOC)); + } + if ((ANGLE.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[14].Value = ((double)(ANGLE.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value; + } + if ((QTY.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[15].Value = ((int)(QTY.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = global::System.DBNull.Value; + } + if ((QTY0.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[16].Value = ((int)(QTY0.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[16].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[17].Value = ((System.DateTime)(wdate)); + if ((VNAME == null)) { + this.Adapter.UpdateCommand.Parameters[18].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[18].Value = ((string)(VNAME)); + } + if ((PRNATTACH.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[19].Value = ((bool)(PRNATTACH.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[19].Value = global::System.DBNull.Value; + } + if ((PRNVALID.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[20].Value = ((bool)(PRNVALID.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[20].Value = global::System.DBNull.Value; + } + if ((PTIME.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[21].Value = ((System.DateTime)(PTIME.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[21].Value = global::System.DBNull.Value; + } + if ((MFGDATE == null)) { + this.Adapter.UpdateCommand.Parameters[22].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[22].Value = ((string)(MFGDATE)); + } + if ((VLOT == null)) { + this.Adapter.UpdateCommand.Parameters[23].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[23].Value = ((string)(VLOT)); + } + if ((REMARK == null)) { + this.Adapter.UpdateCommand.Parameters[24].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[24].Value = ((string)(REMARK)); + } + if ((MC == null)) { + throw new global::System.ArgumentNullException("MC"); + } + else { + this.Adapter.UpdateCommand.Parameters[25].Value = ((string)(MC)); + } + if ((PARTNO == null)) { + this.Adapter.UpdateCommand.Parameters[26].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[26].Value = ((string)(PARTNO)); + } + if ((CUSTCODE == null)) { + this.Adapter.UpdateCommand.Parameters[27].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[27].Value = ((string)(CUSTCODE)); + } + if ((ATIME.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[28].Value = ((System.DateTime)(ATIME.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[28].Value = global::System.DBNull.Value; + } + if ((BATCH == null)) { + this.Adapter.UpdateCommand.Parameters[29].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[29].Value = ((string)(BATCH)); + } + if ((qtymax.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[30].Value = ((int)(qtymax.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[30].Value = global::System.DBNull.Value; + } + if ((GUID.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[31].Value = ((System.Guid)(GUID.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[31].Value = global::System.DBNull.Value; + } + if ((iNBOUND == null)) { + this.Adapter.UpdateCommand.Parameters[32].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[32].Value = ((string)(iNBOUND)); + } + if ((MCN == null)) { + this.Adapter.UpdateCommand.Parameters[33].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[33].Value = ((string)(MCN)); + } + this.Adapter.UpdateCommand.Parameters[34].Value = ((System.DateTime)(Original_STIME)); + if ((Original_JGUID == null)) { + this.Adapter.UpdateCommand.Parameters[35].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[35].Value = ((string)(Original_JGUID)); + } + if ((Original_GUID.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[36].Value = ((System.Guid)(Original_GUID.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[36].Value = global::System.DBNull.Value; + } + if ((idx == null)) { + throw new global::System.ArgumentNullException("idx"); + } + else { + this.Adapter.UpdateCommand.Parameters[37].Value = ((object)(idx)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual global::System.Nullable GetInboundCheckCount(string sid, string batch) { + global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[9]; + if ((sid == null)) { + command.Parameters[0].Value = global::System.DBNull.Value; + } + else { + command.Parameters[0].Value = ((string)(sid)); + } + if ((batch == null)) { + command.Parameters[1].Value = global::System.DBNull.Value; + } + else { + command.Parameters[1].Value = ((string)(batch)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return new global::System.Nullable(); + } + else { + return new global::System.Nullable(((int)(returnValue))); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual string GetPrintPosition(string mc, string sid) { + global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[10]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + command.Parameters[0].Value = ((string)(mc)); + } + if ((sid == null)) { + command.Parameters[1].Value = global::System.DBNull.Value; + } + else { + command.Parameters[1].Value = ((string)(sid)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return null; + } + else { + return ((string)(returnValue)); + } + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_RegExRuleTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_RegExRuleTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_RegExRule"; + tableMapping.ColumnMappings.Add("Id", "Id"); + tableMapping.ColumnMappings.Add("Seq", "Seq"); + tableMapping.ColumnMappings.Add("CustCode", "CustCode"); + tableMapping.ColumnMappings.Add("Description", "Description"); + tableMapping.ColumnMappings.Add("Symbol", "Symbol"); + tableMapping.ColumnMappings.Add("Groups", "Groups"); + tableMapping.ColumnMappings.Add("IsEnable", "IsEnable"); + tableMapping.ColumnMappings.Add("IsTrust", "IsTrust"); + tableMapping.ColumnMappings.Add("IsAmkStd", "IsAmkStd"); + tableMapping.ColumnMappings.Add("IsIgnore", "IsIgnore"); + tableMapping.ColumnMappings.Add("Pattern", "Pattern"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [K4EE_Component_Reel_RegExRule] WHERE (([Id] = @Original_Id) AND ((@IsNull_Seq = 1 AND [Seq] IS NULL) OR ([Seq] = @Original_Seq)) AND ((@IsNull_CustCode = 1 AND [CustCode] IS NULL) OR ([CustCode] = @Original_CustCode)) AND ((@IsNull_Description = 1 AND [Description] IS NULL) OR ([Description] = @Original_Description)) AND ((@IsNull_Symbol = 1 AND [Symbol] IS NULL) OR ([Symbol] = @Original_Symbol)) AND ((@IsNull_Groups = 1 AND [Groups] IS NULL) OR ([Groups] = @Original_Groups)) AND ((@IsNull_IsEnable = 1 AND [IsEnable] IS NULL) OR ([IsEnable] = @Original_IsEnable)) AND ((@IsNull_IsTrust = 1 AND [IsTrust] IS NULL) OR ([IsTrust] = @Original_IsTrust)) AND ((@IsNull_IsAmkStd = 1 AND [IsAmkStd] IS NULL) OR ([IsAmkStd] = @Original_IsAmkStd)) AND ((@IsNull_IsIgnore = 1 AND [IsIgnore] IS NULL) OR ([IsIgnore] = @Original_IsIgnore)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Id", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Id", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Seq", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Seq", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Seq", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Seq", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CustCode", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustCode", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Description", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Description", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Symbol", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Symbol", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Symbol", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Symbol", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Groups", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Groups", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Groups", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Groups", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsEnable", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsEnable", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsEnable", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsEnable", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsTrust", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsTrust", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsTrust", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsTrust", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsAmkStd", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsAmkStd", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsAmkStd", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsAmkStd", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsIgnore", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsIgnore", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsIgnore", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsIgnore", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_RegExRule] ([Seq], [CustCode], [Description], [Symbol], [Groups], [IsEnable], [IsTrust], [IsAmkStd], [IsIgnore], [Pattern]) VALUES (@Seq, @CustCode, @Description, @Symbol, @Groups, @IsEnable, @IsTrust, @IsAmkStd, @IsIgnore, @Pattern); +SELECT Id, Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, IsAmkStd, IsIgnore, Pattern FROM K4EE_Component_Reel_RegExRule WHERE (Id = SCOPE_IDENTITY()) ORDER BY CustCode, Seq, Description"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Seq", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Seq", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustCode", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Description", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Symbol", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Symbol", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Groups", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Groups", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsEnable", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsEnable", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsTrust", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsTrust", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsAmkStd", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsAmkStd", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsIgnore", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsIgnore", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Pattern", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Pattern", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [K4EE_Component_Reel_RegExRule] SET [Seq] = @Seq, [CustCode] = @CustCode, [Description] = @Description, [Symbol] = @Symbol, [Groups] = @Groups, [IsEnable] = @IsEnable, [IsTrust] = @IsTrust, [IsAmkStd] = @IsAmkStd, [IsIgnore] = @IsIgnore, [Pattern] = @Pattern WHERE (([Id] = @Original_Id) AND ((@IsNull_Seq = 1 AND [Seq] IS NULL) OR ([Seq] = @Original_Seq)) AND ((@IsNull_CustCode = 1 AND [CustCode] IS NULL) OR ([CustCode] = @Original_CustCode)) AND ((@IsNull_Description = 1 AND [Description] IS NULL) OR ([Description] = @Original_Description)) AND ((@IsNull_Symbol = 1 AND [Symbol] IS NULL) OR ([Symbol] = @Original_Symbol)) AND ((@IsNull_Groups = 1 AND [Groups] IS NULL) OR ([Groups] = @Original_Groups)) AND ((@IsNull_IsEnable = 1 AND [IsEnable] IS NULL) OR ([IsEnable] = @Original_IsEnable)) AND ((@IsNull_IsTrust = 1 AND [IsTrust] IS NULL) OR ([IsTrust] = @Original_IsTrust)) AND ((@IsNull_IsAmkStd = 1 AND [IsAmkStd] IS NULL) OR ([IsAmkStd] = @Original_IsAmkStd)) AND ((@IsNull_IsIgnore = 1 AND [IsIgnore] IS NULL) OR ([IsIgnore] = @Original_IsIgnore))); +SELECT Id, Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, IsAmkStd, IsIgnore, Pattern FROM K4EE_Component_Reel_RegExRule WHERE (Id = @Id) ORDER BY CustCode, Seq, Description"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Seq", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Seq", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustCode", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Description", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Symbol", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Symbol", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Groups", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Groups", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsEnable", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsEnable", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsTrust", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsTrust", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsAmkStd", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsAmkStd", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsIgnore", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsIgnore", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Pattern", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Pattern", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Id", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Id", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Seq", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Seq", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Seq", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Seq", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CustCode", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustCode", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Description", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Description", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Symbol", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Symbol", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Symbol", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Symbol", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Groups", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Groups", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Groups", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Groups", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsEnable", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsEnable", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsEnable", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsEnable", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsTrust", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsTrust", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsTrust", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsTrust", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsAmkStd", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsAmkStd", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsAmkStd", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsAmkStd", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_IsIgnore", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsIgnore", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_IsIgnore", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "IsIgnore", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "Id", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[5]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT Id, Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, " + + "IsAmkStd, IsIgnore, Pattern\r\nFROM K4EE_Component_Reel_RegExRule\r\nWHER" + + "E (ISNULL(CustCode, \'\') LIKE @custcode)\r\nORDER BY CustCode, Seq, Descript" + + "ion"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[1].Connection = this.Connection; + this._commandCollection[1].CommandText = "SELECT COUNT(*) FROM K4EE_Component_Reel_RegExRule where custcode = @custcode and" + + " description=@desc"; + this._commandCollection[1].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@desc", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[2].Connection = this.Connection; + this._commandCollection[2].CommandText = "SELECT CustCode, Description, Groups, Id, IsAmkStd, IsEnable, IsIgnore, IsTrust, " + + "Pattern, Seq, Symbol FROM K4EE_Component_Reel_RegExRule ORDER BY CustCode, Seq, " + + "Description"; + this._commandCollection[2].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[3].Connection = this.Connection; + this._commandCollection[3].CommandText = "SELECT CustCode, Description, Groups, Id, IsAmkStd, IsEnable, IsIgnore, IsTrust, " + + "Pattern, Seq, Symbol FROM K4EE_Component_Reel_RegExRule WHERE (ISNULL(CustCode, " + + "\'\') = \'\') OR (ISNULL(CustCode, \'\') LIKE @custcode) ORDER BY CustCode, Seq, Descr" + + "iption"; + this._commandCollection[3].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[3].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[4] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[4].Connection = this.Connection; + this._commandCollection[4].CommandText = "SELECT CustCode, Description, Groups, Id, IsAmkStd, IsEnable, IsIgnore, IsTrust, " + + "Pattern, Seq, Symbol FROM K4EE_Component_Reel_RegExRule WHERE (ISNULL(CustCode, " + + "\'\') LIKE @custcode) AND (ISNULL(IsIgnore, 0) = 1) ORDER BY CustCode, Seq, Descri" + + "ption"; + this._commandCollection[4].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[4].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable, string custcode) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(custcode)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_RegExRuleDataTable GetData(string custcode) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(custcode)); + } + DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable = new DataSet1.K4EE_Component_Reel_RegExRuleDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillAll(DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[2]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_RegExRuleDataTable GetAll() { + this.Adapter.SelectCommand = this.CommandCollection[2]; + DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable = new DataSet1.K4EE_Component_Reel_RegExRuleDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillByWithSample(DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable, string custcode) { + this.Adapter.SelectCommand = this.CommandCollection[3]; + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(custcode)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_RegExRuleDataTable GetByWithSample(string custcode) { + this.Adapter.SelectCommand = this.CommandCollection[3]; + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(custcode)); + } + DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable = new DataSet1.K4EE_Component_Reel_RegExRuleDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillIgnore(DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable, string custcode) { + this.Adapter.SelectCommand = this.CommandCollection[4]; + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(custcode)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_RegExRuleDataTable GetIgnore(string custcode) { + this.Adapter.SelectCommand = this.CommandCollection[4]; + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(custcode)); + } + DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable = new DataSet1.K4EE_Component_Reel_RegExRuleDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_RegExRuleDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_RegExRule"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(int Original_Id, global::System.Nullable Original_Seq, string Original_CustCode, string Original_Description, string Original_Symbol, string Original_Groups, global::System.Nullable Original_IsEnable, global::System.Nullable Original_IsTrust, global::System.Nullable Original_IsAmkStd, global::System.Nullable Original_IsIgnore) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_Id)); + if ((Original_Seq.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((int)(Original_Seq.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + if ((Original_CustCode == null)) { + this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[4].Value = ((string)(Original_CustCode)); + } + if ((Original_Description == null)) { + this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[6].Value = ((string)(Original_Description)); + } + if ((Original_Symbol == null)) { + this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[8].Value = ((string)(Original_Symbol)); + } + if ((Original_Groups == null)) { + this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[10].Value = ((string)(Original_Groups)); + } + if ((Original_IsEnable.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[11].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[12].Value = ((bool)(Original_IsEnable.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[11].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[12].Value = global::System.DBNull.Value; + } + if ((Original_IsTrust.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[13].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[14].Value = ((bool)(Original_IsTrust.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[13].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[14].Value = global::System.DBNull.Value; + } + if ((Original_IsAmkStd.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[15].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[16].Value = ((bool)(Original_IsAmkStd.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[15].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[16].Value = global::System.DBNull.Value; + } + if ((Original_IsIgnore.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[17].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[18].Value = ((bool)(Original_IsIgnore.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[17].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[18].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(global::System.Nullable Seq, string CustCode, string Description, string Symbol, string Groups, global::System.Nullable IsEnable, global::System.Nullable IsTrust, global::System.Nullable IsAmkStd, global::System.Nullable IsIgnore, string Pattern) { + if ((Seq.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[0].Value = ((int)(Seq.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + if ((CustCode == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(CustCode)); + } + if ((Description == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(Description)); + } + if ((Symbol == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(Symbol)); + } + if ((Groups == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(Groups)); + } + if ((IsEnable.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[5].Value = ((bool)(IsEnable.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + if ((IsTrust.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[6].Value = ((bool)(IsTrust.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value; + } + if ((IsAmkStd.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[7].Value = ((bool)(IsAmkStd.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((IsIgnore.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[8].Value = ((bool)(IsIgnore.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[8].Value = global::System.DBNull.Value; + } + if ((Pattern == null)) { + this.Adapter.InsertCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[9].Value = ((string)(Pattern)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + global::System.Nullable Seq, + string CustCode, + string Description, + string Symbol, + string Groups, + global::System.Nullable IsEnable, + global::System.Nullable IsTrust, + global::System.Nullable IsAmkStd, + global::System.Nullable IsIgnore, + string Pattern, + int Original_Id, + global::System.Nullable Original_Seq, + string Original_CustCode, + string Original_Description, + string Original_Symbol, + string Original_Groups, + global::System.Nullable Original_IsEnable, + global::System.Nullable Original_IsTrust, + global::System.Nullable Original_IsAmkStd, + global::System.Nullable Original_IsIgnore, + int Id) { + if ((Seq.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[0].Value = ((int)(Seq.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value; + } + if ((CustCode == null)) { + this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(CustCode)); + } + if ((Description == null)) { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(Description)); + } + if ((Symbol == null)) { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(Symbol)); + } + if ((Groups == null)) { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(Groups)); + } + if ((IsEnable.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[5].Value = ((bool)(IsEnable.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value; + } + if ((IsTrust.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[6].Value = ((bool)(IsTrust.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value; + } + if ((IsAmkStd.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[7].Value = ((bool)(IsAmkStd.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((IsIgnore.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[8].Value = ((bool)(IsIgnore.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value; + } + if ((Pattern == null)) { + this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = ((string)(Pattern)); + } + this.Adapter.UpdateCommand.Parameters[10].Value = ((int)(Original_Id)); + if ((Original_Seq.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[12].Value = ((int)(Original_Seq.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value; + } + if ((Original_CustCode == null)) { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[14].Value = ((string)(Original_CustCode)); + } + if ((Original_Description == null)) { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[16].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[16].Value = ((string)(Original_Description)); + } + if ((Original_Symbol == null)) { + this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[18].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[18].Value = ((string)(Original_Symbol)); + } + if ((Original_Groups == null)) { + this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[20].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[20].Value = ((string)(Original_Groups)); + } + if ((Original_IsEnable.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[21].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[22].Value = ((bool)(Original_IsEnable.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[21].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[22].Value = global::System.DBNull.Value; + } + if ((Original_IsTrust.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[23].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[24].Value = ((bool)(Original_IsTrust.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[23].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[24].Value = global::System.DBNull.Value; + } + if ((Original_IsAmkStd.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[25].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[26].Value = ((bool)(Original_IsAmkStd.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[25].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[26].Value = global::System.DBNull.Value; + } + if ((Original_IsIgnore.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[27].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[28].Value = ((bool)(Original_IsIgnore.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[27].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[28].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[29].Value = ((int)(Id)); + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + global::System.Nullable Seq, + string CustCode, + string Description, + string Symbol, + string Groups, + global::System.Nullable IsEnable, + global::System.Nullable IsTrust, + global::System.Nullable IsAmkStd, + global::System.Nullable IsIgnore, + string Pattern, + int Original_Id, + global::System.Nullable Original_Seq, + string Original_CustCode, + string Original_Description, + string Original_Symbol, + string Original_Groups, + global::System.Nullable Original_IsEnable, + global::System.Nullable Original_IsTrust, + global::System.Nullable Original_IsAmkStd, + global::System.Nullable Original_IsIgnore) { + return this.Update(Seq, CustCode, Description, Symbol, Groups, IsEnable, IsTrust, IsAmkStd, IsIgnore, Pattern, Original_Id, Original_Seq, Original_CustCode, Original_Description, Original_Symbol, Original_Groups, Original_IsEnable, Original_IsTrust, Original_IsAmkStd, Original_IsIgnore, Original_Id); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual global::System.Nullable CheckExsist(string custcode, string desc) { + global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[1]; + if ((custcode == null)) { + command.Parameters[0].Value = global::System.DBNull.Value; + } + else { + command.Parameters[0].Value = ((string)(custcode)); + } + if ((desc == null)) { + command.Parameters[1].Value = global::System.DBNull.Value; + } + else { + command.Parameters[1].Value = ((string)(desc)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return new global::System.Nullable(); + } + else { + return new global::System.Nullable(((int)(returnValue))); + } + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_SID_ConvertTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_ConvertTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_SID_Convert"; + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("Chk", "Chk"); + tableMapping.ColumnMappings.Add("SIDFrom", "SIDFrom"); + tableMapping.ColumnMappings.Add("SIDTo", "SIDTo"); + tableMapping.ColumnMappings.Add("Remark", "Remark"); + tableMapping.ColumnMappings.Add("wdate", "wdate"); + tableMapping.ColumnMappings.Add("MC", "MC"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [K4EE_Component_Reel_SID_Convert] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Chk", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Chk", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDFrom", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDFrom", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDTo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDTo", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_SID_Convert] ([MC], [Chk], [SIDFrom], [SIDTo], [Remark], [wdate]) VALUES (@MC, @Chk, @SIDFrom, @SIDTo, @Remark, @wdate); +SELECT idx, MC, Chk, SIDFrom, SIDTo, Remark, wdate FROM Component_Reel_SID_Convert WHERE (idx = SCOPE_IDENTITY()) ORDER BY SIDFrom"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Chk", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDFrom", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDTo", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [K4EE_Component_Reel_SID_Convert] SET [MC] = @MC, [Chk] = @Chk, [SIDFrom] = @SIDFrom, [SIDTo] = @SIDTo, [Remark] = @Remark, [wdate] = @wdate WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ((@IsNull_Chk = 1 AND [Chk] IS NULL) OR ([Chk] = @Original_Chk)) AND ((@IsNull_SIDFrom = 1 AND [SIDFrom] IS NULL) OR ([SIDFrom] = @Original_SIDFrom)) AND ((@IsNull_SIDTo = 1 AND [SIDTo] IS NULL) OR ([SIDTo] = @Original_SIDTo)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate))); +SELECT idx, MC, Chk, SIDFrom, SIDTo, Remark, wdate FROM Component_Reel_SID_Convert WHERE (idx = @idx) ORDER BY SIDFrom"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Chk", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDFrom", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SIDTo", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Chk", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Chk", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "Chk", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDFrom", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDFrom", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDFrom", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SIDTo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SIDTo", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SIDTo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT idx, MC, Chk, SIDFrom, SIDTo, Remark, wdate\r\nFROM K4EE_Component_Reel" + + "_SID_Convert WITH (NOLOCK)\r\nWHERE (ISNULL(SIDFrom, \'\') <> \'\') AND (ISNULL(SIDTo" + + ", \'\') <> \'\') AND (ISNULL(SIDFrom, \'\') <> ISNULL(SIDTo, \'\'))\r\nORDER BY SIDFrom"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_SID_ConvertDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_SID_ConvertDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + DataSet1.K4EE_Component_Reel_SID_ConvertDataTable dataTable = new DataSet1.K4EE_Component_Reel_SID_ConvertDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_SID_ConvertDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_SID_Convert"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(int Original_idx, string Original_MC, global::System.Nullable Original_Chk, string Original_SIDFrom, string Original_SIDTo, string Original_Remark, global::System.Nullable Original_wdate) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_MC)); + } + if ((Original_Chk.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[4].Value = ((bool)(Original_Chk.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[4].Value = global::System.DBNull.Value; + } + if ((Original_SIDFrom == null)) { + this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[6].Value = ((string)(Original_SIDFrom)); + } + if ((Original_SIDTo == null)) { + this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[8].Value = ((string)(Original_SIDTo)); + } + if ((Original_Remark == null)) { + this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[9].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[10].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[11].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[12].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[11].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[12].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string MC, global::System.Nullable Chk, string SIDFrom, string SIDTo, string Remark, global::System.Nullable wdate) { + if ((MC == null)) { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(MC)); + } + if ((Chk.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[1].Value = ((bool)(Chk.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + if ((SIDFrom == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(SIDFrom)); + } + if ((SIDTo == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(SIDTo)); + } + if ((Remark == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[5].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string MC, global::System.Nullable Chk, string SIDFrom, string SIDTo, string Remark, global::System.Nullable wdate, int Original_idx, string Original_MC, global::System.Nullable Original_Chk, string Original_SIDFrom, string Original_SIDTo, string Original_Remark, global::System.Nullable Original_wdate, object idx) { + if ((MC == null)) { + this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(MC)); + } + if ((Chk.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[1].Value = ((bool)(Chk.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value; + } + if ((SIDFrom == null)) { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(SIDFrom)); + } + if ((SIDTo == null)) { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(SIDTo)); + } + if ((Remark == null)) { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[5].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[6].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.UpdateCommand.Parameters[7].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[7].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(Original_MC)); + } + if ((Original_Chk.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[10].Value = ((bool)(Original_Chk.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value; + } + if ((Original_SIDFrom == null)) { + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[12].Value = ((string)(Original_SIDFrom)); + } + if ((Original_SIDTo == null)) { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[14].Value = ((string)(Original_SIDTo)); + } + if ((Original_Remark == null)) { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[16].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[16].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[18].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[18].Value = global::System.DBNull.Value; + } + if ((idx == null)) { + throw new global::System.ArgumentNullException("idx"); + } + else { + this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(idx)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_SID_InformationTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_SID_InformationTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_SID_Information"; + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("SID", "SID"); + tableMapping.ColumnMappings.Add("CustCode", "CustCode"); + tableMapping.ColumnMappings.Add("PartNo", "PartNo"); + tableMapping.ColumnMappings.Add("CustName", "CustName"); + tableMapping.ColumnMappings.Add("VenderName", "VenderName"); + tableMapping.ColumnMappings.Add("Remark", "Remark"); + tableMapping.ColumnMappings.Add("wdate", "wdate"); + tableMapping.ColumnMappings.Add("MC", "MC"); + tableMapping.ColumnMappings.Add("batch", "batch"); + tableMapping.ColumnMappings.Add("qtymax", "qtymax"); + tableMapping.ColumnMappings.Add("VenderLot", "VenderLot"); + tableMapping.ColumnMappings.Add("attach", "attach"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [K4EE_Component_Reel_SID_Information] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_batch = 1 AND [batch] IS NULL) OR ([batch] = @Original_batch)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax)) AND ((@IsNull_VenderLot = 1 AND [VenderLot] IS NULL) OR ([VenderLot] = @Original_VenderLot)) AND ((@IsNull_attach = 1 AND [attach] IS NULL) OR ([attach] = @Original_attach)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustCode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PartNo", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CustName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VenderName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VenderName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_batch", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "batch", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_batch", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "batch", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VenderLot", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderLot", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VenderLot", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "VenderLot", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_attach", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "attach", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_attach", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "attach", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_SID_Information] ([MC], [SID], [CustCode], [PartNo], [CustName], [VenderName], [Remark], [wdate], [batch], [qtymax], [VenderLot], [attach]) VALUES (@MC, @SID, @CustCode, @PartNo, @CustName, @VenderName, @Remark, @wdate, @batch, @qtymax, @VenderLot, @attach); +SELECT idx, MC, SID, CustCode, PartNo, CustName, VenderName, Remark, wdate, batch, qtymax, VenderLot, attach FROM Component_Reel_SID_Information WITH (NOLOCK) WHERE (idx = SCOPE_IDENTITY()) ORDER BY idx"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustCode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PartNo", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VenderName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@batch", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "batch", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VenderLot", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "VenderLot", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@attach", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "attach", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [K4EE_Component_Reel_SID_Information] SET [MC] = @MC, [SID] = @SID, [CustCode] = @CustCode, [PartNo] = @PartNo, [CustName] = @CustName, [VenderName] = @VenderName, [Remark] = @Remark, [wdate] = @wdate, [batch] = @batch, [qtymax] = @qtymax, [VenderLot] = @VenderLot, [attach] = @attach WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ([CustCode] = @Original_CustCode) AND ([PartNo] = @Original_PartNo) AND ((@IsNull_CustName = 1 AND [CustName] IS NULL) OR ([CustName] = @Original_CustName)) AND ((@IsNull_VenderName = 1 AND [VenderName] IS NULL) OR ([VenderName] = @Original_VenderName)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_batch = 1 AND [batch] IS NULL) OR ([batch] = @Original_batch)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax)) AND ((@IsNull_VenderLot = 1 AND [VenderLot] IS NULL) OR ([VenderLot] = @Original_VenderLot)) AND ((@IsNull_attach = 1 AND [attach] IS NULL) OR ([attach] = @Original_attach))); +SELECT idx, MC, SID, CustCode, PartNo, CustName, VenderName, Remark, wdate, batch, qtymax, VenderLot, attach FROM Component_Reel_SID_Information WITH (NOLOCK) WHERE (idx = @idx) ORDER BY idx"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustCode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PartNo", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@CustName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VenderName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@batch", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "batch", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VenderLot", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "VenderLot", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@attach", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "attach", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustCode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PartNo", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_CustName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_CustName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "CustName", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VenderName", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VenderName", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VenderName", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_batch", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "batch", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_batch", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "batch", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VenderLot", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VenderLot", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VenderLot", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "VenderLot", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_attach", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "attach", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_attach", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "attach", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[5]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT idx, MC, SID, CustCode, PartNo, CustName, VenderName, Remark, wdate, batc" + + "h, qtymax, VenderLot, attach\r\nFROM K4EE_Component_Reel_SID_Information WITH " + + "(NOLOCK)\r\nWHERE (MC = @mcname)\r\nORDER BY idx"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mcname", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[1].Connection = this.Connection; + this._commandCollection[1].CommandText = "DELETE FROM K4EE_Component_Reel_SID_Information\r\nWHERE (MC = @mcname)"; + this._commandCollection[1].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mcname", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[2].Connection = this.Connection; + this._commandCollection[2].CommandText = "SELECT CustCode, CustName, MC, PartNo, Remark, SID, VenderLot, VenderName, attac" + + "h, batch, idx, qtymax, wdate\r\nFROM K4EE_Component_Reel_SID_Information WITH " + + "(NOLOCK)\r\nWHERE (MC = @mcname) AND (SID = @sid)"; + this._commandCollection[2].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mcname", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[3].Connection = this.Connection; + this._commandCollection[3].CommandText = "SELECT CustCode, CustName, MC, PartNo, Remark, SID, VenderLot, VenderName, attac" + + "h, batch, idx, qtymax, wdate\r\nFROM K4EE_Component_Reel_SID_Information WITH " + + "(NOLOCK)\r\nWHERE (MC = @mcname) AND (SID = @sid) AND (ISNULL(CustCode, \'\') <> \'\'" + + ")"; + this._commandCollection[3].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[3].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mcname", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[3].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[4] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[4].Connection = this.Connection; + this._commandCollection[4].CommandText = @"INSERT INTO K4EE_Component_Reel_SID_Information + (MC, SID, CustCode, PartNo, CustName, VenderName, VenderLot, PrintPosition, Remark, MFG, qtymax, batch, wdate) +SELECT 'IB' AS Expr1, SID, CustCode, PartNo, CustName, VenderName, VenderLot, PrintPosition, 'disable ECS' AS Expr2, MFG, qtymax, batch, wdate +FROM K4EE_Component_Reel_SID_Information AS Component_Reel_SID_Information_1 +WHERE (MC = @mcname)"; + this._commandCollection[4].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[4].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mcname", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable, string mcname) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_SID_InformationDataTable GetData(string mcname) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable = new DataSet1.K4EE_Component_Reel_SID_InformationDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillBySID(DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable, string mcname, string sid) { + this.Adapter.SelectCommand = this.CommandCollection[2]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sid)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_SID_InformationDataTable GetBySID(string mcname, string sid) { + this.Adapter.SelectCommand = this.CommandCollection[2]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sid)); + } + DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable = new DataSet1.K4EE_Component_Reel_SID_InformationDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillBySIDNoCustCode(DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable, string mcname, string sid) { + this.Adapter.SelectCommand = this.CommandCollection[3]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sid)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_SID_InformationDataTable GetbySIDNoCustCode(string mcname, string sid) { + this.Adapter.SelectCommand = this.CommandCollection[3]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sid)); + } + DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable = new DataSet1.K4EE_Component_Reel_SID_InformationDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_SID_InformationDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_SID_Information"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(int Original_idx, string Original_MC, string Original_SID, string Original_CustCode, string Original_PartNo, string Original_CustName, string Original_VenderName, string Original_Remark, global::System.Nullable Original_wdate, string Original_batch, global::System.Nullable Original_qtymax, string Original_VenderLot, string Original_attach) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_MC)); + } + if ((Original_SID == null)) { + throw new global::System.ArgumentNullException("Original_SID"); + } + else { + this.Adapter.DeleteCommand.Parameters[3].Value = ((string)(Original_SID)); + } + if ((Original_CustCode == null)) { + throw new global::System.ArgumentNullException("Original_CustCode"); + } + else { + this.Adapter.DeleteCommand.Parameters[4].Value = ((string)(Original_CustCode)); + } + if ((Original_PartNo == null)) { + this.Adapter.DeleteCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[5].Value = ((string)(Original_PartNo)); + } + if ((Original_CustName == null)) { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[7].Value = ((string)(Original_CustName)); + } + if ((Original_VenderName == null)) { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[9].Value = ((string)(Original_VenderName)); + } + if ((Original_Remark == null)) { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[11].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[13].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[13].Value = global::System.DBNull.Value; + } + if ((Original_batch == null)) { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[15].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[15].Value = ((string)(Original_batch)); + } + if ((Original_qtymax.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[17].Value = ((int)(Original_qtymax.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[17].Value = global::System.DBNull.Value; + } + if ((Original_VenderLot == null)) { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[19].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[19].Value = ((string)(Original_VenderLot)); + } + if ((Original_attach == null)) { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[21].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[21].Value = ((string)(Original_attach)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string MC, string SID, string CustCode, string PartNo, string CustName, string VenderName, string Remark, global::System.Nullable wdate, string batch, global::System.Nullable qtymax, string VenderLot, string attach) { + if ((MC == null)) { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(MC)); + } + if ((SID == null)) { + throw new global::System.ArgumentNullException("SID"); + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(SID)); + } + if ((CustCode == null)) { + throw new global::System.ArgumentNullException("CustCode"); + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(CustCode)); + } + if ((PartNo == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(PartNo)); + } + if ((CustName == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(CustName)); + } + if ((VenderName == null)) { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = ((string)(VenderName)); + } + if ((Remark == null)) { + this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[6].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[7].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((batch == null)) { + this.Adapter.InsertCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[8].Value = ((string)(batch)); + } + if ((qtymax.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[9].Value = ((int)(qtymax.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[9].Value = global::System.DBNull.Value; + } + if ((VenderLot == null)) { + this.Adapter.InsertCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[10].Value = ((string)(VenderLot)); + } + if ((attach == null)) { + this.Adapter.InsertCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[11].Value = ((string)(attach)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + string MC, + string SID, + string CustCode, + string PartNo, + string CustName, + string VenderName, + string Remark, + global::System.Nullable wdate, + string batch, + global::System.Nullable qtymax, + string VenderLot, + string attach, + int Original_idx, + string Original_MC, + string Original_SID, + string Original_CustCode, + string Original_PartNo, + string Original_CustName, + string Original_VenderName, + string Original_Remark, + global::System.Nullable Original_wdate, + string Original_batch, + global::System.Nullable Original_qtymax, + string Original_VenderLot, + string Original_attach, + object idx) { + if ((MC == null)) { + this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(MC)); + } + if ((SID == null)) { + throw new global::System.ArgumentNullException("SID"); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(SID)); + } + if ((CustCode == null)) { + throw new global::System.ArgumentNullException("CustCode"); + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(CustCode)); + } + if ((PartNo == null)) { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(PartNo)); + } + if ((CustName == null)) { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(CustName)); + } + if ((VenderName == null)) { + this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(VenderName)); + } + if ((Remark == null)) { + this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[7].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((batch == null)) { + this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(batch)); + } + if ((qtymax.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[9].Value = ((int)(qtymax.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value; + } + if ((VenderLot == null)) { + this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[10].Value = ((string)(VenderLot)); + } + if ((attach == null)) { + this.Adapter.UpdateCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[11].Value = ((string)(attach)); + } + this.Adapter.UpdateCommand.Parameters[12].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[14].Value = ((string)(Original_MC)); + } + if ((Original_SID == null)) { + throw new global::System.ArgumentNullException("Original_SID"); + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = ((string)(Original_SID)); + } + if ((Original_CustCode == null)) { + throw new global::System.ArgumentNullException("Original_CustCode"); + } + else { + this.Adapter.UpdateCommand.Parameters[16].Value = ((string)(Original_CustCode)); + } + if ((Original_PartNo == null)) { + this.Adapter.UpdateCommand.Parameters[17].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[17].Value = ((string)(Original_PartNo)); + } + if ((Original_CustName == null)) { + this.Adapter.UpdateCommand.Parameters[18].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[19].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[18].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[19].Value = ((string)(Original_CustName)); + } + if ((Original_VenderName == null)) { + this.Adapter.UpdateCommand.Parameters[20].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[21].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[20].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[21].Value = ((string)(Original_VenderName)); + } + if ((Original_Remark == null)) { + this.Adapter.UpdateCommand.Parameters[22].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[23].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[22].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[23].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[24].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[25].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[24].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[25].Value = global::System.DBNull.Value; + } + if ((Original_batch == null)) { + this.Adapter.UpdateCommand.Parameters[26].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[27].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[26].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[27].Value = ((string)(Original_batch)); + } + if ((Original_qtymax.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[28].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[29].Value = ((int)(Original_qtymax.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[28].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[29].Value = global::System.DBNull.Value; + } + if ((Original_VenderLot == null)) { + this.Adapter.UpdateCommand.Parameters[30].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[31].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[30].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[31].Value = ((string)(Original_VenderLot)); + } + if ((Original_attach == null)) { + this.Adapter.UpdateCommand.Parameters[32].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[33].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[32].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[33].Value = ((string)(Original_attach)); + } + if ((idx == null)) { + throw new global::System.ArgumentNullException("idx"); + } + else { + this.Adapter.UpdateCommand.Parameters[34].Value = ((object)(idx)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int DeleteAll(string mcname) { + global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[1]; + if ((mcname == null)) { + command.Parameters[0].Value = global::System.DBNull.Value; + } + else { + command.Parameters[0].Value = ((string)(mcname)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + int returnValue; + try { + returnValue = command.ExecuteNonQuery(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int MakeIBData(string mcname) { + global::System.Data.SqlClient.SqlCommand command = this.CommandCollection[4]; + if ((mcname == null)) { + command.Parameters[0].Value = global::System.DBNull.Value; + } + else { + command.Parameters[0].Value = ((string)(mcname)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + int returnValue; + try { + returnValue = command.ExecuteNonQuery(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + return returnValue; + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_PreSetTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_PreSetTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_PreSet"; + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("MC", "MC"); + tableMapping.ColumnMappings.Add("Title", "Title"); + tableMapping.ColumnMappings.Add("Remark", "Remark"); + tableMapping.ColumnMappings.Add("wdate", "wdate"); + tableMapping.ColumnMappings.Add("vOption", "vOption"); + tableMapping.ColumnMappings.Add("vJobInfo", "vJobInfo"); + tableMapping.ColumnMappings.Add("vSidInfo", "vSidInfo"); + tableMapping.ColumnMappings.Add("vServerWrite", "vServerWrite"); + tableMapping.ColumnMappings.Add("jobtype", "jobtype"); + tableMapping.ColumnMappings.Add("bypasssid", "bypasssid"); + tableMapping.ColumnMappings.Add("0", "vWMSInfo"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [K4EE_Component_Reel_PreSet] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([Title] = @Original_Title) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_vOption = 1 AND [vOption] IS NULL) OR ([vOption] = @Original_vOption)) AND ((@IsNull_vJobInfo = 1 AND [vJobInfo] IS NULL) OR ([vJobInfo] = @Original_vJobInfo)) AND ((@IsNull_vSidInfo = 1 AND [vSidInfo] IS NULL) OR ([vSidInfo] = @Original_vSidInfo)) AND ((@IsNull_vServerWrite = 1 AND [vServerWrite] IS NULL) OR ([vServerWrite] = @Original_vServerWrite)) AND ((@IsNull_jobtype = 1 AND [jobtype] IS NULL) OR ([jobtype] = @Original_jobtype)) AND ((@IsNull_bypasssid = 1 AND [bypasssid] IS NULL) OR ([bypasssid] = @Original_bypasssid)) AND ((@IsNull_vWMSInfo = 1 AND [vWMSInfo] IS NULL) OR ([vWMSInfo] = @Original_vWMSInfo)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Title", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Title", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vOption", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vOption", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vOption", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vOption", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vJobInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vJobInfo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vJobInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vJobInfo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vSidInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vSidInfo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vSidInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vSidInfo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vServerWrite", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vServerWrite", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vServerWrite", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vServerWrite", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_jobtype", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "jobtype", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_jobtype", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "jobtype", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_bypasssid", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "bypasssid", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_bypasssid", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "bypasssid", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vWMSInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vWMSInfo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vWMSInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vWMSInfo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_PreSet] ([MC], [Title], [Remark], [wdate], [vOption], [vJobInfo], [vSidInfo], [vServerWrite], [jobtype], [bypasssid], [vWMSInfo]) VALUES (@MC, @Title, @Remark, @wdate, @vOption, @vJobInfo, @vSidInfo, @vServerWrite, @jobtype, @bypasssid, @vWMSInfo); +SELECT idx, MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServerWrite, jobtype, bypasssid, vWMSInfo FROM K4EE_Component_Reel_PreSet WHERE (idx = SCOPE_IDENTITY())"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Title", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Title", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vOption", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vOption", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vJobInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vJobInfo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vSidInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vSidInfo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vServerWrite", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vServerWrite", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@jobtype", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "jobtype", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@bypasssid", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "bypasssid", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vWMSInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vWMSInfo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [K4EE_Component_Reel_PreSet] SET [MC] = @MC, [Title] = @Title, [Remark] = @Remark, [wdate] = @wdate, [vOption] = @vOption, [vJobInfo] = @vJobInfo, [vSidInfo] = @vSidInfo, [vServerWrite] = @vServerWrite, [jobtype] = @jobtype, [bypasssid] = @bypasssid, [vWMSInfo] = @vWMSInfo WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([Title] = @Original_Title) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)) AND ((@IsNull_vOption = 1 AND [vOption] IS NULL) OR ([vOption] = @Original_vOption)) AND ((@IsNull_vJobInfo = 1 AND [vJobInfo] IS NULL) OR ([vJobInfo] = @Original_vJobInfo)) AND ((@IsNull_vSidInfo = 1 AND [vSidInfo] IS NULL) OR ([vSidInfo] = @Original_vSidInfo)) AND ((@IsNull_vServerWrite = 1 AND [vServerWrite] IS NULL) OR ([vServerWrite] = @Original_vServerWrite)) AND ((@IsNull_jobtype = 1 AND [jobtype] IS NULL) OR ([jobtype] = @Original_jobtype)) AND ((@IsNull_bypasssid = 1 AND [bypasssid] IS NULL) OR ([bypasssid] = @Original_bypasssid)) AND ((@IsNull_vWMSInfo = 1 AND [vWMSInfo] IS NULL) OR ([vWMSInfo] = @Original_vWMSInfo))); +SELECT idx, MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServerWrite, jobtype, bypasssid, vWMSInfo FROM K4EE_Component_Reel_PreSet WHERE (idx = @idx)"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Title", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Title", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vOption", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vOption", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vJobInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vJobInfo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vSidInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vSidInfo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vServerWrite", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vServerWrite", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@jobtype", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "jobtype", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@bypasssid", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "bypasssid", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@vWMSInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vWMSInfo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Title", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Title", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vOption", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vOption", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vOption", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vOption", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vJobInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vJobInfo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vJobInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vJobInfo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vSidInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vSidInfo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vSidInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vSidInfo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vServerWrite", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vServerWrite", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vServerWrite", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vServerWrite", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_jobtype", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "jobtype", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_jobtype", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "jobtype", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_bypasssid", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "bypasssid", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_bypasssid", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "bypasssid", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_vWMSInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vWMSInfo", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_vWMSInfo", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "vWMSInfo", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT idx, MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServer" + + "Write, jobtype, bypasssid, vWMSInfo\r\nFROM K4EE_Component_Reel_PreSet\r" + + "\nWHERE (ISNULL(MC, \'\') = @mc)"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_PreSetDataTable dataTable, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_PreSetDataTable GetData(string mc) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_PreSetDataTable dataTable = new DataSet1.K4EE_Component_Reel_PreSetDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_PreSetDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_PreSet"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(int Original_idx, string Original_MC, string Original_Title, string Original_Remark, global::System.Nullable Original_wdate, global::System.Nullable Original_vOption, global::System.Nullable Original_vJobInfo, global::System.Nullable Original_vSidInfo, global::System.Nullable Original_vServerWrite, string Original_jobtype, string Original_bypasssid, global::System.Nullable Original_vWMSInfo) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_MC)); + } + if ((Original_Title == null)) { + throw new global::System.ArgumentNullException("Original_Title"); + } + else { + this.Adapter.DeleteCommand.Parameters[3].Value = ((string)(Original_Title)); + } + if ((Original_Remark == null)) { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[5].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[7].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((Original_vOption.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[9].Value = ((int)(Original_vOption.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[9].Value = global::System.DBNull.Value; + } + if ((Original_vJobInfo.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[11].Value = ((int)(Original_vJobInfo.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[11].Value = global::System.DBNull.Value; + } + if ((Original_vSidInfo.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[13].Value = ((int)(Original_vSidInfo.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[13].Value = global::System.DBNull.Value; + } + if ((Original_vServerWrite.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[15].Value = ((int)(Original_vServerWrite.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[15].Value = global::System.DBNull.Value; + } + if ((Original_jobtype == null)) { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[17].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[17].Value = ((string)(Original_jobtype)); + } + if ((Original_bypasssid == null)) { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[19].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[19].Value = ((string)(Original_bypasssid)); + } + if ((Original_vWMSInfo.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[21].Value = ((int)(Original_vWMSInfo.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[21].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string MC, string Title, string Remark, global::System.Nullable wdate, global::System.Nullable vOption, global::System.Nullable vJobInfo, global::System.Nullable vSidInfo, global::System.Nullable vServerWrite, string jobtype, string bypasssid, global::System.Nullable vWMSInfo) { + if ((MC == null)) { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(MC)); + } + if ((Title == null)) { + throw new global::System.ArgumentNullException("Title"); + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(Title)); + } + if ((Remark == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[3].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((vOption.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[4].Value = ((int)(vOption.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + if ((vJobInfo.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[5].Value = ((int)(vJobInfo.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + if ((vSidInfo.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[6].Value = ((int)(vSidInfo.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value; + } + if ((vServerWrite.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[7].Value = ((int)(vServerWrite.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((jobtype == null)) { + this.Adapter.InsertCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[8].Value = ((string)(jobtype)); + } + if ((bypasssid == null)) { + this.Adapter.InsertCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[9].Value = ((string)(bypasssid)); + } + if ((vWMSInfo.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[10].Value = ((int)(vWMSInfo.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[10].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + string MC, + string Title, + string Remark, + global::System.Nullable wdate, + global::System.Nullable vOption, + global::System.Nullable vJobInfo, + global::System.Nullable vSidInfo, + global::System.Nullable vServerWrite, + string jobtype, + string bypasssid, + global::System.Nullable vWMSInfo, + int Original_idx, + string Original_MC, + string Original_Title, + string Original_Remark, + global::System.Nullable Original_wdate, + global::System.Nullable Original_vOption, + global::System.Nullable Original_vJobInfo, + global::System.Nullable Original_vSidInfo, + global::System.Nullable Original_vServerWrite, + string Original_jobtype, + string Original_bypasssid, + global::System.Nullable Original_vWMSInfo, + int idx) { + if ((MC == null)) { + this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(MC)); + } + if ((Title == null)) { + throw new global::System.ArgumentNullException("Title"); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(Title)); + } + if ((Remark == null)) { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[3].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((vOption.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[4].Value = ((int)(vOption.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + if ((vJobInfo.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[5].Value = ((int)(vJobInfo.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value; + } + if ((vSidInfo.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[6].Value = ((int)(vSidInfo.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value; + } + if ((vServerWrite.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[7].Value = ((int)(vServerWrite.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + if ((jobtype == null)) { + this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(jobtype)); + } + if ((bypasssid == null)) { + this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = ((string)(bypasssid)); + } + if ((vWMSInfo.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[10].Value = ((int)(vWMSInfo.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[11].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[13].Value = ((string)(Original_MC)); + } + if ((Original_Title == null)) { + throw new global::System.ArgumentNullException("Original_Title"); + } + else { + this.Adapter.UpdateCommand.Parameters[14].Value = ((string)(Original_Title)); + } + if ((Original_Remark == null)) { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[16].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[16].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[18].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[17].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[18].Value = global::System.DBNull.Value; + } + if ((Original_vOption.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[20].Value = ((int)(Original_vOption.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[19].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[20].Value = global::System.DBNull.Value; + } + if ((Original_vJobInfo.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[21].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[22].Value = ((int)(Original_vJobInfo.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[21].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[22].Value = global::System.DBNull.Value; + } + if ((Original_vSidInfo.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[23].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[24].Value = ((int)(Original_vSidInfo.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[23].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[24].Value = global::System.DBNull.Value; + } + if ((Original_vServerWrite.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[25].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[26].Value = ((int)(Original_vServerWrite.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[25].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[26].Value = global::System.DBNull.Value; + } + if ((Original_jobtype == null)) { + this.Adapter.UpdateCommand.Parameters[27].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[28].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[27].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[28].Value = ((string)(Original_jobtype)); + } + if ((Original_bypasssid == null)) { + this.Adapter.UpdateCommand.Parameters[29].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[30].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[29].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[30].Value = ((string)(Original_bypasssid)); + } + if ((Original_vWMSInfo.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[31].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[32].Value = ((int)(Original_vWMSInfo.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[31].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[32].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[33].Value = ((int)(idx)); + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + string MC, + string Title, + string Remark, + global::System.Nullable wdate, + global::System.Nullable vOption, + global::System.Nullable vJobInfo, + global::System.Nullable vSidInfo, + global::System.Nullable vServerWrite, + string jobtype, + string bypasssid, + global::System.Nullable vWMSInfo, + int Original_idx, + string Original_MC, + string Original_Title, + string Original_Remark, + global::System.Nullable Original_wdate, + global::System.Nullable Original_vOption, + global::System.Nullable Original_vJobInfo, + global::System.Nullable Original_vSidInfo, + global::System.Nullable Original_vServerWrite, + string Original_jobtype, + string Original_bypasssid, + global::System.Nullable Original_vWMSInfo) { + return this.Update(MC, Title, Remark, wdate, vOption, vJobInfo, vSidInfo, vServerWrite, jobtype, bypasssid, vWMSInfo, Original_idx, Original_MC, Original_Title, Original_Remark, Original_wdate, Original_vOption, Original_vJobInfo, Original_vSidInfo, Original_vServerWrite, Original_jobtype, Original_bypasssid, Original_vWMSInfo, Original_idx); + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_CustInfoTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_CustInfoTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_CustInfo"; + tableMapping.ColumnMappings.Add("code", "code"); + tableMapping.ColumnMappings.Add("name", "name"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = "DELETE FROM [K4EE_Component_Reel_CustInfo] WHERE (([code] = @Original_code) AND (" + + "(@IsNull_name = 1 AND [name] IS NULL) OR ([name] = @Original_name)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_name", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "name", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_name", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "name", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = "INSERT INTO [K4EE_Component_Reel_CustInfo] ([code], [name]) VALUES (@code, @name)" + + ";\r\nSELECT code, name FROM Component_Reel_CustInfo WHERE (code = @code)"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@name", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "name", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = "UPDATE [K4EE_Component_Reel_CustInfo] SET [code] = @code, [name] = @name WHERE ((" + + "[code] = @Original_code) AND ((@IsNull_name = 1 AND [name] IS NULL) OR ([name] =" + + " @Original_name)));\r\nSELECT code, name FROM Component_Reel_CustInfo WHERE (code " + + "= @code)"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@name", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "name", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_name", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "name", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT code, name\r\nFROM K4EE_Component_Reel_CustInfo WITH (NOLOCK)"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_CustInfoDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_CustInfoDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + DataSet1.K4EE_Component_Reel_CustInfoDataTable dataTable = new DataSet1.K4EE_Component_Reel_CustInfoDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_CustInfoDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_CustInfo"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(string Original_code, string Original_name) { + if ((Original_code == null)) { + throw new global::System.ArgumentNullException("Original_code"); + } + else { + this.Adapter.DeleteCommand.Parameters[0].Value = ((string)(Original_code)); + } + if ((Original_name == null)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_name)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string code, string name) { + if ((code == null)) { + throw new global::System.ArgumentNullException("code"); + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(code)); + } + if ((name == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(name)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string code, string name, string Original_code) { + if ((code == null)) { + throw new global::System.ArgumentNullException("code"); + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(code)); + } + if ((name == null)) { + this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(name)); + } + if ((Original_code == null)) { + throw new global::System.ArgumentNullException("Original_code"); + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(Original_code)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string name, string Original_code) { + return this.Update(Original_code, name, Original_code); + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class ResultSummaryTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public ResultSummaryTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "ResultSummary"; + tableMapping.ColumnMappings.Add("PARTNO", "PARTNO"); + tableMapping.ColumnMappings.Add("VLOT", "VLOT"); + tableMapping.ColumnMappings.Add("QTY", "QTY"); + tableMapping.ColumnMappings.Add("KPC", "KPC"); + this._adapter.TableMappings.Add(tableMapping); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT PARTNO, VLOT, COUNT(*) AS QTY, SUM(QTY) / 1000 AS KPC\r\nFROM K4EE_Comp" + + "onent_Reel_Result\r\nWHERE (ISNULL(MC, \'\') = @mc) AND (PRNATTACH = 1) AND (CONVER" + + "T(varchar(10), STIME, 120) BETWEEN @sd AND @ed)\r\nGROUP BY PARTNO, VLOT\r\nORDER BY" + + " PARTNO, VLOT"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.ResultSummaryDataTable dataTable, string mc, string sd, string ed) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(ed)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.ResultSummaryDataTable GetData(string mc, string sd, string ed) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(ed)); + } + DataSet1.ResultSummaryDataTable dataTable = new DataSet1.ResultSummaryDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_Print_InformationTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public K4EE_Component_Reel_Print_InformationTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_Print_Information"; + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("MC", "MC"); + tableMapping.ColumnMappings.Add("SID", "SID"); + tableMapping.ColumnMappings.Add("PrintPosition", "PrintPosition"); + tableMapping.ColumnMappings.Add("Remark", "Remark"); + tableMapping.ColumnMappings.Add("wdate", "wdate"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [K4EE_Component_Reel_Print_Information] WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PrintPosition", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PrintPosition", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_Print_Information] ([MC], [SID], [PrintPosition], [Remark], [wdate]) VALUES (@MC, @SID, @PrintPosition, @Remark, @wdate); +SELECT idx, MC, SID, PrintPosition, Remark, wdate FROM Component_Reel_Print_Information WHERE (idx = SCOPE_IDENTITY())"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PrintPosition", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [K4EE_Component_Reel_Print_Information] SET [MC] = @MC, [SID] = @SID, [PrintPosition] = @PrintPosition, [Remark] = @Remark, [wdate] = @wdate WHERE (([idx] = @Original_idx) AND ((@IsNull_MC = 1 AND [MC] IS NULL) OR ([MC] = @Original_MC)) AND ([SID] = @Original_SID) AND ((@IsNull_PrintPosition = 1 AND [PrintPosition] IS NULL) OR ([PrintPosition] = @Original_PrintPosition)) AND ((@IsNull_Remark = 1 AND [Remark] IS NULL) OR ([Remark] = @Original_Remark)) AND ((@IsNull_wdate = 1 AND [wdate] IS NULL) OR ([wdate] = @Original_wdate))); +SELECT idx, MC, SID, PrintPosition, Remark, wdate FROM Component_Reel_Print_Information WHERE (idx = @idx)"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PrintPosition", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_MC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_MC", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PrintPosition", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PrintPosition", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PrintPosition", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Remark", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Remark", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "Remark", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_wdate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[2]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT idx, MC, SID, PrintPosition, Remark, wdate\r\nFROM K4EE_Component_Reel_" + + "Print_Information WITH (NOLOCK)\r\nWHERE (MC = @mc)"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[1].Connection = this.Connection; + this._commandCollection[1].CommandText = "SELECT idx, MC, SID, PrintPosition, Remark, wdate\r\nFROM K4EE_Component_Reel_" + + "Print_Information WITH (NOLOCK)\r\nWHERE (MC = @mc) AND (SID = @sid)"; + this._commandCollection[1].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_Print_InformationDataTable dataTable, string mc) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_Print_InformationDataTable GetData(string mc) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + DataSet1.K4EE_Component_Reel_Print_InformationDataTable dataTable = new DataSet1.K4EE_Component_Reel_Print_InformationDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)] + public virtual int FillBySID(DataSet1.K4EE_Component_Reel_Print_InformationDataTable dataTable, string mc, string sid) { + this.Adapter.SelectCommand = this.CommandCollection[1]; + if ((mc == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sid)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] + public virtual DataSet1.K4EE_Component_Reel_Print_InformationDataTable GetBySID(string mc, string sid) { + this.Adapter.SelectCommand = this.CommandCollection[1]; + if ((mc == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sid)); + } + DataSet1.K4EE_Component_Reel_Print_InformationDataTable dataTable = new DataSet1.K4EE_Component_Reel_Print_InformationDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_Print_InformationDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_Print_Information"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(int Original_idx, string Original_MC, string Original_SID, string Original_PrintPosition, string Original_Remark, global::System.Nullable Original_wdate) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_MC)); + } + if ((Original_SID == null)) { + throw new global::System.ArgumentNullException("Original_SID"); + } + else { + this.Adapter.DeleteCommand.Parameters[3].Value = ((string)(Original_SID)); + } + if ((Original_PrintPosition == null)) { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[5].Value = ((string)(Original_PrintPosition)); + } + if ((Original_Remark == null)) { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[7].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[9].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[9].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string MC, string SID, string PrintPosition, string Remark, global::System.Nullable wdate) { + if ((MC == null)) { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(MC)); + } + if ((SID == null)) { + throw new global::System.ArgumentNullException("SID"); + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(SID)); + } + if ((PrintPosition == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(PrintPosition)); + } + if ((Remark == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[4].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string MC, string SID, string PrintPosition, string Remark, global::System.Nullable wdate, int Original_idx, string Original_MC, string Original_SID, string Original_PrintPosition, string Original_Remark, global::System.Nullable Original_wdate, object idx) { + if ((MC == null)) { + this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(MC)); + } + if ((SID == null)) { + throw new global::System.ArgumentNullException("SID"); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(SID)); + } + if ((PrintPosition == null)) { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(PrintPosition)); + } + if ((Remark == null)) { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(Remark)); + } + if ((wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[4].Value = ((System.DateTime)(wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[5].Value = ((int)(Original_idx)); + if ((Original_MC == null)) { + this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(Original_MC)); + } + if ((Original_SID == null)) { + throw new global::System.ArgumentNullException("Original_SID"); + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(Original_SID)); + } + if ((Original_PrintPosition == null)) { + this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[10].Value = ((string)(Original_PrintPosition)); + } + if ((Original_Remark == null)) { + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[11].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[12].Value = ((string)(Original_Remark)); + } + if ((Original_wdate.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[14].Value = ((System.DateTime)(Original_wdate.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[13].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value; + } + if ((idx == null)) { + throw new global::System.ArgumentNullException("idx"); + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = ((object)(idx)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class CustCodeListTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public CustCodeListTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "CustCodeList"; + tableMapping.ColumnMappings.Add("CustCode", "CustCode"); + this._adapter.TableMappings.Add(tableMapping); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT CustCode\r\nFROM K4EE_Component_Reel_SID_Information WITH (NOLOCK)\r\nWHE" + + "RE (MC = @mcname)\r\nGROUP BY CustCode\r\nORDER BY CustCode"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mcname", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.CustCodeListDataTable dataTable, string mcname) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.CustCodeListDataTable GetData(string mcname) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mcname == null)) { + this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mcname)); + } + DataSet1.CustCodeListDataTable dataTable = new DataSet1.CustCodeListDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class SidinfoCustGroupTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public SidinfoCustGroupTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "SidinfoCustGroup"; + tableMapping.ColumnMappings.Add("CustCode", "CustCode"); + this._adapter.TableMappings.Add(tableMapping); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.CS; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT CUST_CODE AS CustCode\r\nFROM VW_GET_MAX_QTY_VENDOR_LOT WITH (NOLOCK)\r\n" + + "WHERE (ISNULL(CUST_CODE, \'\') <> \'\')\r\nGROUP BY CUST_CODE\r\nORDER BY CustCode"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.SidinfoCustGroupDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.SidinfoCustGroupDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + DataSet1.SidinfoCustGroupDataTable dataTable = new DataSet1.SidinfoCustGroupDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class QueriesTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.IDbCommand[] _commandCollection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected global::System.Data.IDbCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.IDbCommand[6]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.CS); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).CommandText = "SELECT ISNULL(name, \'\') AS Expr1\r\nFROM K4EE_Component_Reel_Cust" + + "Info WITH (nolock)\r\nWHERE (code = @code)"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).CommandType = global::System.Data.CommandType.Text; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@code", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[1])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.CS); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[1])).CommandText = "UPDATE K4EE_Component_Reel_CustInfo\r\nSET name = @newname\r\nWHERE (code = @" + + "custcode)"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[1])).CommandType = global::System.Data.CommandType.Text; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[1])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@newname", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "name", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[1])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "code", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[2])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.CS); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[2])).CommandText = "SELECT ISNULL(SID, \'\') AS Expr1\r\nFROM K4EE_Component_Reel_SID_Information wi" + + "th (nolock)\r\nWHERE (CustCode = @custcode) AND (PartNo = @partno)"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[2])).CommandType = global::System.Data.CommandType.Text; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[2])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@custcode", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "CustCode", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[2])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@partno", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "PartNo", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[3])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.CS); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[3])).CommandText = "SELECT TOP (1) ISNULL(VLOT, \'\') AS Expr1\r\nFROM K4EE_Component_Reel_Result wi" + + "th (nolock)\r\nWHERE (SID = @isd)\r\nORDER BY wdate DESC"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[3])).CommandType = global::System.Data.CommandType.Text; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[3])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@isd", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[4] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[4])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.CS); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[4])).CommandText = "SELECT COUNT(*) AS Expr1\r\nFROM VW_GET_MAX_QTY_VENDOR_LOT WITH (nolock)\r\nWHER" + + "E (SID = @sid)"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[4])).CommandType = global::System.Data.CommandType.Text; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[4])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[5] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[5])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.CS); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[5])).CommandText = "SELECT COUNT(*) AS Expr1\r\nFROM K4EE_Component_Reel_Result WITH " + + "(nolock)\r\nWHERE (iNBOUND = \'OK\') AND (STIME >= @stime) AND (SID = @sid) A" + + "ND (BATCH = @batch)"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[5])).CommandType = global::System.Data.CommandType.Text; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[5])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@stime", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[5])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sid", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[5])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@batch", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual string GetCustName(string code) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[0])); + if ((code == null)) { + throw new global::System.ArgumentNullException("code"); + } + else { + command.Parameters[0].Value = ((string)(code)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return null; + } + else { + return ((string)(returnValue)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int SetCustName(string newname, string custcode) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[1])); + if ((newname == null)) { + command.Parameters[0].Value = global::System.DBNull.Value; + } + else { + command.Parameters[0].Value = ((string)(newname)); + } + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + command.Parameters[1].Value = ((string)(custcode)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + int returnValue; + try { + returnValue = command.ExecuteNonQuery(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual string GetSIDFromCustAndPart(string custcode, string partno) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[2])); + if ((custcode == null)) { + throw new global::System.ArgumentNullException("custcode"); + } + else { + command.Parameters[0].Value = ((string)(custcode)); + } + if ((partno == null)) { + throw new global::System.ArgumentNullException("partno"); + } + else { + command.Parameters[1].Value = ((string)(partno)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return null; + } + else { + return ((string)(returnValue)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual string GetLastVLotFromSID(string isd) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[3])); + if ((isd == null)) { + command.Parameters[0].Value = global::System.DBNull.Value; + } + else { + command.Parameters[0].Value = ((string)(isd)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return null; + } + else { + return ((string)(returnValue)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual global::System.Nullable CheckSIDExist(string sid) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[4])); + if ((sid == null)) { + throw new global::System.ArgumentNullException("sid"); + } + else { + command.Parameters[0].Value = ((string)(sid)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return new global::System.Nullable(); + } + else { + return new global::System.Nullable(((int)(returnValue))); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual global::System.Nullable GetIBResultCountBySIDBatch(System.DateTime stime, string sid, string batch) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[5])); + command.Parameters[0].Value = ((System.DateTime)(stime)); + if ((sid == null)) { + command.Parameters[1].Value = global::System.DBNull.Value; + } + else { + command.Parameters[1].Value = ((string)(sid)); + } + if ((batch == null)) { + command.Parameters[2].Value = global::System.DBNull.Value; + } + else { + command.Parameters[2].Value = ((string)(batch)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + object returnValue; + try { + returnValue = command.ExecuteScalar(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((returnValue == null) + || (returnValue.GetType() == typeof(global::System.DBNull)))) { + return new global::System.Nullable(); + } + else { + return new global::System.Nullable(((int)(returnValue))); + } + } + } + + /// + ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" + + "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")] + public partial class TableAdapterManager : global::System.ComponentModel.Component { + + private UpdateOrderOption _updateOrder; + + private K4EE_Component_Reel_ResultTableAdapter _k4EE_Component_Reel_ResultTableAdapter; + + private K4EE_Component_Reel_RegExRuleTableAdapter _k4EE_Component_Reel_RegExRuleTableAdapter; + + private K4EE_Component_Reel_SID_ConvertTableAdapter _k4EE_Component_Reel_SID_ConvertTableAdapter; + + private K4EE_Component_Reel_SID_InformationTableAdapter _k4EE_Component_Reel_SID_InformationTableAdapter; + + private K4EE_Component_Reel_PreSetTableAdapter _k4EE_Component_Reel_PreSetTableAdapter; + + private K4EE_Component_Reel_CustInfoTableAdapter _k4EE_Component_Reel_CustInfoTableAdapter; + + private K4EE_Component_Reel_Print_InformationTableAdapter _k4EE_Component_Reel_Print_InformationTableAdapter; + + private bool _backupDataSetBeforeUpdate; + + private global::System.Data.IDbConnection _connection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public UpdateOrderOption UpdateOrder { + get { + return this._updateOrder; + } + set { + this._updateOrder = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_ResultTableAdapter K4EE_Component_Reel_ResultTableAdapter { + get { + return this._k4EE_Component_Reel_ResultTableAdapter; + } + set { + this._k4EE_Component_Reel_ResultTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_RegExRuleTableAdapter K4EE_Component_Reel_RegExRuleTableAdapter { + get { + return this._k4EE_Component_Reel_RegExRuleTableAdapter; + } + set { + this._k4EE_Component_Reel_RegExRuleTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_SID_ConvertTableAdapter K4EE_Component_Reel_SID_ConvertTableAdapter { + get { + return this._k4EE_Component_Reel_SID_ConvertTableAdapter; + } + set { + this._k4EE_Component_Reel_SID_ConvertTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_SID_InformationTableAdapter K4EE_Component_Reel_SID_InformationTableAdapter { + get { + return this._k4EE_Component_Reel_SID_InformationTableAdapter; + } + set { + this._k4EE_Component_Reel_SID_InformationTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_PreSetTableAdapter K4EE_Component_Reel_PreSetTableAdapter { + get { + return this._k4EE_Component_Reel_PreSetTableAdapter; + } + set { + this._k4EE_Component_Reel_PreSetTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_CustInfoTableAdapter K4EE_Component_Reel_CustInfoTableAdapter { + get { + return this._k4EE_Component_Reel_CustInfoTableAdapter; + } + set { + this._k4EE_Component_Reel_CustInfoTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_Print_InformationTableAdapter K4EE_Component_Reel_Print_InformationTableAdapter { + get { + return this._k4EE_Component_Reel_Print_InformationTableAdapter; + } + set { + this._k4EE_Component_Reel_Print_InformationTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public bool BackupDataSetBeforeUpdate { + get { + return this._backupDataSetBeforeUpdate; + } + set { + this._backupDataSetBeforeUpdate = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public global::System.Data.IDbConnection Connection { + get { + if ((this._connection != null)) { + return this._connection; + } + if (((this._k4EE_Component_Reel_ResultTableAdapter != null) + && (this._k4EE_Component_Reel_ResultTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_ResultTableAdapter.Connection; + } + if (((this._k4EE_Component_Reel_RegExRuleTableAdapter != null) + && (this._k4EE_Component_Reel_RegExRuleTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_RegExRuleTableAdapter.Connection; + } + if (((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null) + && (this._k4EE_Component_Reel_SID_ConvertTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_SID_ConvertTableAdapter.Connection; + } + if (((this._k4EE_Component_Reel_SID_InformationTableAdapter != null) + && (this._k4EE_Component_Reel_SID_InformationTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_SID_InformationTableAdapter.Connection; + } + if (((this._k4EE_Component_Reel_PreSetTableAdapter != null) + && (this._k4EE_Component_Reel_PreSetTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_PreSetTableAdapter.Connection; + } + if (((this._k4EE_Component_Reel_CustInfoTableAdapter != null) + && (this._k4EE_Component_Reel_CustInfoTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_CustInfoTableAdapter.Connection; + } + if (((this._k4EE_Component_Reel_Print_InformationTableAdapter != null) + && (this._k4EE_Component_Reel_Print_InformationTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_Print_InformationTableAdapter.Connection; + } + return null; + } + set { + this._connection = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int TableAdapterInstanceCount { + get { + int count = 0; + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + count = (count + 1); + } + if ((this._k4EE_Component_Reel_RegExRuleTableAdapter != null)) { + count = (count + 1); + } + if ((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null)) { + count = (count + 1); + } + if ((this._k4EE_Component_Reel_SID_InformationTableAdapter != null)) { + count = (count + 1); + } + if ((this._k4EE_Component_Reel_PreSetTableAdapter != null)) { + count = (count + 1); + } + if ((this._k4EE_Component_Reel_CustInfoTableAdapter != null)) { + count = (count + 1); + } + if ((this._k4EE_Component_Reel_Print_InformationTableAdapter != null)) { + count = (count + 1); + } + return count; + } + } + + /// + ///Update rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private int UpdateUpdatedRows(DataSet1 dataSet, global::System.Collections.Generic.List allChangedRows, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_Print_InformationTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_Print_Information.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_Print_InformationTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._k4EE_Component_Reel_CustInfoTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_CustInfo.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_CustInfoTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._k4EE_Component_Reel_PreSetTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_PreSet.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_PreSetTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._k4EE_Component_Reel_SID_InformationTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_SID_Information.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_SID_InformationTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_SID_Convert.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._k4EE_Component_Reel_RegExRuleTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_RegExRule.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_RegExRuleTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_Result.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_ResultTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + return result; + } + + /// + ///Insert rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private int UpdateInsertedRows(DataSet1 dataSet, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_Print_InformationTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_Print_Information.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_Print_InformationTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._k4EE_Component_Reel_CustInfoTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_CustInfo.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_CustInfoTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._k4EE_Component_Reel_PreSetTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_PreSet.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_PreSetTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._k4EE_Component_Reel_SID_InformationTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_SID_Information.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_SID_InformationTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_SID_Convert.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._k4EE_Component_Reel_RegExRuleTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_RegExRule.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_RegExRuleTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_Result.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_ResultTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + return result; + } + + /// + ///Delete rows in bottom-up order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private int UpdateDeletedRows(DataSet1 dataSet, global::System.Collections.Generic.List allChangedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_Result.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_ResultTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._k4EE_Component_Reel_RegExRuleTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_RegExRule.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_RegExRuleTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_SID_Convert.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._k4EE_Component_Reel_SID_InformationTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_SID_Information.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_SID_InformationTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._k4EE_Component_Reel_PreSetTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_PreSet.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_PreSetTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._k4EE_Component_Reel_CustInfoTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_CustInfo.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_CustInfoTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._k4EE_Component_Reel_Print_InformationTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_Print_Information.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_Print_InformationTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + return result; + } + + /// + ///Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List allAddedRows) { + if (((updatedRows == null) + || (updatedRows.Length < 1))) { + return updatedRows; + } + if (((allAddedRows == null) + || (allAddedRows.Count < 1))) { + return updatedRows; + } + global::System.Collections.Generic.List realUpdatedRows = new global::System.Collections.Generic.List(); + for (int i = 0; (i < updatedRows.Length); i = (i + 1)) { + global::System.Data.DataRow row = updatedRows[i]; + if ((allAddedRows.Contains(row) == false)) { + realUpdatedRows.Add(row); + } + } + return realUpdatedRows.ToArray(); + } + + /// + ///Update all changes to the dataset. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public virtual int UpdateAll(DataSet1 dataSet) { + if ((dataSet == null)) { + throw new global::System.ArgumentNullException("dataSet"); + } + if ((dataSet.HasChanges() == false)) { + return 0; + } + if (((this._k4EE_Component_Reel_ResultTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_ResultTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + if (((this._k4EE_Component_Reel_RegExRuleTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_RegExRuleTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + if (((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_SID_ConvertTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + if (((this._k4EE_Component_Reel_SID_InformationTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_SID_InformationTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + if (((this._k4EE_Component_Reel_PreSetTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_PreSetTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + if (((this._k4EE_Component_Reel_CustInfoTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_CustInfoTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + if (((this._k4EE_Component_Reel_Print_InformationTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_Print_InformationTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + global::System.Data.IDbConnection workConnection = this.Connection; + if ((workConnection == null)) { + throw new global::System.ApplicationException("TableAdapterManager에 연결 정보가 없습니다. 각 TableAdapterManager TableAdapter 속성을 올바른 Tabl" + + "eAdapter 인스턴스로 설정하십시오."); + } + bool workConnOpened = false; + if (((workConnection.State & global::System.Data.ConnectionState.Broken) + == global::System.Data.ConnectionState.Broken)) { + workConnection.Close(); + } + if ((workConnection.State == global::System.Data.ConnectionState.Closed)) { + workConnection.Open(); + workConnOpened = true; + } + global::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction(); + if ((workTransaction == null)) { + throw new global::System.ApplicationException("트랜잭션을 시작할 수 없습니다. 현재 데이터 연결에서 트랜잭션이 지원되지 않거나 현재 상태에서 트랜잭션을 시작할 수 없습니다."); + } + global::System.Collections.Generic.List allChangedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List allAddedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.Dictionary revertConnections = new global::System.Collections.Generic.Dictionary(); + int result = 0; + global::System.Data.DataSet backupDataSet = null; + if (this.BackupDataSetBeforeUpdate) { + backupDataSet = new global::System.Data.DataSet(); + backupDataSet.Merge(dataSet); + } + try { + // ---- Prepare for update ----------- + // + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_ResultTableAdapter, this._k4EE_Component_Reel_ResultTableAdapter.Connection); + this._k4EE_Component_Reel_ResultTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_ResultTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_ResultTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_ResultTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_ResultTableAdapter.Adapter); + } + } + if ((this._k4EE_Component_Reel_RegExRuleTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_RegExRuleTableAdapter, this._k4EE_Component_Reel_RegExRuleTableAdapter.Connection); + this._k4EE_Component_Reel_RegExRuleTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_RegExRuleTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_RegExRuleTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_RegExRuleTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_RegExRuleTableAdapter.Adapter); + } + } + if ((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_SID_ConvertTableAdapter, this._k4EE_Component_Reel_SID_ConvertTableAdapter.Connection); + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_SID_ConvertTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_SID_ConvertTableAdapter.Adapter); + } + } + if ((this._k4EE_Component_Reel_SID_InformationTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_SID_InformationTableAdapter, this._k4EE_Component_Reel_SID_InformationTableAdapter.Connection); + this._k4EE_Component_Reel_SID_InformationTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_SID_InformationTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_SID_InformationTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_SID_InformationTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_SID_InformationTableAdapter.Adapter); + } + } + if ((this._k4EE_Component_Reel_PreSetTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_PreSetTableAdapter, this._k4EE_Component_Reel_PreSetTableAdapter.Connection); + this._k4EE_Component_Reel_PreSetTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_PreSetTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_PreSetTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_PreSetTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_PreSetTableAdapter.Adapter); + } + } + if ((this._k4EE_Component_Reel_CustInfoTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_CustInfoTableAdapter, this._k4EE_Component_Reel_CustInfoTableAdapter.Connection); + this._k4EE_Component_Reel_CustInfoTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_CustInfoTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_CustInfoTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_CustInfoTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_CustInfoTableAdapter.Adapter); + } + } + if ((this._k4EE_Component_Reel_Print_InformationTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_Print_InformationTableAdapter, this._k4EE_Component_Reel_Print_InformationTableAdapter.Connection); + this._k4EE_Component_Reel_Print_InformationTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_Print_InformationTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_Print_InformationTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_Print_InformationTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_Print_InformationTableAdapter.Adapter); + } + } + // + //---- Perform updates ----------- + // + if ((this.UpdateOrder == UpdateOrderOption.UpdateInsertDelete)) { + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + } + else { + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + } + result = (result + this.UpdateDeletedRows(dataSet, allChangedRows)); + // + //---- Commit updates ----------- + // + workTransaction.Commit(); + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + if ((0 < allChangedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allChangedRows.Count]; + allChangedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + } + catch (global::System.Exception ex) { + workTransaction.Rollback(); + // ---- Restore the dataset ----------- + if (this.BackupDataSetBeforeUpdate) { + global::System.Diagnostics.Debug.Assert((backupDataSet != null)); + dataSet.Clear(); + dataSet.Merge(backupDataSet); + } + else { + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + row.SetAdded(); + } + } + } + throw ex; + } + finally { + if (workConnOpened) { + workConnection.Close(); + } + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + this._k4EE_Component_Reel_ResultTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_ResultTableAdapter])); + this._k4EE_Component_Reel_ResultTableAdapter.Transaction = null; + } + if ((this._k4EE_Component_Reel_RegExRuleTableAdapter != null)) { + this._k4EE_Component_Reel_RegExRuleTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_RegExRuleTableAdapter])); + this._k4EE_Component_Reel_RegExRuleTableAdapter.Transaction = null; + } + if ((this._k4EE_Component_Reel_SID_ConvertTableAdapter != null)) { + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_SID_ConvertTableAdapter])); + this._k4EE_Component_Reel_SID_ConvertTableAdapter.Transaction = null; + } + if ((this._k4EE_Component_Reel_SID_InformationTableAdapter != null)) { + this._k4EE_Component_Reel_SID_InformationTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_SID_InformationTableAdapter])); + this._k4EE_Component_Reel_SID_InformationTableAdapter.Transaction = null; + } + if ((this._k4EE_Component_Reel_PreSetTableAdapter != null)) { + this._k4EE_Component_Reel_PreSetTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_PreSetTableAdapter])); + this._k4EE_Component_Reel_PreSetTableAdapter.Transaction = null; + } + if ((this._k4EE_Component_Reel_CustInfoTableAdapter != null)) { + this._k4EE_Component_Reel_CustInfoTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_CustInfoTableAdapter])); + this._k4EE_Component_Reel_CustInfoTableAdapter.Transaction = null; + } + if ((this._k4EE_Component_Reel_Print_InformationTableAdapter != null)) { + this._k4EE_Component_Reel_Print_InformationTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_Print_InformationTableAdapter])); + this._k4EE_Component_Reel_Print_InformationTableAdapter.Transaction = null; + } + if ((0 < adaptersWithAcceptChangesDuringUpdate.Count)) { + global::System.Data.Common.DataAdapter[] adapters = new System.Data.Common.DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count]; + adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters); + for (int i = 0; (i < adapters.Length); i = (i + 1)) { + global::System.Data.Common.DataAdapter adapter = adapters[i]; + adapter.AcceptChangesDuringUpdate = true; + } + } + } + return result; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected virtual void SortSelfReferenceRows(global::System.Data.DataRow[] rows, global::System.Data.DataRelation relation, bool childFirst) { + global::System.Array.Sort(rows, new SelfReferenceComparer(relation, childFirst)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + protected virtual bool MatchTableAdapterConnection(global::System.Data.IDbConnection inputConnection) { + if ((this._connection != null)) { + return true; + } + if (((this.Connection == null) + || (inputConnection == null))) { + return true; + } + if (string.Equals(this.Connection.ConnectionString, inputConnection.ConnectionString, global::System.StringComparison.Ordinal)) { + return true; + } + return false; + } + + /// + ///Update Order Option + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public enum UpdateOrderOption { + + InsertUpdateDelete = 0, + + UpdateInsertDelete = 1, + } + + /// + ///Used to sort self-referenced table's rows + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private class SelfReferenceComparer : object, global::System.Collections.Generic.IComparer { + + private global::System.Data.DataRelation _relation; + + private int _childFirst; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + internal SelfReferenceComparer(global::System.Data.DataRelation relation, bool childFirst) { + this._relation = relation; + if (childFirst) { + this._childFirst = -1; + } + else { + this._childFirst = 1; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + private global::System.Data.DataRow GetRoot(global::System.Data.DataRow row, out int distance) { + global::System.Diagnostics.Debug.Assert((row != null)); + global::System.Data.DataRow root = row; + distance = 0; + + global::System.Collections.Generic.IDictionary traversedRows = new global::System.Collections.Generic.Dictionary(); + traversedRows[row] = row; + + global::System.Data.DataRow parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + } + + if ((distance == 0)) { + traversedRows.Clear(); + traversedRows[row] = row; + parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + } + } + + return root; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] + public int Compare(global::System.Data.DataRow row1, global::System.Data.DataRow row2) { + if (object.ReferenceEquals(row1, row2)) { + return 0; + } + if ((row1 == null)) { + return -1; + } + if ((row2 == null)) { + return 1; + } + + int distance1 = 0; + global::System.Data.DataRow root1 = this.GetRoot(row1, out distance1); + + int distance2 = 0; + global::System.Data.DataRow root2 = this.GetRoot(row2, out distance2); + + if (object.ReferenceEquals(root1, root2)) { + return (this._childFirst * distance1.CompareTo(distance2)); + } + else { + global::System.Diagnostics.Debug.Assert(((root1.Table != null) + && (root2.Table != null))); + if ((root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2))) { + return -1; + } + else { + return 1; + } + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Handler/Project/Device/KeyenceBarcode.cs b/Handler/Project/Device/KeyenceBarcode.cs new file mode 100644 index 0000000..a840d49 --- /dev/null +++ b/Handler/Project/Device/KeyenceBarcode.cs @@ -0,0 +1,479 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; +using AR; +using System.Security.Cryptography; + +namespace Project.Device +{ + public class KeyenceBarcode : IDisposable + { + public string IP { get; set; } + public int Port { get; set; } + private Winsock_Orcas.Winsock ws; + public event EventHandler BarcodeRecv; + public event EventHandler ImageRecv; + RecvDataEvent LastData = null; + RecvImageEvent LastImage = null; + + public Boolean IsTriggerOn { get; set; } = false; + private DateTime LastTrigOnTime = DateTime.Now; + private System.Threading.Thread thliveimage = null; + public int LiveImagetDelay = 500; + public bool disposed = false; + bool bRunConnectionK = true; + public string Tag { get; set; } + + + public string baseZPL { get; set; } + + public class RecvDataEvent : EventArgs + { + public string RawData { get; set; } + public RecvDataEvent(string rawdata) + { + this.RawData = rawdata; + } + } + public class RecvImageEvent : EventArgs + { + public Image Image { get; set; } + public RecvImageEvent(Image rawdata) + { + this.Image = rawdata; + } + } + + public KeyenceBarcode(string ip = "192.168.100.100", int port = 9004) + { + this.IP = ip; + this.Port = port; + ws = new Winsock_Orcas.Winsock(); + ws.LegacySupport = true; + ws.DataArrival += Ws_DataArrival; + ws.Connected += Ws_Connected; + thliveimage = new Thread(new ThreadStart(GetLiveImage)); + thliveimage.IsBackground = false; + thliveimage.Start(); + Console.WriteLine($"{ip} / Port:{port}"); + } + + ~KeyenceBarcode() + { + Dispose(disposing: false); + } + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + #region "Image Utility" + + /// + /// 8bpp 이미지의 팔레트를 설정합니다 + /// + /// + public void UpdateGrayPallete(ref Bitmap bmp) + { + if (bmp.PixelFormat == System.Drawing.Imaging.PixelFormat.Format8bppIndexed) + { + System.Drawing.Imaging.ColorPalette pal = bmp.Palette; + for (int i = 0; i < 256; i++) + { + pal.Entries[i] = Color.FromArgb(i, i, i); + } + bmp.Palette = pal; + } + } + public void GetImagePtr(Bitmap bmp, out IntPtr ptr, out int stride) + { + stride = 0; + ptr = IntPtr.Zero; + try + { + BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat); + ptr = bmpdata.Scan0; + stride = bmpdata.Stride; + bmp.UnlockBits(bmpdata); + } + catch (Exception ex) + { + + } + } + + public bool IsCompatible(Bitmap source, Bitmap target) + { + if (source == null) return false; + try + { + if (source.Height != target.Height || + source.Width != target.Width || + source.PixelFormat != target.PixelFormat) return false; + return true; + } + catch (Exception ex) + { + PUB.log.AddE("keyence compatiable : " + ex.Message); + return false; + } + + + } + public bool IsCompatible(Bitmap source, int w, int h, PixelFormat pf) + { + if (source == null) return false; + if (source.Height != h || + source.Width != w || + source.PixelFormat != pf) return false; + + return true; + } + + public Bitmap CreateBitmap(int w, int h) + { + + Bitmap bmp = new Bitmap(w, h, PixelFormat.Format8bppIndexed); + UpdateGrayPallete(ref bmp); + return bmp; + } + + byte[] memorybuffer; + public void UpdateBitmap(Bitmap source, Bitmap target) + { + if (source.Width < 10 || source.Height < 10) return; + if (target == null || target.Width < 10 || target.Height < 10) + { + target = CreateBitmap(source.Width, source.Height); + } + + var bitmaperrcnt = AR.VAR.I32[eVarInt32.BitmapCompatErr]; + if (IsCompatible(source, target) == false) + { + PUB.log.AddE($"Keyence bitmap compatibility error Source:{source.Width}x{source.Height} => Target:{target.Width}x{target.Height}"); + + if (bitmaperrcnt > 5) + { + var o = target; + target = CreateBitmap(source.Width, source.Height); + if (o != null) o.Dispose(); + bitmaperrcnt = 0; + } + else AR.VAR.I32[eVarInt32.BitmapCompatErr] += 1; + + return; + } + else + { + if (bitmaperrcnt > 0) + AR.VAR.I32[eVarInt32.BitmapCompatErr] = 0; + } + + //get image pointer + BitmapData bmpdatas = source.LockBits(new Rectangle(0, 0, source.Width, source.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, source.PixelFormat); + var ptrs = bmpdatas.Scan0; + var strides = bmpdatas.Stride; + + BitmapData bmpdatat = target.LockBits(new Rectangle(0, 0, target.Width, target.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, target.PixelFormat); + var ptrt = bmpdatat.Scan0; + var stridet = bmpdatat.Stride; + + //read source data + var sourcesize = Math.Abs(bmpdatas.Stride) * source.Height; + if (memorybuffer == null || memorybuffer.Length != sourcesize) + { + memorybuffer = new byte[sourcesize]; + } + + Marshal.Copy(ptrs, memorybuffer, 0, sourcesize); + + //write target data + Marshal.Copy(memorybuffer, 0, ptrt, sourcesize); + + source.UnlockBits(bmpdatas); + target.UnlockBits(bmpdatat); + + } + + public void UpdateBitmap(Bitmap target, byte[] buffer, int w, int h) + { + if (IsCompatible(target, w, h, target.PixelFormat) == false) + { + throw new Exception("cannot udate incompatible bitmap."); + } + + //get image pointer + BitmapData bmpdata = target.LockBits(new Rectangle(0, 0, target.Width, target.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, target.PixelFormat); + var ptr = bmpdata.Scan0; + var stride = bmpdata.Stride; + + + if (stride == w) //image x4 + { + Marshal.Copy(buffer, 0, ptr, stride * h); + } + else + { + for (int i = 0; i < target.Height; ++i) + { + Marshal.Copy(buffer, i * w, new IntPtr(ptr.ToInt64() + i * stride), w); + } + } + + target.UnlockBits(bmpdata); + + + } + + + #endregion + + + protected virtual void Dispose(bool disposing) + { + if (!this.disposed) + { + if (disposing) + { + //dipose managed resources; + bRunConnectionK = false; + Trigger(false); + ws.DataArrival -= Ws_DataArrival; + ws.Connected -= Ws_Connected; + Disconnect(); + if (thliveimage != null && thliveimage.IsAlive) thliveimage.Abort(); + } + + //dispose unmmanged resources; + } + + disposed = true; + } + + void GetLiveImage() + { + while (bRunConnectionK) + { + if (IsConnect && IsTriggerOn) + { + var tagname = this.Tag; + var img = GetImage(); + this.LastImage = new RecvImageEvent(img); + ImageRecv?.Invoke(this, this.LastImage); + System.Threading.Thread.Sleep(LiveImagetDelay); + } + else System.Threading.Thread.Sleep(1000); + } + } + + private void Ws_Connected(object sender, Winsock_Orcas.WinsockConnectedEventArgs e) + { + this.Trigger(true); + } + + public void Connect() + { + if (this.ws.State == Winsock_Orcas.WinsockStates.Closed) + { + this.ws.RemoteHost = this.IP; + this.ws.RemotePort = this.Port; + this.ws.Connect(); + } + + } + public void Disconnect() + { + if (this.ws.State != Winsock_Orcas.WinsockStates.Closed) + this.ws.Close(); + } + + private void Ws_DataArrival(object sender, Winsock_Orcas.WinsockDataArrivalEventArgs e) + { + var data = ws.Get(); + this.LastData = new RecvDataEvent(data); + BarcodeRecv?.Invoke(this, LastData); + } + + public bool Reset() + { + //if (IsTriggerOn) return; + string cmd = "RESET"; + if (IsConnect == false) + { + PUB.log.AddE("Keyence Not Connected : RESET"); + return false; + } + try + { + ws.Send(cmd + "\r"); + return true; + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + return false; + } + } + + public bool BSave(int no) + { + var cmd = $"BSAVE,{no}"; + try + { + ws.Send(cmd + "\r"); + return true; + } + catch { + return false; + } + } + public bool BLoad(int no) + { + var cmd = $"BLOAD,{no}"; + try + { + ws.Send(cmd + "\r"); + return true; + } + catch { + return false; + } + } + public void Trigger(bool bOn) + { + //if (IsTriggerOn) return; + string cmd = bOn ? "LON" : "LOFF"; + + if (bOn) LastTrigOnTime = DateTime.Now; + + try + { + ws.Send(cmd + "\r"); + IsTriggerOn = bOn; + } + catch { } + } + public void ExecCommand(string cmd) + { + try + { + ws.Send(cmd + "\r"); + } + catch { } + } + public bool IsConnect + { + get + { + if (ws == null) return false; + return ws.State == Winsock_Orcas.WinsockStates.Connected; + } + } + + private bool readimage = false; + ManualResetEvent mre = new ManualResetEvent(true); + bool mreSetOK = true; + bool mreResetOK = true; + + public Image GetImage() + { + Image oimg = null; + if (mreResetOK && mre.WaitOne(1000) == false) + { + mreResetOK = false; + return oimg; + } + else + { + mreResetOK = mre.Reset(); + try + { + var url = $"http://{this.IP}/liveimage.jpg"; + var data = UTIL.DownloadImagefromUrl(url); + var ms = new System.IO.MemoryStream(data); + oimg = Image.FromStream(ms); + } + catch (Exception ex) + { + PUB.log.AddE("Keyence GetImage:" + ex.Message); + } + + if (mreResetOK) + { + mreSetOK = mre.Set(); + } + } + return oimg; + } + + public bool SaveImage(string fn) + { + var fi = new System.IO.FileInfo(fn); + if (fi.Directory.Exists == false) + fi.Directory.Create(); + + + + if (mreResetOK && mre.WaitOne(1000) == false) + { + mreResetOK = false; + return false; + } + else + { + bool retval = false; + mreResetOK = mre.Reset(); + try + { + var url = $"http://{this.IP}/liveimage.jpg"; + var data = UTIL.DownloadImagefromUrl(url); + using (var ms = new System.IO.MemoryStream(data)) + { + using (var oimg = Image.FromStream(ms)) + oimg.Save(fi.FullName); + } + retval = true; + } + catch (Exception ex) + { + + } + if (mreResetOK) + mre.Set(); + return retval; + } + } + + public bool UpdateKeyenceImage(ref System.Windows.Forms.PictureBox pic) + { + bool retval = false; + if (readimage) + { + PUB.log.AddAT("Keyence is receiving image, command not processed"); + } + else + { + readimage = true; + var oimg = pic.Image; + + var newimage = GetImage(); + + pic.Image = newimage; + retval = newimage != null; + if (oimg != null) oimg.Dispose(); + + } + readimage = false; + return retval; + } + } +} diff --git a/Handler/Project/Device/SATOPrinter.cs b/Handler/Project/Device/SATOPrinter.cs new file mode 100644 index 0000000..ad3db20 --- /dev/null +++ b/Handler/Project/Device/SATOPrinter.cs @@ -0,0 +1,127 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Device +{ + public class SATOPrinter : arDev.RS232 + { + public string LastPrintZPL = string.Empty; + public string qrData = string.Empty; + public string ZPLFileName { get; set; } = UTIL.MakePath("data","zpl.txt"); + public string baseZPL + { + get + { + var fi = new System.IO.FileInfo(ZPLFileName); + if (fi.Exists == false || fi.Length == 0) + { + PUB.log.AddE($"{ZPLFileName} does not exist or has no data. Changed to default zpl.txt"); + fi = new System.IO.FileInfo( UTIL.MakePath("data", "zpl.txt")); + if (fi.Exists == false) PUB.log.AddE("Print template file (zpl.txt) does not exist"); + } + if (fi.Exists && fi.Length > 1) + return System.IO.File.ReadAllText(fi.FullName, System.Text.Encoding.Default); + else + { + PUB.log.AddAT("No ZPL file found, using ZPL code from settings"); + return string.Empty; + } + + } + } + + public SATOPrinter() + { + //this.baseZPL = Properties.Settings.Default.ZPL7; + this.Terminal = eTerminal.CR; + this.ReceiveData += SATOPrinter_ReceiveData; + this.ReceiveData_Raw += SATOPrinter_ReceiveData_Raw; + } + + private void SATOPrinter_ReceiveData_Raw(object sender, ReceiveDataEventArgs e) + { + PUB.log.Add($"SATO Recv(RAW) : " + e.StrValue); + } + + private void SATOPrinter_ReceiveData(object sender, ReceiveDataEventArgs e) + { + PUB.log.Add($"SATO Recv : " + e.StrValue); + } + + public Boolean TestPrint(Boolean drawbox, string manu = "", string mfgdate = "") + { + var dtstr = DateTime.Now.ToShortDateString(); + var printcode = "103077807;Z577603504;105-35282-1105;15000;RC00004A219001W;20210612"; + var reel = new Class.Reel(printcode); + //reel.id = "RLID" + DateTime.Now.ToString("MMHHmmssfff"); + reel.SID = "103000000"; + reel.PartNo = "PARTNO".PadRight(20, '0'); //20자리 + + if (mfgdate == "") reel.mfg = dtstr; + else reel.mfg = mfgdate; + + reel.venderLot = "LOT000000000"; + if (manu == "") reel.venderName = "ATK4EET1"; + else reel.venderName = manu; + + reel.qty = 15000; + var rlt = Print(reel, true, drawbox); + var fi = new System.IO.FileInfo(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_zpl.txt")); + System.IO.File.WriteAllText(fi.FullName, LastPrintZPL, System.Text.Encoding.Default); + return rlt; + } + + + public Boolean Print(Class.Reel reel, Boolean display1drid, Boolean drawOUtBox) + { + string prtData; + prtData = makeZPL_210908(reel, drawOUtBox, out qrData); + + return Print(prtData); + } + + public bool Print(string _zpl) + { + this.LastPrintZPL = _zpl; + if (this.IsOpen() == false) return false; + + try + { + this.Write(_zpl); + return true; + } + catch (Exception ex) + { + return false; + } + } + + public string makeZPL_210908(Class.Reel reel, Boolean drawbox, out string qrData) + { + string m_strSend = string.Empty; + qrData = string.Format("{0};{1};{2};{3};{4};{5};{6}", reel.SID, reel.venderLot, reel.venderName, reel.qty, reel.id, reel.mfg, reel.PartNo); + + var reeid = reel.id; + if (reeid.Length > 20) + reeid = "..." + reeid.Substring(reeid.Length - 20); + + m_strSend = this.baseZPL; + m_strSend = m_strSend.Replace("{qrData}", qrData); + m_strSend = m_strSend.Replace("{sid}", reel.SID); + m_strSend = m_strSend.Replace("{lot}", reel.venderLot); + m_strSend = m_strSend.Replace("{partnum}", reel.PartNo); + m_strSend = m_strSend.Replace("{rid}", reeid); + m_strSend = m_strSend.Replace("{qty}", reel.qty.ToString()); + m_strSend = m_strSend.Replace("{mfg}", reel.mfg); + m_strSend = m_strSend.Replace("{supply}", reel.venderName); + + //줄바꿈제거 + m_strSend = m_strSend.Replace("\r", "").Replace("\n", ""); + return m_strSend; + } + } +} \ No newline at end of file diff --git a/Handler/Project/Device/SATOPrinterAPI.cs b/Handler/Project/Device/SATOPrinterAPI.cs new file mode 100644 index 0000000..2078131 --- /dev/null +++ b/Handler/Project/Device/SATOPrinterAPI.cs @@ -0,0 +1,307 @@ +using AR; +using arCtl; +using SATOPrinterAPI; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Device +{ + public class SATOPrinterAPI : IDisposable + { + private bool disposed = false; + Printer SATOPrinter = null; + public string LastPrintZPL = string.Empty; + public string qrData = string.Empty; + public string PortName { get; set; } + public int BaudRate { get; set; } + + public string ZPLFileName { get; set; } = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data", "zpl.txt"); + public string baseZPL + { + get + { + var fi = new System.IO.FileInfo(ZPLFileName); + if (fi.Exists == false || fi.Length == 0) + { + PUB.log.AddE($"{ZPLFileName} does not exist or has no data. Changed to default zpl.txt"); + fi = new System.IO.FileInfo(UTIL.MakePath("Data", "zpl.txt")); + if (fi.Exists == false) PUB.log.AddE("Print template file (zpl.txt) does not exist"); + } + if (fi.Exists && fi.Length > 1) + return System.IO.File.ReadAllText(fi.FullName, System.Text.Encoding.Default); + else + { + PUB.log.AddAT("No ZPL file found, using ZPL code from settings"); + return string.Empty; + } + + } + } + + public SATOPrinterAPI() + { + SATOPrinter = new Printer(); + SATOPrinter.Timeout = 2500; + SATOPrinter.Interface = Printer.InterfaceType.COM; + SATOPrinter.ByteAvailable += SATOPrinter_ByteAvailable; + } + + + bool _isopen = false; + public bool Open() + { + try + { + SATOPrinter.COMPort = this.PortName; + SATOPrinter.COMSetting.Baudrate = this.BaudRate; + SATOPrinter.Connect(); + _isopen = true; + return _isopen; + } + catch(Exception ex) { _isopen = false; return false; } + + } + private string ControlCharReplace(string data) + { + Dictionary chrList = ControlCharList(); + foreach (string key in chrList.Keys) + { + data = data.Replace(key, chrList[key].ToString()); + } + return data; + } + private Dictionary ControlCharList() + { + Dictionary ctr = new Dictionary(); + ctr.Add("[NUL]", '\u0000'); + ctr.Add("[SOH]", '\u0001'); + ctr.Add("[STX]", '\u0002'); + ctr.Add("[ETX]", '\u0003'); + ctr.Add("[EOT]", '\u0004'); + ctr.Add("[ENQ]", '\u0005'); + ctr.Add("[ACK]", '\u0006'); + ctr.Add("[BEL]", '\u0007'); + ctr.Add("[BS]", '\u0008'); + ctr.Add("[HT]", '\u0009'); + ctr.Add("[LF]", '\u000A'); + ctr.Add("[VT]", '\u000B'); + ctr.Add("[FF]", '\u000C'); + ctr.Add("[CR]", '\u000D'); + ctr.Add("[SO]", '\u000E'); + ctr.Add("[SI]", '\u000F'); + ctr.Add("[DLE]", '\u0010'); + ctr.Add("[DC1]", '\u0011'); + ctr.Add("[DC2]", '\u0012'); + ctr.Add("[DC3]", '\u0013'); + ctr.Add("[DC4]", '\u0014'); + ctr.Add("[NAK]", '\u0015'); + ctr.Add("[SYN]", '\u0016'); + ctr.Add("[ETB]", '\u0017'); + ctr.Add("[CAN]", '\u0018'); + ctr.Add("[EM]", '\u0019'); + ctr.Add("[SUB]", '\u001A'); + ctr.Add("[ESC]", '\u001B'); + ctr.Add("[FS]", '\u001C'); + ctr.Add("[GS]", '\u001D'); + ctr.Add("[RS]", '\u001E'); + ctr.Add("[US]", '\u001F'); + ctr.Add("[DEL]", '\u007F'); + return ctr; + } + + + private bool Query(string cmd, out string errmsg) + { + errmsg = string.Empty; + if (string.IsNullOrEmpty(cmd)) + { + errmsg = "No Command"; + return false; + } + + try + { + byte[] cmddata = Utils.StringToByteArray(ControlCharReplace(cmd)); + byte[] receiveData = SATOPrinter.Query(cmddata); + + if (receiveData != null) + { + errmsg = ControlCharConvert(Utils.ByteArrayToString(receiveData)); + } + return true; + } + catch (Exception ex) + { + errmsg = ex.Message; + return false; + } + + } + private string ControlCharConvert(string data) + { + Dictionary chrList = ControlCharList().ToDictionary(x => x.Value, x => x.Key); + foreach (char key in chrList.Keys) + { + data = data.Replace(key.ToString(), chrList[key]); + } + return data; + } + + + ~SATOPrinterAPI() + { + Dispose(disposing: false); + } + public void Dispose() + { + Dispose(disposing: true); + // This object will be cleaned up by the Dispose method. + // Therefore, you should call GC.SuppressFinalize to + // take this object off the finalization queue + // and prevent finalization code for this object + // from executing a second time. + GC.SuppressFinalize(this); + } + protected virtual void Dispose(bool disposing) + { + // Check to see if Dispose has already been called. + if (!this.disposed) + { + // If disposing equals true, dispose all managed + // and unmanaged resources. + if (disposing) + { + // Dispose managed resources. + //component.Dispose(); + + } + SATOPrinter.Disconnect(); + // Note disposing has been done. + disposed = true; + } + } + + public bool IsOpen + { + get + { + + if (_isopen == false || SATOPrinter == null) return false; + try + { + return true;// return SATOPrinter.IsBusy; + //var prn = this.SATOPrinter.GetPrinterStatus(); + //return prn.IsOnline; + } + catch { return false; } + + } + } + private void SATOPrinter_ByteAvailable(object sender, Printer.ByteAvailableEventArgs e) + { + byte[] rawData = e.Data; + var msg = Utils.ByteArrayToString(rawData);// System.Text.Encoding.Default.GetString(rawData); + PUB.log.Add($"SATO Recv : " + msg); + } + + + // private void SATOPrinter_ReceiveData_Raw(object sender, ReceiveDataEventArgs e) + //{ + // PUB.log.Add($"SATO Recv(RAW) : " + e.StrValue); + //} + + //private void SATOPrinter_ReceiveData(object sender, ReceiveDataEventArgs e) + //{ + // PUB.log.Add($"SATO Recv : " + e.StrValue); + //} + + public (Boolean result, string errmessage) TestPrint(Boolean drawbox, string manu = "", string mfgdate = "") + { + var dtstr = DateTime.Now.ToShortDateString(); + var printcode = "103077807;Z577603504;105-35282-1105;15000;RC00004A219001W;20210612"; + var reel = new Class.Reel(printcode); + //reel.id = "RLID" + DateTime.Now.ToString("MMHHmmssfff"); + reel.SID = "103000000"; + reel.PartNo = "PARTNO".PadRight(20, '0'); //20자리 + + if (mfgdate == "") reel.mfg = dtstr; + else reel.mfg = mfgdate; + + reel.venderLot = "LOT000000000"; + if (manu == "") reel.venderName = "ATK4EET1"; + else reel.venderName = manu; + + reel.qty = 15000; + var rlt = Print(reel, true, drawbox); + var fi = new System.IO.FileInfo(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_zpl.txt")); + System.IO.File.WriteAllText(fi.FullName, LastPrintZPL, System.Text.Encoding.Default); + return rlt; + } + + + public (Boolean result, string errmessage) Print(Class.Reel reel, Boolean display1drid, Boolean drawOUtBox) + { + string prtData; + prtData = makeZPL_210908(reel, drawOUtBox, out qrData); + + return Print(prtData); + } + + public (Boolean result, string errmessage) Print(string _zpl) + { + this.LastPrintZPL = _zpl; + try + { + byte[] cmddata = Utils.StringToByteArray(ControlCharReplace(_zpl)); + SATOPrinter.Send(cmddata); + return (true,""); + } + catch (Exception ex) + { + return (false,ex.Message); + } + } + + public string makeZPL_210908(Class.Reel reel, Boolean drawbox, out string qrData) + { + string m_strSend = string.Empty; + + if(reel.PartNo.isEmpty()) + qrData = string.Format("{0};{1};{2};{3};{4};{5}", reel.SID, reel.venderLot, reel.venderName, reel.qty, reel.id, reel.mfg); + else + qrData = string.Format("{0};{1};{2};{3};{4};{5};{6}", reel.SID, reel.venderLot, reel.venderName, reel.qty, reel.id, reel.mfg, reel.PartNo); + + var reeid = reel.id; + if (reeid.Length > 20) + reeid = "..." + reeid.Substring(reeid.Length - 20); + + m_strSend = this.baseZPL; + m_strSend = m_strSend.Replace("{qrdata}", qrData); + m_strSend = m_strSend.Replace("{sid}", reel.SID); + m_strSend = m_strSend.Replace("{lot}", reel.venderLot); + m_strSend = m_strSend.Replace("{partnum}", reel.PartNo); + m_strSend = m_strSend.Replace("{rid}", reeid); + m_strSend = m_strSend.Replace("{qty}", reel.qty.ToString()); + m_strSend = m_strSend.Replace("{mfg}", reel.mfg); + + var supply1 = reel.venderName; + string supply2 = ""; + if (supply1.Length > 30) + { + supply2 = supply1.Substring(30); + supply1 = supply1.Substring(0, 30); + } + + m_strSend = m_strSend.Replace("{supply}", supply1); + m_strSend = m_strSend.Replace("{supply2}", supply2); + + //줄바꿈제거 + m_strSend = m_strSend.Replace("\r", "").Replace("\n", ""); + return m_strSend; + } + } +} \ No newline at end of file diff --git a/Handler/Project/Device/StateMachine.cs b/Handler/Project/Device/StateMachine.cs new file mode 100644 index 0000000..45c1ce2 --- /dev/null +++ b/Handler/Project/Device/StateMachine.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Device +{ + public class CSequence : AR.StateMachineSequence + { + public CSequence(int stepLen = 255) : base(stepLen) { } + + public void Clear(eSMStep idx) + { + base.Clear((int)idx); + } + public int Get(eSMStep idx) + { + return base.Get((int)idx); + } + + public void Set(eSMStep idx, byte value) + { + base.Set((int)idx, value); + } + + + public void Update(eSMStep idx, int incValue = 1) + { + base.Update((int)idx, incValue); + } + public TimeSpan GetTime(eSMStep idx = 0) + { + return base.GetTime((int)idx); + } + public int GetData(eSMStep idx) + { + return base.GetData((int)idx); + } + public void ClearData(eSMStep idx) { base.ClearData((int)idx); } + public void AddData(eSMStep idx, byte value = 1) + { + base.AddData((int)idx, value); + } + public void SetData(eSMStep idx, byte value) + { + _runseqdata[(int)idx] = value; + } + + public void UpdateTime(eSMStep idx) + { + _runseqtime[(int)idx] = DateTime.Now; + } + } + + public class CStateMachine : AR.StateMachine + { + /// + /// Sequece Value / data + /// + public CSequence seq; + public eSMStep PrePauseStep = eSMStep.NOTSET; + public CStateMachine() + { + seq = new CSequence(255); + } + + public new eSMStep Step { get { return (eSMStep)base.Step; } } + public void SetNewStep(eSMStep newstep_, Boolean force = false) + { + //일시중지라면 중지전의 상태를 백업한다 + if (newstep_ == eSMStep.PAUSE && this.Step != eSMStep.PAUSE && this.Step != eSMStep.WAITSTART) PrePauseStep = this.Step; + base.SetNewStep((byte)newstep_, force); + } + + public new eSMStep getNewStep + { + get + { + return (eSMStep)newstep_; + } + } + public new eSMStep getOldStep + { + get + { + return (eSMStep)oldstep_; + } + } + } +} diff --git a/Handler/Project/Device/TowerLamp.cs b/Handler/Project/Device/TowerLamp.cs new file mode 100644 index 0000000..f7ca364 --- /dev/null +++ b/Handler/Project/Device/TowerLamp.cs @@ -0,0 +1,154 @@ +//#define OLD + +using Project; +using Project.Device; +using System; + +#if OLD +using static Project.StateMachine; +#endif + +/// +/// 타워램프조작 +/// +public static class TowerLamp +{ + static bool enable = true; +#if OLD + static arDev.AzinAxt.DIO DIO = null; +#else + static arDev.DIO.IDIO DIO = null; +#endif + static int R = -1; + static int G = -1; + static int Y = -1; + static DateTime updatetime = DateTime.Now; + + /// + /// 타워램프 사용여부 false 가 입력되면 모든 램프가 꺼집니다 + /// + public static Boolean Enable + { + get { return enable; } + set + { + enable = value; + if (enable == false) + { + RED = false; + YEL = false; + GRN = false; + } + } + } + + /// + /// 갱신주기 250ms 기본설정 + /// + public static int UpdateInterval = 250; + +#if OLD + + public static void Init(arDev.AzinAxt.DIO dio_, int R_, int G_, int Y_) +#else + public static void Init(arDev.DIO.IDIO dio_, int R_, int G_, int Y_) +#endif + + + { + DIO = dio_; + R = R_; + G = G_; + Y = Y_; + } + public static void Update(eSMStep Step) + { + if (Enable == false) return; + if (DIO == null) return; ;// throw new Exception("DIO가 설정되지 않았습니다. Init 함수를 호출 하세요"); + + var ts = DateTime.Now - updatetime; + if (ts.TotalMilliseconds < UpdateInterval) return; + + if (Step == eSMStep.RUN) //동작중에는 녹색을 점등 + { + if (GRN == false) GRN = true; + if (RED == true) RED = false; + if (YEL == true) YEL = false; + } + else if (Step < eSMStep.IDLE || Step.ToString().StartsWith("HOME")) //초기화관련 + { + GRN = false; + var cur = YEL; + RED = !cur; + YEL = !cur; + } + else if (Step == eSMStep.FINISH) //작업종료 + { + var cur = GRN; + GRN = !cur; + YEL = !cur; + RED = false; + } + else if (Step == eSMStep.WAITSTART) //사용자대기 + { + var cur = YEL; + YEL = !cur; + GRN = false; + RED = false; + } + else if (Step == eSMStep.ERROR || Step == eSMStep.EMERGENCY) + { + RED = !RED; + YEL = false; + GRN = false; + } + else if (Step == eSMStep.PAUSE) + { + if (RED == false) RED = true; + if (YEL == true) YEL = false; + if (GRN == true) GRN = false; + } + else + { + //나머지 모든 상황은 대기로 한다 + if (YEL == false) YEL = true; + if (GRN == true) GRN = false; + if (RED == true) RED = false; + } + } + + + static void SetLamp(int port, bool value) + { + if (DIO == null || !DIO.IsInit || port < 0) return; + DIO.SetOutput(port, value); + } + static bool GetLamp(int port) + { + if (DIO == null || !DIO.IsInit || port < 0) return false; +#if OLD + return DIO.OUTPUT(port); +#else + return DIO.GetDOValue(port); +#endif + } + + public static Boolean GRN + { + get { return GetLamp(G); } + set { SetLamp(G, value); } + } + public static Boolean YEL + { + get { return GetLamp(Y); } + set { SetLamp(Y, value); } + } + public static Boolean RED + { + get { return GetLamp(R); } + set { SetLamp(R, value); } + } +} + +//230619 chi PAUSE 상태추가 => RED ON +// 전처리추가 \ No newline at end of file diff --git a/Handler/Project/Device/_CONNECTION.cs b/Handler/Project/Device/_CONNECTION.cs new file mode 100644 index 0000000..e9aa69b --- /dev/null +++ b/Handler/Project/Device/_CONNECTION.cs @@ -0,0 +1,357 @@ +using AR; +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Net; +using System.Runtime.InteropServices; +using System.Text; +using System.Windows.Forms; +using UIControl; + +namespace Project +{ + public partial class FMain : Form + { + DateTime CameraConTimeL = DateTime.Now; + DateTime CameraConTimeR = DateTime.Now; + DateTime BarcodeConTime = DateTime.Now; + DateTime KeyenceConTimeF = DateTime.Now; + DateTime KeyenceConTimeR = DateTime.Now; + DateTime PrintLConTime = DateTime.Now; + DateTime PrintRConTime = DateTime.Now; + DateTime swPLCConTime = DateTime.Now; + Boolean bRunConnection = true; + + + void bwDeviceConnection() + { + while (bRunConnection && this.Disposing == false && this.Disposing == false) + { + //초기혹은 파괴상태는 처리안함 + if (PUB.keyenceF != null && PUB.keyenceF.disposed && + PUB.keyenceR != null && PUB.keyenceR.disposed) + { + System.Threading.Thread.Sleep(1000); + continue; + } + + if (ConnectSeq == 0) //키엔스 + { + var tscam = DateTime.Now - KeyenceConTimeF; + if (tscam.TotalSeconds > 5 && PUB.flag.get(eVarBool.FG_KEYENCE_OFFF) == false) + { + if (AR.SETTING.Data.Keyence_IPF.isEmpty() == false) + { + if (PUB.keyenceF != null && PUB.keyenceF.IsConnect == false) + { + PUB.keyenceF.Connect(); + KeyenceConTimeF = DateTime.Now; + } + else + { + //연결이 되어있다면 상태값을 요청한다 + KeyenceConTimeF = DateTime.Now.AddSeconds(-4); + } + } + else KeyenceConTimeF = DateTime.Now.AddSeconds(-4); + } + ConnectSeq += 1; + } + else if (ConnectSeq == 1) //키엔스 + { + var tscam = DateTime.Now - KeyenceConTimeR; + if (tscam.TotalSeconds > 5 && PUB.flag.get(eVarBool.FG_KEYENCE_OFFR) == false) + { + if (AR.SETTING.Data.Keyence_IPR.isEmpty() == false) + { + if (PUB.keyenceR != null && PUB.keyenceR.IsConnect == false) + { + PUB.keyenceR.Connect(); + KeyenceConTimeR = DateTime.Now; + } + else + { + //연결이 되어있다면 상태값을 요청한다 + KeyenceConTimeR = DateTime.Now.AddSeconds(-4); + } + } + else KeyenceConTimeR = DateTime.Now.AddSeconds(-4); + } + ConnectSeq += 1; + } + else if (ConnectSeq == 2) //카메라(왼) + { + var tscam = DateTime.Now - CameraConTimeL; + if (tscam.TotalSeconds > 7) + { + //if (COMM.SETTING.Data.EnableExtVision) + if (PUB.wsL == null || PUB.wsL.Connected == false) + { + if (AR.SETTING.Data.Log_CameraConn) + PUB.log.Add($"Camera(L) connection attempt ({AR.SETTING.Data.HostIPL}:{AR.SETTING.Data.HostPortL})"); + if (PUB.wsL != null) + { + DetachCameraEventL(); //이벤트 종료 + PUB.wsL.Dispose(); + } + + PUB.wsL = new WatsonWebsocket.WatsonWsClient(AR.SETTING.Data.HostIPL, AR.SETTING.Data.HostPortL, false); + AttachCameraEventL(); + try + { + PUB.wsL.StartWithTimeout(); + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); //220214 + } + + CameraConTimeL = DateTime.Now; + } + else + { + //연결이 되어있다면 상태값을 요청한다 + //if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_L) == false) + { + //마지막 수신시간으로 부터 5초가 지나면 전송한다 + //var tsRecv = DateTime.Now - lastRecvWSL; + //if (tsRecv.TotalSeconds >= 15) + //{ + // PUB.wsL.Dispose(); + //} + //else if (tsRecv.TotalSeconds >= 5) + { + WS_Send(eWorkPort.Left, PUB.wsL, string.Empty, "STATUS", ""); + } + CameraConTimeL = DateTime.Now.AddSeconds(-4); + } + } + } + ConnectSeq += 1; + } + else if (ConnectSeq == 3) //카메라(우) + { + var tscam = DateTime.Now - CameraConTimeR; + if (tscam.TotalSeconds > 7) + { + //if (COMM.SETTING.Data.EnableExtVision) + if (PUB.wsR == null || PUB.wsR.Connected == false) + { + if (AR.SETTING.Data.Log_CameraConn) + PUB.log.Add($"Camera(R) connection attempt ({AR.SETTING.Data.HostIPR}:{AR.SETTING.Data.HostPortR})"); + if (PUB.wsR != null) + { + DetachCameraEventR(); //이벤트 종료 + PUB.wsR.Dispose(); + } + + PUB.wsR = new WatsonWebsocket.WatsonWsClient(AR.SETTING.Data.HostIPR, AR.SETTING.Data.HostPortR, false); + AttachCameraEventR(); + + try + { + PUB.wsR.Start(); + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); //220214 + } + + + CameraConTimeR = DateTime.Now; + } + else + { + //연결이 되어있다면 상태값을 요청한다 + //if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_R) == false) + { + //마지막 수신시간으로 부터 5초가 지나면 전송한다 + //var tsRecv = DateTime.Now - lastRecvWSR; + //if (tsRecv.TotalSeconds >= 15) + //{ + // PUB.wsR.Dispose(); + //} + //else if (tsRecv.TotalSeconds >= 5) + { + WS_Send(eWorkPort.Right, PUB.wsR, string.Empty, "STATUS", ""); + } + CameraConTimeR = DateTime.Now.AddSeconds(-4); + + + + + } + } + } + ConnectSeq += 1; + } + else if (ConnectSeq == 4) //바코드연결 + { + var tscam = DateTime.Now - BarcodeConTime; + if (tscam.TotalSeconds > 5) + { + if (AR.SETTING.Data.Barcode_Port.isEmpty() == false) + { + if (PUB.BarcodeFix == null || PUB.BarcodeFix.IsOpen() == false) + { + PUB.BarcodeFix.PortName = AR.SETTING.Data.Barcode_Port; + PUB.BarcodeFix.BaudRate = AR.SETTING.Data.Barcode_Baud; + PUB.BarcodeFix.Open(); + BarcodeConTime = DateTime.Now; + } + else + { + //연결이 되어있다면 상태값을 요청한다 + BarcodeConTime = DateTime.Now.AddSeconds(-4); + } + } + else BarcodeConTime = DateTime.Now.AddSeconds(-4); + } + ConnectSeq += 1; + } + else if (ConnectSeq == 5) //프린터(좌) + { + var tscam = DateTime.Now - PrintLConTime; + if (tscam.TotalSeconds > 5) + { + if (AR.SETTING.Data.PrintL_Port.isEmpty() == false) + { + if (PUB.PrinterL == null || PUB.PrinterL.IsOpen == false) + { + try + { + PUB.PrinterL.PortName = AR.SETTING.Data.PrintL_Port; + PUB.PrinterL.BaudRate = AR.SETTING.Data.PrintL_Baud; + PUB.PrinterL.Open(); + PrintLConTime = DateTime.Now; + } + catch (Exception ex) + { + PUB.log.AddE($"Printer(L) {ex.Message}"); + } + } + else + { + //연결이 되어있다면 상태값을 요청한다 + PrintLConTime = DateTime.Now.AddSeconds(-4); + } + } + else PrintLConTime = DateTime.Now.AddSeconds(-4); + } + ConnectSeq += 1; + } + else if (ConnectSeq == 6) //프린터(우) + { + var tscam = DateTime.Now - PrintRConTime; + if (tscam.TotalSeconds > 5) + { + if (AR.SETTING.Data.PrintR_Port.isEmpty() == false) + { + if (PUB.PrinterR == null || PUB.PrinterR.IsOpen == false) + { + try + { + PUB.PrinterR.PortName = AR.SETTING.Data.PrintR_Port; + PUB.PrinterR.BaudRate = AR.SETTING.Data.PrintR_Baud; + PUB.PrinterR.Open(); + PrintRConTime = DateTime.Now; + } + catch (Exception ex) { + PUB.log.AddE($"Printer(R) {ex.Message}"); + } + } + else + { + //연결이 되어있다면 상태값을 요청한다 + PrintRConTime = DateTime.Now.AddSeconds(-4); + } + } + else PrintRConTime = DateTime.Now.AddSeconds(-4); + } + ConnectSeq = 7; + } + else if (ConnectSeq == 7) //swPLC 230725 + { + var tscam = DateTime.Now - swPLCConTime; + if (tscam.TotalSeconds > 5) + { + if (PUB.plc != null && PUB.plc.Init == false) + { + PUB.plc.Start(); + } + swPLCConTime = DateTime.Now; + } + ConnectSeq = 0; + } + System.Threading.Thread.Sleep(2000); + + } + Console.WriteLine("Close : bwDeviceConnection"); + } + + + public string PostFromUrl(string url, string jsonStr, out Boolean isError, string authid = "", string authpw = "", int _timeout = 0) + { + isError = false; + string result = ""; + try + { + var timeout = 1000; + //RaiseMessage(false, "POST : " + url); + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); + if (_timeout == 0) + { + request.Timeout = timeout; + request.ReadWriteTimeout = timeout; + } + else + { + request.Timeout = _timeout; + request.ReadWriteTimeout = _timeout; + } + + + if (string.IsNullOrEmpty(authid) == false && string.IsNullOrEmpty(authpw) == false) + { + string authInfo = $"{authid}:{authpw}"; + authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); + request.Headers["Authorization"] = "Basic " + authInfo; + } + + request.Method = "POST"; + request.ContentType = "application/json"; + request.ContentLength = jsonStr.Length; + request.MaximumAutomaticRedirections = 4; + request.MaximumResponseHeadersLength = 4; + request.Credentials = CredentialCache.DefaultCredentials; + + using (StreamWriter sw = new StreamWriter(request.GetRequestStream())) + { + sw.Write(jsonStr); + sw.Flush(); + sw.Close(); + + var response = request.GetResponse() as HttpWebResponse; + using (var txtReader = new StreamReader(response.GetResponseStream())) + { + result = txtReader.ReadToEnd(); + } + } + + // LastQueryBUF = result; + //LastQueryURL = url; + //RaiseRawMessage(url, "RESULT\n" + result); //181026 - show data + } + catch (WebException wex) + { + isError = true; + result = wex.ToString();// new StreamReader(wex.Response.GetResponseStream()).ReadToEnd(); + //RaiseMessage(true, "POST-ERROR\n" + result); + } + + return result; + } + } +} diff --git a/Handler/Project/Dialog/DIOMonitor.Designer.cs b/Handler/Project/Dialog/DIOMonitor.Designer.cs new file mode 100644 index 0000000..a5d7caf --- /dev/null +++ b/Handler/Project/Dialog/DIOMonitor.Designer.cs @@ -0,0 +1,1746 @@ +namespace Project.Dialog +{ + partial class fIOMonitor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + arDev.AjinEXTEK.UI.ColorListItem colorListItem1 = new arDev.AjinEXTEK.UI.ColorListItem(); + arDev.AjinEXTEK.UI.ColorListItem colorListItem2 = new arDev.AjinEXTEK.UI.ColorListItem(); + arDev.AjinEXTEK.UI.ColorListItem colorListItem3 = new arDev.AjinEXTEK.UI.ColorListItem(); + arDev.AjinEXTEK.UI.ColorListItem colorListItem4 = new arDev.AjinEXTEK.UI.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem5 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem6 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem7 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem8 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem9 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem10 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem11 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem12 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem13 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem14 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem15 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem16 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem17 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem18 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem19 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem20 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem21 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem22 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem23 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem24 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem25 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem26 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem27 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem28 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem29 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem30 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem31 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem32 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem33 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem34 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem35 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem36 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem37 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem38 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem39 = new arCtl.GridView.ColorListItem(); + arCtl.GridView.ColorListItem colorListItem40 = new arCtl.GridView.ColorListItem(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tblDI = new arDev.AjinEXTEK.UI.IOPanel(); + this.lbTitle1 = new arCtl.arLabel(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.panel6 = new System.Windows.Forms.Panel(); + this.tblDO = new arDev.AjinEXTEK.UI.IOPanel(); + this.arLabel2 = new arCtl.arLabel(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.gbi01 = new arCtl.GridView.GridView(); + this.lbi01 = new System.Windows.Forms.Label(); + this.panel8 = new System.Windows.Forms.Panel(); + this.gbi02 = new arCtl.GridView.GridView(); + this.lbi02 = new System.Windows.Forms.Label(); + this.panel11 = new System.Windows.Forms.Panel(); + this.gbi00 = new arCtl.GridView.GridView(); + this.lbi00 = new System.Windows.Forms.Label(); + this.panel7 = new System.Windows.Forms.Panel(); + this.gbi04 = new arCtl.GridView.GridView(); + this.lbi04 = new System.Windows.Forms.Label(); + this.panel10 = new System.Windows.Forms.Panel(); + this.gbi03 = new arCtl.GridView.GridView(); + this.lbi03 = new System.Windows.Forms.Label(); + this.panel12 = new System.Windows.Forms.Panel(); + this.gbi06 = new arCtl.GridView.GridView(); + this.lbi06 = new System.Windows.Forms.Label(); + this.panel13 = new System.Windows.Forms.Panel(); + this.gbi07 = new arCtl.GridView.GridView(); + this.lbi07 = new System.Windows.Forms.Label(); + this.panel14 = new System.Windows.Forms.Panel(); + this.gbi08 = new arCtl.GridView.GridView(); + this.lbi08 = new System.Windows.Forms.Label(); + this.panel17 = new System.Windows.Forms.Panel(); + this.gbi11 = new arCtl.GridView.GridView(); + this.lbi11 = new System.Windows.Forms.Label(); + this.panel18 = new System.Windows.Forms.Panel(); + this.gbi10 = new arCtl.GridView.GridView(); + this.lbi10 = new System.Windows.Forms.Label(); + this.panel19 = new System.Windows.Forms.Panel(); + this.gbi09 = new arCtl.GridView.GridView(); + this.lbi09 = new System.Windows.Forms.Label(); + this.panel20 = new System.Windows.Forms.Panel(); + this.gbi12 = new arCtl.GridView.GridView(); + this.lbi12 = new System.Windows.Forms.Label(); + this.panel21 = new System.Windows.Forms.Panel(); + this.gbi13 = new arCtl.GridView.GridView(); + this.lbi13 = new System.Windows.Forms.Label(); + this.panel22 = new System.Windows.Forms.Panel(); + this.gbi14 = new arCtl.GridView.GridView(); + this.lbi14 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.gbi05 = new arCtl.GridView.GridView(); + this.lbi05 = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); + this.gbi15 = new arCtl.GridView.GridView(); + this.lbi15 = new System.Windows.Forms.Label(); + this.panel15 = new System.Windows.Forms.Panel(); + this.gbi16 = new arCtl.GridView.GridView(); + this.lbi16 = new System.Windows.Forms.Label(); + this.panel24 = new System.Windows.Forms.Panel(); + this.gbi17 = new arCtl.GridView.GridView(); + this.lbi17 = new System.Windows.Forms.Label(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.pinDefineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.tabPage4.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.panel6.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel13.SuspendLayout(); + this.panel14.SuspendLayout(); + this.panel17.SuspendLayout(); + this.panel18.SuspendLayout(); + this.panel19.SuspendLayout(); + this.panel20.SuspendLayout(); + this.panel21.SuspendLayout(); + this.panel22.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel15.SuspendLayout(); + this.panel24.SuspendLayout(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // panel3 + // + this.panel3.Dock = System.Windows.Forms.DockStyle.Right; + this.panel3.Location = new System.Drawing.Point(927, 0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(300, 748); + this.panel3.TabIndex = 1; + // + // tabControl1 + // + this.tabControl1.Alignment = System.Windows.Forms.TabAlignment.Left; + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage4); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Multiline = true; + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(927, 748); + this.tabControl1.TabIndex = 2; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.tableLayoutPanel1); + this.tabPage1.Location = new System.Drawing.Point(25, 4); + this.tabPage1.Margin = new System.Windows.Forms.Padding(0); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Size = new System.Drawing.Size(898, 740); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "IN"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(898, 740); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.Controls.Add(this.tblDI); + this.panel2.Controls.Add(this.lbTitle1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(898, 740); + this.panel2.TabIndex = 1; + // + // tblDI + // + this.tblDI.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tblDI.BorderSize = 0; + colorListItem1.BackColor1 = System.Drawing.Color.DimGray; + colorListItem1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + colorListItem1.Remark = "OFF"; + colorListItem2.BackColor1 = System.Drawing.Color.Lime; + colorListItem2.BackColor2 = System.Drawing.Color.Green; + colorListItem2.Remark = "ON"; + this.tblDI.ColorList = new arDev.AjinEXTEK.UI.ColorListItem[] { + colorListItem1, + colorListItem2}; + this.tblDI.ContextMenuStrip = this.contextMenuStrip1; + this.tblDI.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblDI.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tblDI.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.tblDI.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.tblDI.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.tblDI.Location = new System.Drawing.Point(0, 23); + this.tblDI.MatrixSize = new System.Drawing.Point(4, 32); + this.tblDI.MenuBorderSize = 1; + this.tblDI.MenuGap = 5; + this.tblDI.MinimumSize = new System.Drawing.Size(100, 50); + this.tblDI.Name = "tblDI"; + this.tblDI.ShadowColor = System.Drawing.Color.Transparent; + this.tblDI.showDebugInfo = false; + this.tblDI.ShowPinName = true; + this.tblDI.Size = new System.Drawing.Size(898, 717); + this.tblDI.TabIndex = 3; + this.tblDI.Text = "ioPanel1"; + this.tblDI.TextAttachToImage = true; + // + // lbTitle1 + // + this.lbTitle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.lbTitle1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.lbTitle1.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbTitle1.BorderColor = System.Drawing.Color.Cyan; + this.lbTitle1.BorderColorOver = System.Drawing.Color.Cyan; + this.lbTitle1.BorderSize = new System.Windows.Forms.Padding(0, 0, 0, 4); + this.lbTitle1.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbTitle1.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbTitle1.Dock = System.Windows.Forms.DockStyle.Top; + this.lbTitle1.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbTitle1.ForeColor = System.Drawing.Color.White; + this.lbTitle1.GradientEnable = true; + this.lbTitle1.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.lbTitle1.GradientRepeatBG = false; + this.lbTitle1.isButton = false; + this.lbTitle1.Location = new System.Drawing.Point(0, 0); + this.lbTitle1.MouseDownColor = System.Drawing.Color.Yellow; + this.lbTitle1.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbTitle1.msg = null; + this.lbTitle1.Name = "lbTitle1"; + this.lbTitle1.ProgressBorderColor = System.Drawing.Color.Black; + this.lbTitle1.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbTitle1.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbTitle1.ProgressEnable = false; + this.lbTitle1.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbTitle1.ProgressForeColor = System.Drawing.Color.Black; + this.lbTitle1.ProgressMax = 100F; + this.lbTitle1.ProgressMin = 0F; + this.lbTitle1.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbTitle1.ProgressValue = 0F; + this.lbTitle1.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.lbTitle1.Sign = ""; + this.lbTitle1.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbTitle1.SignColor = System.Drawing.Color.SkyBlue; + this.lbTitle1.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbTitle1.Size = new System.Drawing.Size(898, 23); + this.lbTitle1.TabIndex = 0; + this.lbTitle1.Text = "Digital Input"; + this.lbTitle1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbTitle1.TextShadow = false; + this.lbTitle1.TextVisible = true; + this.lbTitle1.Click += new System.EventHandler(this.lbTitle1_Click); + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.tableLayoutPanel3); + this.tabPage4.Location = new System.Drawing.Point(22, 4); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Size = new System.Drawing.Size(901, 740); + this.tabPage4.TabIndex = 3; + this.tabPage4.Text = "OUT"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 1; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Controls.Add(this.panel6, 0, 0); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 1; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(901, 740); + this.tableLayoutPanel3.TabIndex = 1; + // + // panel6 + // + this.panel6.BackColor = System.Drawing.Color.White; + this.panel6.Controls.Add(this.tblDO); + this.panel6.Controls.Add(this.arLabel2); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.Location = new System.Drawing.Point(0, 0); + this.panel6.Margin = new System.Windows.Forms.Padding(0); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(901, 740); + this.panel6.TabIndex = 0; + // + // tblDO + // + this.tblDO.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tblDO.BorderSize = 0; + colorListItem3.BackColor1 = System.Drawing.Color.DimGray; + colorListItem3.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + colorListItem3.Remark = "OFF"; + colorListItem4.BackColor1 = System.Drawing.Color.Lime; + colorListItem4.BackColor2 = System.Drawing.Color.Green; + colorListItem4.Remark = "ON"; + this.tblDO.ColorList = new arDev.AjinEXTEK.UI.ColorListItem[] { + colorListItem3, + colorListItem4}; + this.tblDO.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblDO.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tblDO.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.tblDO.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.tblDO.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.tblDO.Location = new System.Drawing.Point(0, 23); + this.tblDO.MatrixSize = new System.Drawing.Point(4, 32); + this.tblDO.MenuBorderSize = 1; + this.tblDO.MenuGap = 5; + this.tblDO.MinimumSize = new System.Drawing.Size(100, 50); + this.tblDO.Name = "tblDO"; + this.tblDO.ShadowColor = System.Drawing.Color.Transparent; + this.tblDO.showDebugInfo = false; + this.tblDO.ShowPinName = true; + this.tblDO.Size = new System.Drawing.Size(901, 717); + this.tblDO.TabIndex = 4; + this.tblDO.Text = "ioPanel2"; + this.tblDO.TextAttachToImage = true; + // + // arLabel2 + // + this.arLabel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.arLabel2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.arLabel2.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel2.BorderColor = System.Drawing.Color.Tomato; + this.arLabel2.BorderColorOver = System.Drawing.Color.Tomato; + this.arLabel2.BorderSize = new System.Windows.Forms.Padding(0, 0, 0, 4); + this.arLabel2.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel2.Cursor = System.Windows.Forms.Cursors.Arrow; + this.arLabel2.Dock = System.Windows.Forms.DockStyle.Top; + this.arLabel2.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.arLabel2.ForeColor = System.Drawing.Color.White; + this.arLabel2.GradientEnable = true; + this.arLabel2.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel2.GradientRepeatBG = false; + this.arLabel2.isButton = false; + this.arLabel2.Location = new System.Drawing.Point(0, 0); + this.arLabel2.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel2.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel2.msg = null; + this.arLabel2.Name = "arLabel2"; + this.arLabel2.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel2.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel2.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel2.ProgressEnable = false; + this.arLabel2.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel2.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel2.ProgressMax = 100F; + this.arLabel2.ProgressMin = 0F; + this.arLabel2.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel2.ProgressValue = 0F; + this.arLabel2.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.arLabel2.Sign = ""; + this.arLabel2.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel2.SignColor = System.Drawing.Color.Yellow; + this.arLabel2.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel2.Size = new System.Drawing.Size(901, 23); + this.arLabel2.TabIndex = 1; + this.arLabel2.Text = "Digital Output"; + this.arLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel2.TextShadow = false; + this.arLabel2.TextVisible = true; + this.arLabel2.Click += new System.EventHandler(this.arLabel2_Click); + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.tableLayoutPanel2); + this.tabPage3.Location = new System.Drawing.Point(22, 4); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Size = new System.Drawing.Size(901, 740); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "I-LOCK"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + this.tableLayoutPanel2.ColumnCount = 3; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.Controls.Add(this.panel5, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.panel8, 2, 0); + this.tableLayoutPanel2.Controls.Add(this.panel11, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.panel7, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.panel10, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.panel12, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.panel13, 1, 2); + this.tableLayoutPanel2.Controls.Add(this.panel14, 2, 2); + this.tableLayoutPanel2.Controls.Add(this.panel17, 2, 3); + this.tableLayoutPanel2.Controls.Add(this.panel18, 1, 3); + this.tableLayoutPanel2.Controls.Add(this.panel19, 0, 3); + this.tableLayoutPanel2.Controls.Add(this.panel20, 0, 4); + this.tableLayoutPanel2.Controls.Add(this.panel21, 1, 4); + this.tableLayoutPanel2.Controls.Add(this.panel22, 2, 4); + this.tableLayoutPanel2.Controls.Add(this.panel1, 2, 1); + this.tableLayoutPanel2.Controls.Add(this.panel4, 0, 5); + this.tableLayoutPanel2.Controls.Add(this.panel15, 1, 5); + this.tableLayoutPanel2.Controls.Add(this.panel24, 2, 5); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 6; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(901, 740); + this.tableLayoutPanel2.TabIndex = 0; + // + // panel5 + // + this.panel5.Controls.Add(this.gbi01); + this.panel5.Controls.Add(this.lbi01); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.Location = new System.Drawing.Point(303, 3); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(294, 117); + this.panel5.TabIndex = 0; + // + // gbi01 + // + this.gbi01.arVeriticalDraw = false; + this.gbi01.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi01.BorderSize = 1; + colorListItem5.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem5.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem5.Remark = ""; + colorListItem6.BackColor1 = System.Drawing.Color.Orange; + colorListItem6.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem6.Remark = ""; + this.gbi01.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem5, + colorListItem6}; + this.gbi01.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi01.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi01.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi01.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi01.ForeColor = System.Drawing.Color.White; + this.gbi01.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi01.Location = new System.Drawing.Point(0, 14); + this.gbi01.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi01.MenuBorderSize = 1; + this.gbi01.MenuGap = 5; + this.gbi01.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi01.Name = "gbi01"; + this.gbi01.Names = null; + this.gbi01.ShadowColor = System.Drawing.Color.Black; + this.gbi01.showDebugInfo = false; + this.gbi01.ShowIndexString = true; + this.gbi01.ShowNameString = true; + this.gbi01.ShowValueString = false; + this.gbi01.Size = new System.Drawing.Size(294, 103); + this.gbi01.TabIndex = 3; + this.gbi01.Tag = "PKX"; + this.gbi01.Tags = null; + this.gbi01.Text = "gridView1"; + this.gbi01.TextAttachToImage = true; + this.gbi01.Titles = null; + this.gbi01.Values = null; + // + // lbi01 + // + this.lbi01.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi01.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi01.ForeColor = System.Drawing.Color.Cyan; + this.lbi01.Location = new System.Drawing.Point(0, 0); + this.lbi01.Name = "lbi01"; + this.lbi01.Size = new System.Drawing.Size(294, 14); + this.lbi01.TabIndex = 4; + this.lbi01.Text = "X-MIDDLE"; + this.lbi01.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel8 + // + this.panel8.Controls.Add(this.gbi02); + this.panel8.Controls.Add(this.lbi02); + this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel8.Location = new System.Drawing.Point(603, 3); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(295, 117); + this.panel8.TabIndex = 0; + // + // gbi02 + // + this.gbi02.arVeriticalDraw = false; + this.gbi02.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi02.BorderSize = 1; + colorListItem7.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem7.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem7.Remark = ""; + colorListItem8.BackColor1 = System.Drawing.Color.Orange; + colorListItem8.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem8.Remark = ""; + this.gbi02.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem7, + colorListItem8}; + this.gbi02.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi02.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi02.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi02.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi02.ForeColor = System.Drawing.Color.White; + this.gbi02.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi02.Location = new System.Drawing.Point(0, 16); + this.gbi02.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi02.MenuBorderSize = 1; + this.gbi02.MenuGap = 5; + this.gbi02.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi02.Name = "gbi02"; + this.gbi02.Names = null; + this.gbi02.ShadowColor = System.Drawing.Color.Black; + this.gbi02.showDebugInfo = false; + this.gbi02.ShowIndexString = true; + this.gbi02.ShowNameString = true; + this.gbi02.ShowValueString = false; + this.gbi02.Size = new System.Drawing.Size(295, 101); + this.gbi02.TabIndex = 3; + this.gbi02.Tag = "PKZ"; + this.gbi02.Tags = null; + this.gbi02.Text = "gridView1"; + this.gbi02.TextAttachToImage = true; + this.gbi02.Titles = null; + this.gbi02.Values = null; + // + // lbi02 + // + this.lbi02.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi02.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi02.ForeColor = System.Drawing.Color.Cyan; + this.lbi02.Location = new System.Drawing.Point(0, 0); + this.lbi02.Name = "lbi02"; + this.lbi02.Size = new System.Drawing.Size(295, 16); + this.lbi02.TabIndex = 4; + this.lbi02.Text = "X-FRONT"; + this.lbi02.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel11 + // + this.panel11.Controls.Add(this.gbi00); + this.panel11.Controls.Add(this.lbi00); + this.panel11.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel11.Location = new System.Drawing.Point(3, 3); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(294, 117); + this.panel11.TabIndex = 0; + // + // gbi00 + // + this.gbi00.arVeriticalDraw = false; + this.gbi00.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi00.BorderSize = 1; + colorListItem9.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem9.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem9.Remark = ""; + colorListItem10.BackColor1 = System.Drawing.Color.Orange; + colorListItem10.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem10.Remark = ""; + this.gbi00.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem9, + colorListItem10}; + this.gbi00.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi00.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi00.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi00.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi00.ForeColor = System.Drawing.Color.White; + this.gbi00.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi00.Location = new System.Drawing.Point(0, 16); + this.gbi00.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi00.MenuBorderSize = 1; + this.gbi00.MenuGap = 5; + this.gbi00.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi00.Name = "gbi00"; + this.gbi00.Names = null; + this.gbi00.ShadowColor = System.Drawing.Color.Black; + this.gbi00.showDebugInfo = false; + this.gbi00.ShowIndexString = true; + this.gbi00.ShowNameString = true; + this.gbi00.ShowValueString = false; + this.gbi00.Size = new System.Drawing.Size(294, 101); + this.gbi00.TabIndex = 3; + this.gbi00.Tag = "PKT"; + this.gbi00.Tags = null; + this.gbi00.Text = "gridView1"; + this.gbi00.TextAttachToImage = true; + this.gbi00.Titles = null; + this.gbi00.Values = null; + // + // lbi00 + // + this.lbi00.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi00.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi00.ForeColor = System.Drawing.Color.Cyan; + this.lbi00.Location = new System.Drawing.Point(0, 0); + this.lbi00.Name = "lbi00"; + this.lbi00.Size = new System.Drawing.Size(294, 16); + this.lbi00.TabIndex = 4; + this.lbi00.Text = "X-REAR"; + this.lbi00.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel7 + // + this.panel7.Controls.Add(this.gbi04); + this.panel7.Controls.Add(this.lbi04); + this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel7.Location = new System.Drawing.Point(303, 126); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(294, 117); + this.panel7.TabIndex = 0; + // + // gbi04 + // + this.gbi04.arVeriticalDraw = false; + this.gbi04.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi04.BorderSize = 1; + colorListItem11.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem11.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem11.Remark = ""; + colorListItem12.BackColor1 = System.Drawing.Color.Orange; + colorListItem12.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem12.Remark = ""; + this.gbi04.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem11, + colorListItem12}; + this.gbi04.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi04.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi04.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi04.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi04.ForeColor = System.Drawing.Color.White; + this.gbi04.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi04.Location = new System.Drawing.Point(0, 16); + this.gbi04.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi04.MenuBorderSize = 1; + this.gbi04.MenuGap = 5; + this.gbi04.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi04.Name = "gbi04"; + this.gbi04.Names = null; + this.gbi04.ShadowColor = System.Drawing.Color.Black; + this.gbi04.showDebugInfo = false; + this.gbi04.ShowIndexString = true; + this.gbi04.ShowNameString = true; + this.gbi04.ShowValueString = false; + this.gbi04.Size = new System.Drawing.Size(294, 101); + this.gbi04.TabIndex = 3; + this.gbi04.Tag = "PKZ"; + this.gbi04.Tags = null; + this.gbi04.Text = "gridView1"; + this.gbi04.TextAttachToImage = true; + this.gbi04.Titles = null; + this.gbi04.Values = null; + // + // lbi04 + // + this.lbi04.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi04.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi04.ForeColor = System.Drawing.Color.Yellow; + this.lbi04.Location = new System.Drawing.Point(0, 0); + this.lbi04.Name = "lbi04"; + this.lbi04.Size = new System.Drawing.Size(294, 16); + this.lbi04.TabIndex = 4; + this.lbi04.Text = "ELEVATOR2-R"; + this.lbi04.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel10 + // + this.panel10.Controls.Add(this.gbi03); + this.panel10.Controls.Add(this.lbi03); + this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel10.Location = new System.Drawing.Point(3, 126); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(294, 117); + this.panel10.TabIndex = 0; + // + // gbi03 + // + this.gbi03.arVeriticalDraw = false; + this.gbi03.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi03.BorderSize = 1; + colorListItem13.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem13.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem13.Remark = ""; + colorListItem14.BackColor1 = System.Drawing.Color.Orange; + colorListItem14.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem14.Remark = ""; + this.gbi03.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem13, + colorListItem14}; + this.gbi03.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi03.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi03.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi03.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi03.ForeColor = System.Drawing.Color.White; + this.gbi03.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi03.Location = new System.Drawing.Point(0, 16); + this.gbi03.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi03.MenuBorderSize = 1; + this.gbi03.MenuGap = 5; + this.gbi03.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi03.Name = "gbi03"; + this.gbi03.Names = null; + this.gbi03.ShadowColor = System.Drawing.Color.Black; + this.gbi03.showDebugInfo = false; + this.gbi03.ShowIndexString = true; + this.gbi03.ShowNameString = true; + this.gbi03.ShowValueString = false; + this.gbi03.Size = new System.Drawing.Size(294, 101); + this.gbi03.TabIndex = 3; + this.gbi03.Tag = "PKZ"; + this.gbi03.Tags = null; + this.gbi03.Text = "gridView1"; + this.gbi03.TextAttachToImage = true; + this.gbi03.Titles = null; + this.gbi03.Values = null; + // + // lbi03 + // + this.lbi03.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi03.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi03.ForeColor = System.Drawing.Color.Yellow; + this.lbi03.Location = new System.Drawing.Point(0, 0); + this.lbi03.Name = "lbi03"; + this.lbi03.Size = new System.Drawing.Size(294, 16); + this.lbi03.TabIndex = 4; + this.lbi03.Text = "ELEVATOR1-R"; + this.lbi03.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel12 + // + this.panel12.Controls.Add(this.gbi06); + this.panel12.Controls.Add(this.lbi06); + this.panel12.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel12.Location = new System.Drawing.Point(3, 249); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(294, 117); + this.panel12.TabIndex = 0; + // + // gbi06 + // + this.gbi06.arVeriticalDraw = false; + this.gbi06.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi06.BorderSize = 1; + colorListItem15.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem15.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem15.Remark = ""; + colorListItem16.BackColor1 = System.Drawing.Color.Orange; + colorListItem16.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem16.Remark = ""; + this.gbi06.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem15, + colorListItem16}; + this.gbi06.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi06.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi06.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi06.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi06.ForeColor = System.Drawing.Color.White; + this.gbi06.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi06.Location = new System.Drawing.Point(0, 16); + this.gbi06.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi06.MenuBorderSize = 1; + this.gbi06.MenuGap = 5; + this.gbi06.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi06.Name = "gbi06"; + this.gbi06.Names = null; + this.gbi06.ShadowColor = System.Drawing.Color.Black; + this.gbi06.showDebugInfo = false; + this.gbi06.ShowIndexString = true; + this.gbi06.ShowNameString = true; + this.gbi06.ShowValueString = false; + this.gbi06.Size = new System.Drawing.Size(294, 101); + this.gbi06.TabIndex = 3; + this.gbi06.Tag = "PKZ"; + this.gbi06.Tags = null; + this.gbi06.Text = "gridView1"; + this.gbi06.TextAttachToImage = true; + this.gbi06.Titles = null; + this.gbi06.Values = null; + // + // lbi06 + // + this.lbi06.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi06.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi06.ForeColor = System.Drawing.Color.Yellow; + this.lbi06.Location = new System.Drawing.Point(0, 0); + this.lbi06.Name = "lbi06"; + this.lbi06.Size = new System.Drawing.Size(294, 16); + this.lbi06.TabIndex = 4; + this.lbi06.Text = "ELEVATOR1-F"; + this.lbi06.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel13 + // + this.panel13.Controls.Add(this.gbi07); + this.panel13.Controls.Add(this.lbi07); + this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel13.Location = new System.Drawing.Point(303, 249); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(294, 117); + this.panel13.TabIndex = 0; + // + // gbi07 + // + this.gbi07.arVeriticalDraw = false; + this.gbi07.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi07.BorderSize = 1; + colorListItem17.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem17.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem17.Remark = ""; + colorListItem18.BackColor1 = System.Drawing.Color.Orange; + colorListItem18.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem18.Remark = ""; + this.gbi07.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem17, + colorListItem18}; + this.gbi07.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi07.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi07.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi07.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi07.ForeColor = System.Drawing.Color.White; + this.gbi07.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi07.Location = new System.Drawing.Point(0, 16); + this.gbi07.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi07.MenuBorderSize = 1; + this.gbi07.MenuGap = 5; + this.gbi07.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi07.Name = "gbi07"; + this.gbi07.Names = null; + this.gbi07.ShadowColor = System.Drawing.Color.Black; + this.gbi07.showDebugInfo = false; + this.gbi07.ShowIndexString = true; + this.gbi07.ShowNameString = true; + this.gbi07.ShowValueString = false; + this.gbi07.Size = new System.Drawing.Size(294, 101); + this.gbi07.TabIndex = 3; + this.gbi07.Tag = "PKZ"; + this.gbi07.Tags = null; + this.gbi07.Text = "gridView1"; + this.gbi07.TextAttachToImage = true; + this.gbi07.Titles = null; + this.gbi07.Values = null; + // + // lbi07 + // + this.lbi07.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi07.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi07.ForeColor = System.Drawing.Color.Yellow; + this.lbi07.Location = new System.Drawing.Point(0, 0); + this.lbi07.Name = "lbi07"; + this.lbi07.Size = new System.Drawing.Size(294, 16); + this.lbi07.TabIndex = 4; + this.lbi07.Text = "ELEVATOR2-F"; + this.lbi07.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel14 + // + this.panel14.Controls.Add(this.gbi08); + this.panel14.Controls.Add(this.lbi08); + this.panel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel14.Location = new System.Drawing.Point(603, 249); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(295, 117); + this.panel14.TabIndex = 0; + // + // gbi08 + // + this.gbi08.arVeriticalDraw = false; + this.gbi08.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi08.BorderSize = 1; + colorListItem19.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem19.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem19.Remark = ""; + colorListItem20.BackColor1 = System.Drawing.Color.Orange; + colorListItem20.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem20.Remark = ""; + this.gbi08.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem19, + colorListItem20}; + this.gbi08.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi08.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi08.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi08.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi08.ForeColor = System.Drawing.Color.White; + this.gbi08.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi08.Location = new System.Drawing.Point(0, 16); + this.gbi08.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi08.MenuBorderSize = 1; + this.gbi08.MenuGap = 5; + this.gbi08.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi08.Name = "gbi08"; + this.gbi08.Names = null; + this.gbi08.ShadowColor = System.Drawing.Color.Black; + this.gbi08.showDebugInfo = false; + this.gbi08.ShowIndexString = true; + this.gbi08.ShowNameString = true; + this.gbi08.ShowValueString = false; + this.gbi08.Size = new System.Drawing.Size(295, 101); + this.gbi08.TabIndex = 3; + this.gbi08.Tag = "PKZ"; + this.gbi08.Tags = null; + this.gbi08.Text = "gridView1"; + this.gbi08.TextAttachToImage = true; + this.gbi08.Titles = null; + this.gbi08.Values = null; + // + // lbi08 + // + this.lbi08.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi08.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi08.ForeColor = System.Drawing.Color.Yellow; + this.lbi08.Location = new System.Drawing.Point(0, 0); + this.lbi08.Name = "lbi08"; + this.lbi08.Size = new System.Drawing.Size(295, 16); + this.lbi08.TabIndex = 4; + this.lbi08.Text = "ELEVATOR3-F"; + this.lbi08.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel17 + // + this.panel17.Controls.Add(this.gbi11); + this.panel17.Controls.Add(this.lbi11); + this.panel17.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel17.Location = new System.Drawing.Point(603, 372); + this.panel17.Name = "panel17"; + this.panel17.Size = new System.Drawing.Size(295, 117); + this.panel17.TabIndex = 0; + // + // gbi11 + // + this.gbi11.arVeriticalDraw = false; + this.gbi11.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi11.BorderSize = 1; + colorListItem21.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem21.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem21.Remark = ""; + colorListItem22.BackColor1 = System.Drawing.Color.Orange; + colorListItem22.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem22.Remark = ""; + this.gbi11.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem21, + colorListItem22}; + this.gbi11.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi11.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi11.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi11.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi11.ForeColor = System.Drawing.Color.White; + this.gbi11.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi11.Location = new System.Drawing.Point(0, 16); + this.gbi11.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi11.MenuBorderSize = 1; + this.gbi11.MenuGap = 5; + this.gbi11.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi11.Name = "gbi11"; + this.gbi11.Names = null; + this.gbi11.ShadowColor = System.Drawing.Color.Black; + this.gbi11.showDebugInfo = false; + this.gbi11.ShowIndexString = true; + this.gbi11.ShowNameString = true; + this.gbi11.ShowValueString = false; + this.gbi11.Size = new System.Drawing.Size(295, 101); + this.gbi11.TabIndex = 3; + this.gbi11.Tag = "PKZ"; + this.gbi11.Tags = null; + this.gbi11.Text = "gridView1"; + this.gbi11.TextAttachToImage = true; + this.gbi11.Titles = null; + this.gbi11.Values = null; + // + // lbi11 + // + this.lbi11.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi11.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi11.ForeColor = System.Drawing.Color.SkyBlue; + this.lbi11.Location = new System.Drawing.Point(0, 0); + this.lbi11.Name = "lbi11"; + this.lbi11.Size = new System.Drawing.Size(295, 16); + this.lbi11.TabIndex = 4; + this.lbi11.Text = "Y3"; + this.lbi11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel18 + // + this.panel18.Controls.Add(this.gbi10); + this.panel18.Controls.Add(this.lbi10); + this.panel18.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel18.Location = new System.Drawing.Point(303, 372); + this.panel18.Name = "panel18"; + this.panel18.Size = new System.Drawing.Size(294, 117); + this.panel18.TabIndex = 0; + // + // gbi10 + // + this.gbi10.arVeriticalDraw = false; + this.gbi10.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi10.BorderSize = 1; + colorListItem23.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem23.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem23.Remark = ""; + colorListItem24.BackColor1 = System.Drawing.Color.Orange; + colorListItem24.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem24.Remark = ""; + this.gbi10.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem23, + colorListItem24}; + this.gbi10.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi10.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi10.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi10.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi10.ForeColor = System.Drawing.Color.White; + this.gbi10.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi10.Location = new System.Drawing.Point(0, 16); + this.gbi10.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi10.MenuBorderSize = 1; + this.gbi10.MenuGap = 5; + this.gbi10.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi10.Name = "gbi10"; + this.gbi10.Names = null; + this.gbi10.ShadowColor = System.Drawing.Color.Black; + this.gbi10.showDebugInfo = false; + this.gbi10.ShowIndexString = true; + this.gbi10.ShowNameString = true; + this.gbi10.ShowValueString = false; + this.gbi10.Size = new System.Drawing.Size(294, 101); + this.gbi10.TabIndex = 3; + this.gbi10.Tag = "PKZ"; + this.gbi10.Tags = null; + this.gbi10.Text = "gridView1"; + this.gbi10.TextAttachToImage = true; + this.gbi10.Titles = null; + this.gbi10.Values = null; + // + // lbi10 + // + this.lbi10.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi10.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi10.ForeColor = System.Drawing.Color.SkyBlue; + this.lbi10.Location = new System.Drawing.Point(0, 0); + this.lbi10.Name = "lbi10"; + this.lbi10.Size = new System.Drawing.Size(294, 16); + this.lbi10.TabIndex = 4; + this.lbi10.Text = "Y2"; + this.lbi10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel19 + // + this.panel19.Controls.Add(this.gbi09); + this.panel19.Controls.Add(this.lbi09); + this.panel19.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel19.Location = new System.Drawing.Point(3, 372); + this.panel19.Name = "panel19"; + this.panel19.Size = new System.Drawing.Size(294, 117); + this.panel19.TabIndex = 0; + // + // gbi09 + // + this.gbi09.arVeriticalDraw = false; + this.gbi09.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi09.BorderSize = 1; + colorListItem25.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem25.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem25.Remark = ""; + colorListItem26.BackColor1 = System.Drawing.Color.Orange; + colorListItem26.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem26.Remark = ""; + this.gbi09.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem25, + colorListItem26}; + this.gbi09.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi09.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi09.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi09.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi09.ForeColor = System.Drawing.Color.White; + this.gbi09.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi09.Location = new System.Drawing.Point(0, 16); + this.gbi09.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi09.MenuBorderSize = 1; + this.gbi09.MenuGap = 5; + this.gbi09.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi09.Name = "gbi09"; + this.gbi09.Names = null; + this.gbi09.ShadowColor = System.Drawing.Color.Black; + this.gbi09.showDebugInfo = false; + this.gbi09.ShowIndexString = true; + this.gbi09.ShowNameString = true; + this.gbi09.ShowValueString = false; + this.gbi09.Size = new System.Drawing.Size(294, 101); + this.gbi09.TabIndex = 3; + this.gbi09.Tag = "PKZ"; + this.gbi09.Tags = null; + this.gbi09.Text = "gridView1"; + this.gbi09.TextAttachToImage = true; + this.gbi09.Titles = null; + this.gbi09.Values = null; + // + // lbi09 + // + this.lbi09.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi09.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi09.ForeColor = System.Drawing.Color.SkyBlue; + this.lbi09.Location = new System.Drawing.Point(0, 0); + this.lbi09.Name = "lbi09"; + this.lbi09.Size = new System.Drawing.Size(294, 16); + this.lbi09.TabIndex = 4; + this.lbi09.Text = "Y1"; + this.lbi09.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel20 + // + this.panel20.Controls.Add(this.gbi12); + this.panel20.Controls.Add(this.lbi12); + this.panel20.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel20.Location = new System.Drawing.Point(3, 495); + this.panel20.Name = "panel20"; + this.panel20.Size = new System.Drawing.Size(294, 117); + this.panel20.TabIndex = 0; + // + // gbi12 + // + this.gbi12.arVeriticalDraw = false; + this.gbi12.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi12.BorderSize = 1; + colorListItem27.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem27.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem27.Remark = ""; + colorListItem28.BackColor1 = System.Drawing.Color.Orange; + colorListItem28.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem28.Remark = ""; + this.gbi12.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem27, + colorListItem28}; + this.gbi12.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi12.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi12.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi12.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi12.ForeColor = System.Drawing.Color.White; + this.gbi12.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi12.Location = new System.Drawing.Point(0, 16); + this.gbi12.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi12.MenuBorderSize = 1; + this.gbi12.MenuGap = 5; + this.gbi12.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi12.Name = "gbi12"; + this.gbi12.Names = null; + this.gbi12.ShadowColor = System.Drawing.Color.Black; + this.gbi12.showDebugInfo = false; + this.gbi12.ShowIndexString = true; + this.gbi12.ShowNameString = true; + this.gbi12.ShowValueString = false; + this.gbi12.Size = new System.Drawing.Size(294, 101); + this.gbi12.TabIndex = 3; + this.gbi12.Tag = "PKZ"; + this.gbi12.Tags = null; + this.gbi12.Text = "gridView1"; + this.gbi12.TextAttachToImage = true; + this.gbi12.Titles = null; + this.gbi12.Values = null; + // + // lbi12 + // + this.lbi12.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi12.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi12.ForeColor = System.Drawing.Color.SkyBlue; + this.lbi12.Location = new System.Drawing.Point(0, 0); + this.lbi12.Name = "lbi12"; + this.lbi12.Size = new System.Drawing.Size(294, 16); + this.lbi12.TabIndex = 4; + this.lbi12.Text = "Z-PICKER1-F"; + this.lbi12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel21 + // + this.panel21.Controls.Add(this.gbi13); + this.panel21.Controls.Add(this.lbi13); + this.panel21.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel21.Location = new System.Drawing.Point(303, 495); + this.panel21.Name = "panel21"; + this.panel21.Size = new System.Drawing.Size(294, 117); + this.panel21.TabIndex = 0; + // + // gbi13 + // + this.gbi13.arVeriticalDraw = false; + this.gbi13.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi13.BorderSize = 1; + colorListItem29.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem29.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem29.Remark = ""; + colorListItem30.BackColor1 = System.Drawing.Color.Orange; + colorListItem30.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem30.Remark = ""; + this.gbi13.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem29, + colorListItem30}; + this.gbi13.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi13.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi13.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi13.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi13.ForeColor = System.Drawing.Color.White; + this.gbi13.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi13.Location = new System.Drawing.Point(0, 16); + this.gbi13.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi13.MenuBorderSize = 1; + this.gbi13.MenuGap = 5; + this.gbi13.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi13.Name = "gbi13"; + this.gbi13.Names = null; + this.gbi13.ShadowColor = System.Drawing.Color.Black; + this.gbi13.showDebugInfo = false; + this.gbi13.ShowIndexString = true; + this.gbi13.ShowNameString = true; + this.gbi13.ShowValueString = false; + this.gbi13.Size = new System.Drawing.Size(294, 101); + this.gbi13.TabIndex = 3; + this.gbi13.Tag = "PKZ"; + this.gbi13.Tags = null; + this.gbi13.Text = "gridView1"; + this.gbi13.TextAttachToImage = true; + this.gbi13.Titles = null; + this.gbi13.Values = null; + // + // lbi13 + // + this.lbi13.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi13.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi13.ForeColor = System.Drawing.Color.SkyBlue; + this.lbi13.Location = new System.Drawing.Point(0, 0); + this.lbi13.Name = "lbi13"; + this.lbi13.Size = new System.Drawing.Size(294, 16); + this.lbi13.TabIndex = 4; + this.lbi13.Text = "Z-PICKER2-F"; + this.lbi13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel22 + // + this.panel22.Controls.Add(this.gbi14); + this.panel22.Controls.Add(this.lbi14); + this.panel22.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel22.Location = new System.Drawing.Point(603, 495); + this.panel22.Name = "panel22"; + this.panel22.Size = new System.Drawing.Size(295, 117); + this.panel22.TabIndex = 0; + // + // gbi14 + // + this.gbi14.arVeriticalDraw = false; + this.gbi14.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi14.BorderSize = 1; + colorListItem31.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem31.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem31.Remark = ""; + colorListItem32.BackColor1 = System.Drawing.Color.Orange; + colorListItem32.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem32.Remark = ""; + this.gbi14.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem31, + colorListItem32}; + this.gbi14.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi14.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi14.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi14.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi14.ForeColor = System.Drawing.Color.White; + this.gbi14.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi14.Location = new System.Drawing.Point(0, 16); + this.gbi14.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi14.MenuBorderSize = 1; + this.gbi14.MenuGap = 5; + this.gbi14.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi14.Name = "gbi14"; + this.gbi14.Names = null; + this.gbi14.ShadowColor = System.Drawing.Color.Black; + this.gbi14.showDebugInfo = false; + this.gbi14.ShowIndexString = true; + this.gbi14.ShowNameString = true; + this.gbi14.ShowValueString = false; + this.gbi14.Size = new System.Drawing.Size(295, 101); + this.gbi14.TabIndex = 3; + this.gbi14.Tag = "PKZ"; + this.gbi14.Tags = null; + this.gbi14.Text = "gridView1"; + this.gbi14.TextAttachToImage = true; + this.gbi14.Titles = null; + this.gbi14.Values = null; + // + // lbi14 + // + this.lbi14.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi14.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi14.ForeColor = System.Drawing.Color.SkyBlue; + this.lbi14.Location = new System.Drawing.Point(0, 0); + this.lbi14.Name = "lbi14"; + this.lbi14.Size = new System.Drawing.Size(295, 16); + this.lbi14.TabIndex = 4; + this.lbi14.Text = "Z-PICKER3-F"; + this.lbi14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.Controls.Add(this.gbi05); + this.panel1.Controls.Add(this.lbi05); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(603, 126); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(295, 117); + this.panel1.TabIndex = 0; + // + // gbi05 + // + this.gbi05.arVeriticalDraw = false; + this.gbi05.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi05.BorderSize = 1; + colorListItem33.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem33.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem33.Remark = ""; + colorListItem34.BackColor1 = System.Drawing.Color.Orange; + colorListItem34.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem34.Remark = ""; + this.gbi05.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem33, + colorListItem34}; + this.gbi05.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi05.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi05.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi05.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi05.ForeColor = System.Drawing.Color.White; + this.gbi05.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi05.Location = new System.Drawing.Point(0, 16); + this.gbi05.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi05.MenuBorderSize = 1; + this.gbi05.MenuGap = 5; + this.gbi05.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi05.Name = "gbi05"; + this.gbi05.Names = null; + this.gbi05.ShadowColor = System.Drawing.Color.Black; + this.gbi05.showDebugInfo = false; + this.gbi05.ShowIndexString = true; + this.gbi05.ShowNameString = true; + this.gbi05.ShowValueString = false; + this.gbi05.Size = new System.Drawing.Size(295, 101); + this.gbi05.TabIndex = 3; + this.gbi05.Tag = "PKZ"; + this.gbi05.Tags = null; + this.gbi05.Text = "gridView1"; + this.gbi05.TextAttachToImage = true; + this.gbi05.Titles = null; + this.gbi05.Values = null; + // + // lbi05 + // + this.lbi05.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi05.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi05.ForeColor = System.Drawing.Color.Cyan; + this.lbi05.Location = new System.Drawing.Point(0, 0); + this.lbi05.Name = "lbi05"; + this.lbi05.Size = new System.Drawing.Size(295, 16); + this.lbi05.TabIndex = 4; + this.lbi05.Text = "X-FRONT"; + this.lbi05.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel4 + // + this.panel4.Controls.Add(this.gbi15); + this.panel4.Controls.Add(this.lbi15); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(3, 618); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(294, 119); + this.panel4.TabIndex = 0; + // + // gbi15 + // + this.gbi15.arVeriticalDraw = false; + this.gbi15.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi15.BorderSize = 1; + colorListItem35.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem35.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem35.Remark = ""; + colorListItem36.BackColor1 = System.Drawing.Color.Orange; + colorListItem36.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem36.Remark = ""; + this.gbi15.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem35, + colorListItem36}; + this.gbi15.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi15.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi15.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi15.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi15.ForeColor = System.Drawing.Color.White; + this.gbi15.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi15.Location = new System.Drawing.Point(0, 16); + this.gbi15.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi15.MenuBorderSize = 1; + this.gbi15.MenuGap = 5; + this.gbi15.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi15.Name = "gbi15"; + this.gbi15.Names = null; + this.gbi15.ShadowColor = System.Drawing.Color.Black; + this.gbi15.showDebugInfo = false; + this.gbi15.ShowIndexString = true; + this.gbi15.ShowNameString = true; + this.gbi15.ShowValueString = false; + this.gbi15.Size = new System.Drawing.Size(294, 103); + this.gbi15.TabIndex = 3; + this.gbi15.Tag = "PKZ"; + this.gbi15.Tags = null; + this.gbi15.Text = "gridView1"; + this.gbi15.TextAttachToImage = true; + this.gbi15.Titles = null; + this.gbi15.Values = null; + // + // lbi15 + // + this.lbi15.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi15.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi15.ForeColor = System.Drawing.Color.Cyan; + this.lbi15.Location = new System.Drawing.Point(0, 0); + this.lbi15.Name = "lbi15"; + this.lbi15.Size = new System.Drawing.Size(294, 16); + this.lbi15.TabIndex = 4; + this.lbi15.Text = "X-FRONT"; + this.lbi15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel15 + // + this.panel15.Controls.Add(this.gbi16); + this.panel15.Controls.Add(this.lbi16); + this.panel15.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel15.Location = new System.Drawing.Point(303, 618); + this.panel15.Name = "panel15"; + this.panel15.Size = new System.Drawing.Size(294, 119); + this.panel15.TabIndex = 0; + // + // gbi16 + // + this.gbi16.arVeriticalDraw = false; + this.gbi16.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi16.BorderSize = 1; + colorListItem37.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem37.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem37.Remark = ""; + colorListItem38.BackColor1 = System.Drawing.Color.Orange; + colorListItem38.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem38.Remark = ""; + this.gbi16.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem37, + colorListItem38}; + this.gbi16.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi16.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi16.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi16.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi16.ForeColor = System.Drawing.Color.White; + this.gbi16.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi16.Location = new System.Drawing.Point(0, 16); + this.gbi16.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi16.MenuBorderSize = 1; + this.gbi16.MenuGap = 5; + this.gbi16.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi16.Name = "gbi16"; + this.gbi16.Names = null; + this.gbi16.ShadowColor = System.Drawing.Color.Black; + this.gbi16.showDebugInfo = false; + this.gbi16.ShowIndexString = true; + this.gbi16.ShowNameString = true; + this.gbi16.ShowValueString = false; + this.gbi16.Size = new System.Drawing.Size(294, 103); + this.gbi16.TabIndex = 3; + this.gbi16.Tag = "PKZ"; + this.gbi16.Tags = null; + this.gbi16.Text = "gridView1"; + this.gbi16.TextAttachToImage = true; + this.gbi16.Titles = null; + this.gbi16.Values = null; + // + // lbi16 + // + this.lbi16.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi16.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi16.ForeColor = System.Drawing.Color.Cyan; + this.lbi16.Location = new System.Drawing.Point(0, 0); + this.lbi16.Name = "lbi16"; + this.lbi16.Size = new System.Drawing.Size(294, 16); + this.lbi16.TabIndex = 4; + this.lbi16.Text = "X-FRONT"; + this.lbi16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel24 + // + this.panel24.Controls.Add(this.gbi17); + this.panel24.Controls.Add(this.lbi17); + this.panel24.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel24.Location = new System.Drawing.Point(603, 618); + this.panel24.Name = "panel24"; + this.panel24.Size = new System.Drawing.Size(295, 119); + this.panel24.TabIndex = 0; + // + // gbi17 + // + this.gbi17.arVeriticalDraw = false; + this.gbi17.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.gbi17.BorderSize = 1; + colorListItem39.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem39.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + colorListItem39.Remark = ""; + colorListItem40.BackColor1 = System.Drawing.Color.Orange; + colorListItem40.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem40.Remark = ""; + this.gbi17.ColorList = new arCtl.GridView.ColorListItem[] { + colorListItem39, + colorListItem40}; + this.gbi17.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gbi17.Dock = System.Windows.Forms.DockStyle.Fill; + this.gbi17.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.gbi17.FontPin = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.gbi17.ForeColor = System.Drawing.Color.White; + this.gbi17.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gbi17.Location = new System.Drawing.Point(0, 16); + this.gbi17.MatrixSize = new System.Drawing.Point(4, 5); + this.gbi17.MenuBorderSize = 1; + this.gbi17.MenuGap = 5; + this.gbi17.MinimumSize = new System.Drawing.Size(100, 50); + this.gbi17.Name = "gbi17"; + this.gbi17.Names = null; + this.gbi17.ShadowColor = System.Drawing.Color.Black; + this.gbi17.showDebugInfo = false; + this.gbi17.ShowIndexString = true; + this.gbi17.ShowNameString = true; + this.gbi17.ShowValueString = false; + this.gbi17.Size = new System.Drawing.Size(295, 103); + this.gbi17.TabIndex = 3; + this.gbi17.Tag = "PKZ"; + this.gbi17.Tags = null; + this.gbi17.Text = "gridView1"; + this.gbi17.TextAttachToImage = true; + this.gbi17.Titles = null; + this.gbi17.Values = null; + // + // lbi17 + // + this.lbi17.Dock = System.Windows.Forms.DockStyle.Top; + this.lbi17.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbi17.ForeColor = System.Drawing.Color.Cyan; + this.lbi17.Location = new System.Drawing.Point(0, 0); + this.lbi17.Name = "lbi17"; + this.lbi17.Size = new System.Drawing.Size(295, 16); + this.lbi17.TabIndex = 4; + this.lbi17.Text = "X-FRONT"; + this.lbi17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tmDisplay + // + this.tmDisplay.Interval = 250; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.pinDefineToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(153, 48); + // + // pinDefineToolStripMenuItem + // + this.pinDefineToolStripMenuItem.Name = "pinDefineToolStripMenuItem"; + this.pinDefineToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.pinDefineToolStripMenuItem.Text = "Pin Define"; + this.pinDefineToolStripMenuItem.Click += new System.EventHandler(this.pinDefineToolStripMenuItem_Click); + // + // fIOMonitor + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(1227, 748); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.panel3); + this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.KeyPreview = true; + this.Name = "fIOMonitor"; + this.Opacity = 0.95D; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "I/O Monitor"; + this.Load += new System.EventHandler(this.fIOMonitor_Load); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + this.tableLayoutPanel3.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel11.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel10.ResumeLayout(false); + this.panel12.ResumeLayout(false); + this.panel13.ResumeLayout(false); + this.panel14.ResumeLayout(false); + this.panel17.ResumeLayout(false); + this.panel18.ResumeLayout(false); + this.panel19.ResumeLayout(false); + this.panel20.ResumeLayout(false); + this.panel21.ResumeLayout(false); + this.panel22.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel15.ResumeLayout(false); + this.panel24.ResumeLayout(false); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private arCtl.arLabel lbTitle1; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private arCtl.GridView.GridView gbi00; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Panel panel11; + private System.Windows.Forms.Label lbi01; + private System.Windows.Forms.Label lbi02; + private System.Windows.Forms.Label lbi00; + private System.Windows.Forms.Timer tmDisplay; + private arCtl.GridView.GridView gbi10; + private arCtl.GridView.GridView gbi02; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.Panel panel6; + private arCtl.arLabel arLabel2; + private System.Windows.Forms.Panel panel7; + private arCtl.GridView.GridView gbi04; + private System.Windows.Forms.Label lbi04; + private System.Windows.Forms.Panel panel10; + private arCtl.GridView.GridView gbi03; + private System.Windows.Forms.Label lbi03; + private System.Windows.Forms.Panel panel12; + private arCtl.GridView.GridView gbi06; + private System.Windows.Forms.Label lbi06; + private System.Windows.Forms.Panel panel13; + private arCtl.GridView.GridView gbi07; + private System.Windows.Forms.Label lbi07; + private System.Windows.Forms.Panel panel14; + private arCtl.GridView.GridView gbi08; + private System.Windows.Forms.Label lbi08; + private System.Windows.Forms.Panel panel17; + private arCtl.GridView.GridView gbi11; + private System.Windows.Forms.Label lbi11; + private System.Windows.Forms.Panel panel18; + private arCtl.GridView.GridView gbi01; + private System.Windows.Forms.Label lbi10; + private System.Windows.Forms.Panel panel19; + private arCtl.GridView.GridView gbi09; + private System.Windows.Forms.Label lbi09; + private System.Windows.Forms.Panel panel20; + private arCtl.GridView.GridView gbi12; + private System.Windows.Forms.Label lbi12; + private System.Windows.Forms.Panel panel21; + private arCtl.GridView.GridView gbi13; + private System.Windows.Forms.Label lbi13; + private System.Windows.Forms.Panel panel22; + private arCtl.GridView.GridView gbi14; + private System.Windows.Forms.Label lbi14; + private arDev.AjinEXTEK.UI.IOPanel tblDI; + private arDev.AjinEXTEK.UI.IOPanel tblDO; + private System.Windows.Forms.Panel panel1; + private arCtl.GridView.GridView gbi05; + private System.Windows.Forms.Label lbi05; + private System.Windows.Forms.Panel panel4; + private arCtl.GridView.GridView gbi15; + private System.Windows.Forms.Label lbi15; + private System.Windows.Forms.Panel panel15; + private arCtl.GridView.GridView gbi16; + private System.Windows.Forms.Label lbi16; + private System.Windows.Forms.Panel panel24; + private arCtl.GridView.GridView gbi17; + private System.Windows.Forms.Label lbi17; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem pinDefineToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/DIOMonitor.cs b/Handler/Project/Dialog/DIOMonitor.cs new file mode 100644 index 0000000..b033373 --- /dev/null +++ b/Handler/Project/Dialog/DIOMonitor.cs @@ -0,0 +1,432 @@ +#pragma warning disable IDE1006 // 명명 스타일 + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using arDev.DIO; +using arDev.AjinEXTEK; +using AR; +using AR; + +namespace Project.Dialog +{ + public partial class fIOMonitor : Form + { + arCtl.GridView.GridView[] gvIlog; + Label[] lbILog; + + public fIOMonitor() + { + InitializeComponent(); + this.FormClosed += fIOMonitor_FormClosed; + + this.Opacity = 1.0; + + gvIlog = new arCtl.GridView.GridView[] { + gbi00,gbi01,gbi02,gbi03,gbi04,gbi05, + gbi06,gbi07,gbi08,gbi09,gbi10,gbi11, + gbi12,gbi13,gbi14,gbi15,gbi16,gbi17, + }; + lbILog = new Label[] { + lbi00,lbi01,lbi02,lbi03,lbi04,lbi05, + lbi06,lbi07,lbi08,lbi09,lbi10,lbi11, + lbi12,lbi13,lbi14,lbi15,lbi16,lbi17, + }; + + //DI,DO, + var dinames = DIO.Pin.GetDIName; + var donames = DIO.Pin.GetDOName; + tblDI.setTitle(dinames); + tblDO.setTitle(donames); + //tblFG.setTitle(PUB.flag.Name); + var pinNameI = DIO.Pin.GetDIPinName;// new string[dinames.Length]; + var pinNameO = DIO.Pin.GetDOPinName;// new string[donames.Length]; + //for (int i = 0; i < pinNameI.Length; i++) pinNameI[i] = Enum.GetName(typeof(eDIPin), i); + //for (int i = 0; i < pinNameO.Length; i++) pinNameO[i] = Enum.GetName(typeof(eDOPin), i); + tblDI.setNames(pinNameI); + tblDO.setNames(pinNameO); + + tblDI.setItemTextAlign(ContentAlignment.MiddleLeft); + tblDO.setItemTextAlign(ContentAlignment.MiddleLeft); + + // tblFG.setItemTextAlign(ContentAlignment.BottomLeft); + tblDI.ColorList = new arDev.AjinEXTEK.UI.ColorListItem[] { + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" }, + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.Lime, BackColor2 = Color.Green, Remark="True" }, + }; + tblDO.ColorList = new arDev.AjinEXTEK.UI.ColorListItem[] { + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" }, + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.Tomato, BackColor2 = Color.Red, Remark="True" }, + }; + + //인터락이름 + //var ILNameEV = new string[Pub.iLock.Length]; + for (int i = 0; i < PUB.iLock.Length; i++) + { + var axisname = ((eAxis)i).ToString(); + var nonaxis = false; + if (i >= 7) //이름이없는경우 + { + axisname = PUB.iLock[i].Tag.ToString(); + nonaxis = true; + } + string[] ILNameEV; + + //if (axisname.StartsWith("X")) ILNameEV = Enum.GetNames(typeof(eILockPKX)); + //else if (axisname.StartsWith("Y")) ILNameEV = Enum.GetNames(typeof(eILockPKY)); + //else if (axisname.StartsWith("Z")) ILNameEV = Enum.GetNames(typeof(eILockPKZ)); + //else if (axisname.StartsWith("U")) ILNameEV = Enum.GetNames(typeof(eILockEV)); + //else if (axisname.StartsWith("L")) ILNameEV = Enum.GetNames(typeof(eILockEV)); + //else + if (i == 7) ILNameEV = Enum.GetNames(typeof(eILockPRL)); + else if (i == 8) ILNameEV = Enum.GetNames(typeof(eILockPRR)); + else if (i == 9) ILNameEV = Enum.GetNames(typeof(eILockVS0)); + else if (i == 10) ILNameEV = Enum.GetNames(typeof(eILockVS1)); + else if (i == 11) ILNameEV = Enum.GetNames(typeof(eILockVS2)); + else if (i == 12) ILNameEV = Enum.GetNames(typeof(eILockCV)); + else if (i == 13) ILNameEV = Enum.GetNames(typeof(eILockCV)); + else ILNameEV = Enum.GetNames(typeof(eILock)); + + this.lbILog[i].Text = axisname; + this.gvIlog[i].setTitle(ILNameEV); + this.gvIlog[i].setItemTextAlign(ContentAlignment.MiddleCenter); + this.gvIlog[i].ColorList[1].BackColor1 = Color.IndianRed; + this.gvIlog[i].ColorList[1].BackColor2 = Color.LightCoral; + + if (nonaxis) + { + lbILog[i].ForeColor = Color.Gold; + } + else + { + if (axisname.StartsWith("PX")) this.lbILog[i].ForeColor = Color.Gold; + else if (axisname.StartsWith("PY")) this.lbILog[i].ForeColor = Color.Tomato; + else if (axisname.StartsWith("PZ")) this.lbILog[i].ForeColor = Color.Lime; + else if (axisname.StartsWith("PU")) this.lbILog[i].ForeColor = Color.SkyBlue; + else if (axisname.StartsWith("PL")) this.lbILog[i].ForeColor = Color.Magenta; + else this.lbILog[i].ForeColor = Color.DimGray; + } + + } + + + + //값확인 + List diValue = new List(); + for (int i = 0; i < PUB.dio.GetDICount; i++) + diValue.Add(PUB.dio.GetDIValue(i)); + + List doValue = new List(); + for (int i = 0; i < PUB.dio.GetDOCount; i++) + doValue.Add(PUB.dio.GetDOValue(i)); + //List fgValue = new List(); + //for (int i = 0; i < PUB.flag.Length; i++) + // fgValue.Add(PUB.flag.get(i)); + + tblDI.setValue(diValue.ToArray()); + tblDO.setValue(doValue.ToArray()); + // tblFG.setValue(fgValue.ToArray()); + + PUB.dio.IOValueChanged += dio_IOValueChanged; + //PUB.flag.ValueChanged += flag_ValueChanged; + + //interlock + var axislist = Enum.GetNames(typeof(eAxis)); + + + + for (int i = 0; i < PUB.iLock.Length; i++) + { + List PKValues = new List(); + + //인터락에는 값이 몇개 있지? + for (int j = 0; j < 64; j++) + { + PKValues.Add(PUB.iLock[i].get(j)); + } + + gvIlog[i].setValue(PKValues.ToArray()); + gvIlog[i].Tag = i; + + PUB.iLock[i].ValueChanged += LockXF_ValueChanged; + + if (PUB.sm.isRunning == false) + { + gvIlog[i].ItemClick += gvILXF_ItemClick; + } + gvIlog[i].Invalidate(); + } + + + if (PUB.sm.isRunning == false) + { + this.tblDI.ItemClick += tblDI_ItemClick; + this.tblDO.ItemClick += tblDO_ItemClick; + //this.tblFG.ItemClick += tblFG_ItemClick; + } + + this.tblDI.Invalidate(); + this.tblDO.Invalidate(); + // this.tblFG.Invalidate(); + + this.KeyDown += fIOMonitor_KeyDown; + this.WindowState = FormWindowState.Maximized; + } + + + void fIOMonitor_FormClosed(object sender, FormClosedEventArgs e) + { + PUB.dio.IOValueChanged -= dio_IOValueChanged; + // PUB.flag.ValueChanged -= flag_ValueChanged; + + for (int i = 0; i < PUB.iLock.Length; i++) + { + PUB.iLock[i].ValueChanged -= LockXF_ValueChanged; + } + + + if (PUB.sm.isRunning == false) + { + this.tblDI.ItemClick -= tblDI_ItemClick; + this.tblDO.ItemClick -= tblDO_ItemClick; + // this.tblFG.ItemClick -= tblFG_ItemClick; + + for (int i = 0; i < PUB.iLock.Length; i++) + { + gvIlog[i].ItemClick -= gvILXF_ItemClick; + } + + } + + this.KeyDown -= fIOMonitor_KeyDown; + } + + void LockXF_ValueChanged(object sender, AR.InterfaceValueEventArgs e) + { + var item = sender as CInterLock; + //var tagStr = item.Tag.ToString(); + //var axis = (eAxis)Enum.Parse(typeof(eAxis), tagStr); + var axisno = item.idx;// (int)axis; + + if (this.gvIlog[axisno].setValue((int)e.ArrIDX, e.NewValue)) + this.gvIlog[axisno].Invalidate(); + + } + + void gvILXF_ItemClick(object sender, arCtl.GridView.GridView.ItemClickEventArgs e) + { + var gv = sender as arCtl.GridView.GridView; + var tagStr = gv.Tag.ToString(); + + var axis = (eAxis)Enum.Parse(typeof(eAxis), tagStr); + var axisno = (int)axis; + + var curValue = PUB.iLock[axisno].get((int)e.idx); + PUB.iLock[axisno].set((int)e.idx, !curValue, "IOMONITOR"); + } + + void fIOMonitor_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) this.Close(); + else if (e.KeyCode == Keys.D && e.Control) + { + this.tblDO.showDebugInfo = !this.tblDO.showDebugInfo; + this.tblDI.showDebugInfo = this.tblDO.showDebugInfo; + // this.tblFG.showDebugInfo = this.tblDO.showDebugInfo; + } + } + + private void fIOMonitor_Load(object sender, EventArgs e) + { + this.Text = "I/O Monitor"; + this.Show(); + //'Application.DoEvents(); + + + + Dialog.Quick_Control fctl = new Quick_Control + { + TopLevel = false, + Visible = true + }; + this.panel3.Controls.Add(fctl); + fctl.Dock = DockStyle.Top; + fctl.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + fctl.panBG.BackColor = this.BackColor; + fctl.panBG.BorderStyle = BorderStyle.None; + fctl.Show(); + fctl.Dock = DockStyle.Fill; + + this.tmDisplay.Start(); + } + + + + + + //void tblFG_ItemClick(object sender, arCtl.GridView.GridView.ItemClickEventArgs e) + //{ + // var curValue = PUB.flag.get((int)e.idx); + // PUB.flag.set((int)e.idx, !curValue, "IOMONITOR"); + //} + + void tblDO_ItemClick(object sender, arDev.AjinEXTEK.UI.IOPanel.ItemClickEventArgs e) + { + var newValue = !PUB.dio.GetDOValue(e.idx); + if (PUB.dio.IsInit == false) + { + //임시시그널 + var dlg = UTIL.MsgQ("Do you want to create a virtual signal?"); + if (dlg == System.Windows.Forms.DialogResult.Yes) + { + PUB.dio.RaiseEvent(eIOPINDIR.OUTPUT, e.idx, newValue); + PUB.log.Add("fake do : " + e.idx.ToString() + ",val=" + newValue.ToString()); + } + } + else + { + PUB.dio.SetOutput(e.idx, newValue); + PUB.log.Add(string.Format("set output(iomonitor-userclick) idx={0},val={1}", e.idx, newValue)); + } + } + + void tblDI_ItemClick(object sender, arDev.AjinEXTEK.UI.IOPanel.ItemClickEventArgs e) + { + var newValue = !PUB.dio.GetDIValue(e.idx); + if (PUB.dio.IsInit == false || PUB.flag.get(eVarBool.FG_DEBUG) == true) + { + //임시시그널 + var dlg = UTIL.MsgQ("Do you want to create a virtual signal?"); + if (dlg == System.Windows.Forms.DialogResult.Yes) + { + PUB.dio.RaiseEvent(eIOPINDIR.INPUT, e.idx, newValue); + PUB.log.Add("fake di : " + e.idx.ToString() + ",val=" + newValue.ToString()); + } + } + } + + //void flag_ValueChanged(object sender, AR.InterfaceValueEventArgs e) + //{ + // //var butIndex = getControlIndex(e.ArrIDX); + // //if (butIndex >= this.tblFG.Controls.Count) return; + + // //해당 아이템의 값을 변경하고 다시 그린다. + // if (tblFG.setValue((int)e.ArrIDX, e.NewValue)) + // tblFG.Invalidate();//.drawItem(e.ArrIDX); + //} + + + void dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e) + { + //var butIndex = getControlIndex(e.ArrIDX); + if (e.Direction == eIOPINDIR.INPUT) + { + //해당 아이템의 값을 변경하고 다시 그린다. + if (tblDI.setValue(e.ArrIDX, e.NewValue)) + tblDI.Invalidate();//.drawItem(e.ArrIDX); + } + else + { + //해당 아이템의 값을 변경하고 다시 그린다. + if (tblDO.setValue(e.ArrIDX, e.NewValue)) + tblDO.Invalidate();//.drawItem(e.ArrIDX); + } + } + + + private void tmDisplay_Tick(object sender, EventArgs e) + { + if (this.tabControl1.SelectedIndex == 2) + { + //flag + //var fvalue = PUB.flag.Value(); + //lbTitle3.Text = "FLAG(" + fvalue.HexString() + ")"; + //for (int i = 0; i < 128; i++) + // tblFG.setValue((int)i, PUB.flag.get(i)); + //tblFG.Invalidate(); + } + else if (this.tabControl1.SelectedIndex == 3) + { + //inter lock + for (uint i = 0; i < PUB.iLock.Length; i++) + { + var axis = (eAxis)i; + var axisname = axis.ToString(); + if (axisname.Equals(i.ToString())) + { + axisname = PUB.iLock[i].Tag.ToString(); + } + this.lbILog[i].Text = string.Format("{0}({1})", axisname, PUB.iLock[i].Value().HexString()); + } + } + } + + private void lbTitle1_Click(object sender, EventArgs e) + { + //input list + var fn = "descin.txt"; + var sb = new System.Text.StringBuilder(); + sb.AppendLine("No\tTitle\tDesc"); + foreach (var item in Enum.GetValues(typeof(eDIName))) + { + var em = (eDIName)item; + var dr = PUB.mdm.dataSet.InputDescription.Where(t => t.Idx == (int)em).FirstOrDefault(); + var pinNo = $"X{(int)em:X2}"; + var pinTitle = item.ToString(); + var Desc = dr == null ? "" : dr.Description; + sb.Append(pinNo); + sb.Append("\t"); + sb.Append(pinTitle); + sb.Append("\t"); + sb.Append(Desc); + sb.AppendLine(); + } + System.IO.File.WriteAllText(fn, sb.ToString(), System.Text.Encoding.Default); + UTIL.RunExplorer(fn); + } + + private void arLabel2_Click(object sender, EventArgs e) + { + //oputput list + var fn = "descout.txt"; + var sb = new System.Text.StringBuilder(); + sb.AppendLine("No\tTitle\tDesc"); + foreach (var item in Enum.GetValues(typeof(eDOName))) + { + var em = (eDOName)item; + var itemidx = (int)em; + var dr = PUB.mdm.dataSet.OutputDescription.Where(t => t.Idx == itemidx).FirstOrDefault(); + var pinNo = $"Y{(int)em:X2}"; + var pinTitle = item.ToString(); + var Desc = dr == null ? "" : dr.Description; + sb.Append(pinNo); + sb.Append("\t"); + sb.Append(pinTitle); + sb.Append("\t"); + sb.Append(Desc); + sb.AppendLine(); + } + System.IO.File.WriteAllText(fn, sb.ToString(), System.Text.Encoding.Default); + UTIL.RunExplorer(fn); + } + + private void pinDefineToolStripMenuItem_Click(object sender, EventArgs e) + { + var f = new fSetting_IOMessage(); + f.ShowDialog(); + + + tblDI.setTitle(DIO.Pin.GetDIName); + tblDO.setTitle(DIO.Pin.GetDOName); + tblDI.setNames(DIO.Pin.GetDIPinName); + tblDO.setNames(DIO.Pin.GetDOPinName); + tblDI.Invalidate(); + tblDO.Invalidate(); + } + } +} diff --git a/Handler/Project/Dialog/DIOMonitor.resx b/Handler/Project/Dialog/DIOMonitor.resx new file mode 100644 index 0000000..8100324 --- /dev/null +++ b/Handler/Project/Dialog/DIOMonitor.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 124, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/Debug/fSendInboutData.Designer.cs b/Handler/Project/Dialog/Debug/fSendInboutData.Designer.cs new file mode 100644 index 0000000..0fbc195 --- /dev/null +++ b/Handler/Project/Dialog/Debug/fSendInboutData.Designer.cs @@ -0,0 +1,395 @@ + +namespace Project.Dialog.Debug +{ + partial class fSendInboutData + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.tbsid = new System.Windows.Forms.TextBox(); + this.tbrid = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.tbvname = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.tblot = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.tbpart = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.tbbatch = new System.Windows.Forms.TextBox(); + this.tbbadge = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.tbinch = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.tbmfg = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.tbqty = new System.Windows.Forms.TextBox(); + this.tbeqid = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.tbeqname = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.tboper = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.dv1 = new arCtl.arDatagridView(); + this.button2 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(37, 28); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(22, 12); + this.label1.TabIndex = 0; + this.label1.Text = "sid"; + // + // tbsid + // + this.tbsid.Location = new System.Drawing.Point(69, 25); + this.tbsid.Name = "tbsid"; + this.tbsid.Size = new System.Drawing.Size(261, 21); + this.tbsid.TabIndex = 1; + this.tbsid.Text = "103000000"; + this.tbsid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tbrid + // + this.tbrid.Location = new System.Drawing.Point(69, 131); + this.tbrid.Name = "tbrid"; + this.tbrid.Size = new System.Drawing.Size(261, 21); + this.tbrid.TabIndex = 3; + this.tbrid.Text = "RCTEST000000000"; + this.tbrid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(40, 134); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(19, 12); + this.label2.TabIndex = 2; + this.label2.Text = "rid"; + // + // tbvname + // + this.tbvname.Location = new System.Drawing.Point(69, 77); + this.tbvname.Name = "tbvname"; + this.tbvname.Size = new System.Drawing.Size(261, 21); + this.tbvname.TabIndex = 7; + this.tbvname.Text = "v.name"; + this.tbvname.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(16, 80); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(43, 12); + this.label3.TabIndex = 6; + this.label3.Text = "vname"; + // + // tblot + // + this.tblot.Location = new System.Drawing.Point(69, 52); + this.tblot.Name = "tblot"; + this.tblot.Size = new System.Drawing.Size(261, 21); + this.tblot.TabIndex = 5; + this.tblot.Text = "v.lot"; + this.tblot.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(41, 55); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(18, 12); + this.label4.TabIndex = 4; + this.label4.Text = "lot"; + // + // tbpart + // + this.tbpart.Location = new System.Drawing.Point(69, 185); + this.tbpart.Name = "tbpart"; + this.tbpart.Size = new System.Drawing.Size(261, 21); + this.tbpart.TabIndex = 9; + this.tbpart.Text = "part"; + this.tbpart.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(33, 188); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(26, 12); + this.label5.TabIndex = 8; + this.label5.Text = "part"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(23, 223); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(36, 12); + this.label6.TabIndex = 8; + this.label6.Text = "batch"; + // + // tbbatch + // + this.tbbatch.Location = new System.Drawing.Point(69, 220); + this.tbbatch.Name = "tbbatch"; + this.tbbatch.Size = new System.Drawing.Size(261, 21); + this.tbbatch.TabIndex = 9; + this.tbbatch.Text = "batch"; + this.tbbatch.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tbbadge + // + this.tbbadge.Location = new System.Drawing.Point(69, 247); + this.tbbadge.Name = "tbbadge"; + this.tbbadge.Size = new System.Drawing.Size(261, 21); + this.tbbadge.TabIndex = 11; + this.tbbadge.Text = "badge"; + this.tbbadge.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(19, 250); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(40, 12); + this.label7.TabIndex = 10; + this.label7.Text = "badge"; + // + // tbinch + // + this.tbinch.Location = new System.Drawing.Point(69, 274); + this.tbinch.Name = "tbinch"; + this.tbinch.Size = new System.Drawing.Size(261, 21); + this.tbinch.TabIndex = 13; + this.tbinch.Text = "7"; + this.tbinch.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(30, 277); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(29, 12); + this.label8.TabIndex = 12; + this.label8.Text = "inch"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(33, 161); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(26, 12); + this.label9.TabIndex = 8; + this.label9.Text = "mfg"; + // + // tbmfg + // + this.tbmfg.Location = new System.Drawing.Point(69, 158); + this.tbmfg.Name = "tbmfg"; + this.tbmfg.Size = new System.Drawing.Size(261, 21); + this.tbmfg.TabIndex = 9; + this.tbmfg.Text = "2325"; + this.tbmfg.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(37, 107); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(22, 12); + this.label10.TabIndex = 8; + this.label10.Text = "qty"; + // + // tbqty + // + this.tbqty.Location = new System.Drawing.Point(69, 104); + this.tbqty.Name = "tbqty"; + this.tbqty.Size = new System.Drawing.Size(261, 21); + this.tbqty.TabIndex = 9; + this.tbqty.Text = "1000"; + this.tbqty.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // tbeqid + // + this.tbeqid.Location = new System.Drawing.Point(69, 301); + this.tbeqid.Name = "tbeqid"; + this.tbeqid.Size = new System.Drawing.Size(100, 21); + this.tbeqid.TabIndex = 15; + this.tbeqid.Text = "R0"; + this.tbeqid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(40, 304); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(19, 12); + this.label11.TabIndex = 14; + this.label11.Text = "eq"; + // + // tbeqname + // + this.tbeqname.Location = new System.Drawing.Point(175, 301); + this.tbeqname.Name = "tbeqname"; + this.tbeqname.Size = new System.Drawing.Size(155, 21); + this.tbeqname.TabIndex = 15; + this.tbeqname.Text = "eq name"; + this.tbeqname.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(29, 331); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(30, 12); + this.label12.TabIndex = 12; + this.label12.Text = "oper"; + // + // tboper + // + this.tboper.Location = new System.Drawing.Point(69, 328); + this.tboper.Name = "tboper"; + this.tboper.Size = new System.Drawing.Size(261, 21); + this.tboper.TabIndex = 13; + this.tboper.Text = "chi"; + this.tboper.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(350, 25); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(98, 324); + this.button1.TabIndex = 16; + this.button1.Text = "post"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // dv1 + // + this.dv1.A_DelCurrentCell = true; + this.dv1.A_EnterToTab = true; + this.dv1.A_KoreanField = null; + this.dv1.A_UpperField = null; + this.dv1.A_ViewRownumOnHeader = true; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Location = new System.Drawing.Point(474, 25); + this.dv1.Name = "dv1"; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(496, 324); + this.dv1.TabIndex = 17; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(474, 355); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(496, 44); + this.button2.TabIndex = 18; + this.button2.Text = "Read"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // fSendInboutData + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(997, 407); + this.Controls.Add(this.button2); + this.Controls.Add(this.dv1); + this.Controls.Add(this.button1); + this.Controls.Add(this.tbeqname); + this.Controls.Add(this.tbeqid); + this.Controls.Add(this.label11); + this.Controls.Add(this.tboper); + this.Controls.Add(this.label12); + this.Controls.Add(this.tbinch); + this.Controls.Add(this.label8); + this.Controls.Add(this.tbbadge); + this.Controls.Add(this.label7); + this.Controls.Add(this.tbbatch); + this.Controls.Add(this.label6); + this.Controls.Add(this.tbqty); + this.Controls.Add(this.label10); + this.Controls.Add(this.tbmfg); + this.Controls.Add(this.label9); + this.Controls.Add(this.tbpart); + this.Controls.Add(this.label5); + this.Controls.Add(this.tbvname); + this.Controls.Add(this.label3); + this.Controls.Add(this.tblot); + this.Controls.Add(this.label4); + this.Controls.Add(this.tbrid); + this.Controls.Add(this.label2); + this.Controls.Add(this.tbsid); + this.Controls.Add(this.label1); + this.Name = "fSendInboutData"; + this.Text = "fSendInboutData"; + this.Load += new System.EventHandler(this.fSendInboutData_Load); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tbsid; + private System.Windows.Forms.TextBox tbrid; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tbvname; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tblot; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tbpart; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tbbatch; + private System.Windows.Forms.TextBox tbbadge; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tbinch; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tbmfg; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox tbqty; + private System.Windows.Forms.TextBox tbeqid; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox tbeqname; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.TextBox tboper; + private System.Windows.Forms.Button button1; + private arCtl.arDatagridView dv1; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/Debug/fSendInboutData.cs b/Handler/Project/Dialog/Debug/fSendInboutData.cs new file mode 100644 index 0000000..d9f9187 --- /dev/null +++ b/Handler/Project/Dialog/Debug/fSendInboutData.cs @@ -0,0 +1,69 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog.Debug +{ + public partial class fSendInboutData : Form + { + public fSendInboutData() + { + InitializeComponent(); + } + + public class reelinfo + { + public string ReelId { get; set; } + public string C { get; set; } + public reelinfo() + { + + } + } + private void button1_Click(object sender, EventArgs e) + { + //post + + var reelinfo = new + { + AMKOR_SID = tbsid.Text, + AMKOR_BATCH = tbbatch.Text, + REEL_ID = tbrid.Text, + REEL_VENDOR_LOT = tblot.Text, + REEL_AMKOR_SID = tbsid.Text, + REEL_QTY = tbqty.Text, + REEL_MANUFACTURER = tbvname.Text, + REEL_PRODUCTION_DATE = tbmfg.Text, + REEL_INCH_INFO = tbinch.Text, + REEL_PART_NUM = tbpart.Text, + EQP_ID = tbeqid.Text, + EQP_NAME = tbeqname.Text, + BADGE = tbbadge.Text, + OPER_NAME = tboper.Text, + HOST_NAME = System.Net.Dns.GetHostEntry("").HostName, + }; + UTIL.MsgE("Not supported"); + //var rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out string errmsg); + //if (rlt == false) UTIL.MsgE(errmsg); + + } + + private void button2_Click(object sender, EventArgs e) + { + //read + } + + private void fSendInboutData_Load(object sender, EventArgs e) + { + tbeqid.Text = AR.SETTING.Data.MCID; + tbeqname.Text = $"Label Attach {tbeqid.Text}"; + } + } +} diff --git a/Handler/Project/Dialog/Debug/fSendInboutData.resx b/Handler/Project/Dialog/Debug/fSendInboutData.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/Debug/fSendInboutData.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/Model_Motion.Designer.cs b/Handler/Project/Dialog/Model_Motion.Designer.cs new file mode 100644 index 0000000..a0c138d --- /dev/null +++ b/Handler/Project/Dialog/Model_Motion.Designer.cs @@ -0,0 +1,1734 @@ +namespace Project +{ + partial class Model_Motion + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Model_Motion)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); + this.ds1 = new Project.DataSet1(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.dvPosition = new arCtl.arDatagridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.pidx = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MotIndex = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PosIndex = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.posTitleDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Description = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.btPos = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btspeed = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btacc = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btdcc = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btGo = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btSet = new System.Windows.Forms.DataGridViewButtonColumn(); + this.bsPosData = new System.Windows.Forms.BindingSource(this.components); + this.bn = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.btJogLeft = new arFrame.Control.MotCommandButton(); + this.btJogStop = new arFrame.Control.MotCommandButton(); + this.btJogDn = new arFrame.Control.MotCommandButton(); + this.btJogUp = new arFrame.Control.MotCommandButton(); + this.button5 = new arFrame.Control.MotCommandButton(); + this.btPClear = new arFrame.Control.MotCommandButton(); + this.btSVY = new arFrame.Control.MotCommandButton(); + this.btAClear = new arFrame.Control.MotCommandButton(); + this.btJogRight = new arFrame.Control.MotCommandButton(); + this.panel7 = new System.Windows.Forms.Panel(); + this.nudPosRel = new arFrame.Control.MotValueNumericUpDown(); + this.button3 = new arFrame.Control.MotCommandButton(); + this.linkLabel11 = new arFrame.Control.MotLinkLabel(); + this.panel14 = new System.Windows.Forms.Panel(); + this.chkJogMoveForce = new System.Windows.Forms.CheckBox(); + this.panel8 = new System.Windows.Forms.Panel(); + this.nudPosAbs = new arFrame.Control.MotValueNumericUpDown(); + this.button1 = new arFrame.Control.MotCommandButton(); + this.linkLabel10 = new arFrame.Control.MotLinkLabel(); + this.panel11 = new System.Windows.Forms.Panel(); + this.nudJogVel = new arFrame.Control.MotValueNumericUpDown(); + this.linkLabel8 = new arFrame.Control.MotLinkLabel(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage7 = new System.Windows.Forms.TabPage(); + this.RtLog = new arCtl.LogTextBox(); + this.tabControl3 = new System.Windows.Forms.TabControl(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.dvMot = new arCtl.arDatagridView(); + this.dvc_axis = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_desc = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.nudJogAcc = new arFrame.Control.MotValueNumericUpDown(); + this.motLinkLabel1 = new arFrame.Control.MotLinkLabel(); + this.panLeft = new System.Windows.Forms.Panel(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.tabControl4 = new System.Windows.Forms.TabControl(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.panel2 = new System.Windows.Forms.Panel(); + this.linkLabel6 = new System.Windows.Forms.LinkLabel(); + this.linkLabel5 = new System.Windows.Forms.LinkLabel(); + this.linkLabel4 = new System.Windows.Forms.LinkLabel(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.label1 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.lbModelTitle = new arCtl.arLabel(); + this.panel6 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tabControl5 = new System.Windows.Forms.TabControl(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.splitH = new System.Windows.Forms.Panel(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.btAdd = new System.Windows.Forms.ToolStripButton(); + this.btEdit = new System.Windows.Forms.ToolStripButton(); + this.btDel = new System.Windows.Forms.ToolStripButton(); + this.btSave = new System.Windows.Forms.ToolStripButton(); + this.btCopy = new System.Windows.Forms.ToolStripButton(); + this.btSelect = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton11 = new System.Windows.Forms.ToolStripSplitButton(); + this.그룹설정ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + ((System.ComponentModel.ISupportInitialize)(this.ds1)).BeginInit(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvPosition)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPosData)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit(); + this.bn.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel7.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudPosRel)).BeginInit(); + this.panel14.SuspendLayout(); + this.panel8.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudPosAbs)).BeginInit(); + this.panel11.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudJogVel)).BeginInit(); + this.tabControl2.SuspendLayout(); + this.tabPage7.SuspendLayout(); + this.tabControl3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvMot)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudJogAcc)).BeginInit(); + this.panLeft.SuspendLayout(); + this.tabControl4.SuspendLayout(); + this.tabPage4.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel3.SuspendLayout(); + this.tabControl5.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // ds1 + // + this.ds1.DataSetName = "DataSet1"; + this.ds1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(711, 449); + this.tabControl1.TabIndex = 141; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.dvPosition); + this.tabPage1.Controls.Add(this.bn); + this.tabPage1.Location = new System.Drawing.Point(4, 27); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(703, 418); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Position"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // dvPosition + // + this.dvPosition.A_DelCurrentCell = true; + this.dvPosition.A_EnterToTab = true; + this.dvPosition.A_KoreanField = null; + this.dvPosition.A_UpperField = null; + this.dvPosition.A_ViewRownumOnHeader = true; + this.dvPosition.AllowUserToAddRows = false; + this.dvPosition.AllowUserToDeleteRows = false; + this.dvPosition.AllowUserToResizeColumns = false; + this.dvPosition.AllowUserToResizeRows = false; + this.dvPosition.AutoGenerateColumns = false; + this.dvPosition.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dvPosition.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dvPosition.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.pidx, + this.MotIndex, + this.PosIndex, + this.posTitleDataGridViewTextBoxColumn1, + this.Description, + this.btPos, + this.btspeed, + this.btacc, + this.btdcc, + this.btGo, + this.btSet}); + this.dvPosition.DataSource = this.bsPosData; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle6.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dvPosition.DefaultCellStyle = dataGridViewCellStyle6; + this.dvPosition.Dock = System.Windows.Forms.DockStyle.Fill; + this.dvPosition.Location = new System.Drawing.Point(3, 3); + this.dvPosition.Name = "dvPosition"; + this.dvPosition.ReadOnly = true; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle7.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle7.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle7.ForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dvPosition.RowHeadersDefaultCellStyle = dataGridViewCellStyle7; + this.dvPosition.RowHeadersVisible = false; + this.dvPosition.RowTemplate.DefaultCellStyle.BackColor = System.Drawing.Color.White; + this.dvPosition.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.dvPosition.RowTemplate.DefaultCellStyle.ForeColor = System.Drawing.Color.Black; + this.dvPosition.RowTemplate.DefaultCellStyle.Padding = new System.Windows.Forms.Padding(2); + this.dvPosition.RowTemplate.Height = 50; + this.dvPosition.Size = new System.Drawing.Size(697, 387); + this.dvPosition.TabIndex = 140; + this.dvPosition.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.arDatagridView2_CellClick); + this.dvPosition.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dvPosition_DataError); + // + // Column1 + // + this.Column1.DataPropertyName = "idx"; + this.Column1.HeaderText = "idx"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + this.Column1.Visible = false; + this.Column1.Width = 33; + // + // pidx + // + this.pidx.DataPropertyName = "pidx"; + this.pidx.HeaderText = "pidx"; + this.pidx.Name = "pidx"; + this.pidx.ReadOnly = true; + this.pidx.Visible = false; + this.pidx.Width = 41; + // + // MotIndex + // + this.MotIndex.DataPropertyName = "MotIndex"; + this.MotIndex.HeaderText = "MotIndex"; + this.MotIndex.Name = "MotIndex"; + this.MotIndex.ReadOnly = true; + this.MotIndex.Visible = false; + this.MotIndex.Width = 74; + // + // PosIndex + // + this.PosIndex.DataPropertyName = "PosIndex"; + this.PosIndex.HeaderText = "PosIndex"; + this.PosIndex.Name = "PosIndex"; + this.PosIndex.ReadOnly = true; + this.PosIndex.Visible = false; + this.PosIndex.Width = 71; + // + // posTitleDataGridViewTextBoxColumn1 + // + this.posTitleDataGridViewTextBoxColumn1.DataPropertyName = "PosTitle"; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.posTitleDataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle1; + this.posTitleDataGridViewTextBoxColumn1.HeaderText = "Title"; + this.posTitleDataGridViewTextBoxColumn1.Name = "posTitleDataGridViewTextBoxColumn1"; + this.posTitleDataGridViewTextBoxColumn1.ReadOnly = true; + this.posTitleDataGridViewTextBoxColumn1.Width = 61; + // + // Description + // + this.Description.DataPropertyName = "Description"; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.Font = new System.Drawing.Font("맑은 고딕", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Description.DefaultCellStyle = dataGridViewCellStyle2; + this.Description.HeaderText = "Description"; + this.Description.Name = "Description"; + this.Description.ReadOnly = true; + this.Description.Width = 103; + // + // btPos + // + this.btPos.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btPos.DataPropertyName = "Position"; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle3.Format = "N3"; + this.btPos.DefaultCellStyle = dataGridViewCellStyle3; + this.btPos.HeaderText = "Position"; + this.btPos.Name = "btPos"; + this.btPos.ReadOnly = true; + this.btPos.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btPos.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // btspeed + // + this.btspeed.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btspeed.DataPropertyName = "Speed"; + this.btspeed.HeaderText = "Speed"; + this.btspeed.Name = "btspeed"; + this.btspeed.ReadOnly = true; + this.btspeed.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btspeed.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.btspeed.Width = 50; + // + // btacc + // + this.btacc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btacc.DataPropertyName = "SpeedAcc"; + this.btacc.HeaderText = "Acc"; + this.btacc.Name = "btacc"; + this.btacc.ReadOnly = true; + this.btacc.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btacc.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.btacc.Text = "Acc"; + this.btacc.Width = 50; + // + // btdcc + // + this.btdcc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btdcc.DataPropertyName = "SpeedDcc"; + this.btdcc.HeaderText = "Dcc"; + this.btdcc.Name = "btdcc"; + this.btdcc.ReadOnly = true; + this.btdcc.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btdcc.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.btdcc.Text = "Dcc"; + this.btdcc.Width = 50; + // + // btGo + // + this.btGo.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.btGo.DefaultCellStyle = dataGridViewCellStyle4; + this.btGo.HeaderText = "Go"; + this.btGo.Name = "btGo"; + this.btGo.ReadOnly = true; + this.btGo.Text = "Go"; + this.btGo.Width = 50; + // + // btSet + // + this.btSet.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.Blue; + this.btSet.DefaultCellStyle = dataGridViewCellStyle5; + this.btSet.HeaderText = "Set"; + this.btSet.Name = "btSet"; + this.btSet.ReadOnly = true; + this.btSet.Text = "Set"; + this.btSet.Width = 50; + // + // bsPosData + // + this.bsPosData.DataMember = "MCModel"; + this.bsPosData.DataSource = this.ds1; + this.bsPosData.Sort = "PosTitle,idx"; + // + // bn + // + this.bn.AddNewItem = null; + this.bn.BindingSource = this.bsPosData; + this.bn.CountItem = this.bindingNavigatorCountItem; + this.bn.DeleteItem = null; + this.bn.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.toolStripButton1, + this.toolStripButton2, + this.toolStripButton3, + this.toolStripSeparator1}); + this.bn.Location = new System.Drawing.Point(3, 390); + this.bn.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bn.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bn.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bn.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bn.Name = "bn"; + this.bn.PositionItem = this.bindingNavigatorPositionItem; + this.bn.Size = new System.Drawing.Size(697, 25); + this.bn.TabIndex = 141; + this.bn.Text = "bindingNavigator1"; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.ForeColor = System.Drawing.Color.Black; + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(26, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total item count"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move to first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move to previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F); + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move to next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move to last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton1 + // + this.toolStripButton1.ForeColor = System.Drawing.Color.Black; + this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(59, 22); + this.toolStripButton1.Text = "Speed"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // toolStripButton2 + // + this.toolStripButton2.ForeColor = System.Drawing.Color.Black; + this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(93, 22); + this.toolStripButton2.Text = "Acceleration"; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click_2); + // + // toolStripButton3 + // + this.toolStripButton3.ForeColor = System.Drawing.Color.Black; + this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image"))); + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(93, 22); + this.toolStripButton3.Text = "Deceleration"; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click_1); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 3; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel1.Controls.Add(this.btJogLeft, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.btJogStop, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.btJogDn, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.btJogUp, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.button5, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.btPClear, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.btSVY, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.btAClear, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.btJogRight, 2, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 123); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(224, 247); + this.tableLayoutPanel1.TabIndex = 2; + // + // btJogLeft + // + this.btJogLeft.BackColor = System.Drawing.Color.Turquoise; + this.btJogLeft.Dock = System.Windows.Forms.DockStyle.Fill; + this.btJogLeft.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.btJogLeft.ForeColor = System.Drawing.Color.Red; + this.btJogLeft.Location = new System.Drawing.Point(1, 83); + this.btJogLeft.Margin = new System.Windows.Forms.Padding(0); + this.btJogLeft.motAccControl = null; + this.btJogLeft.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btJogLeft.motSpdControl = null; + this.btJogLeft.motValueControl = null; + this.btJogLeft.Name = "btJogLeft"; + this.btJogLeft.Size = new System.Drawing.Size(73, 81); + this.btJogLeft.TabIndex = 0; + this.btJogLeft.Tag = "CCW"; + this.btJogLeft.Text = "NEG(-)"; + this.toolTip1.SetToolTip(this.btJogLeft, "Reverse direction movement"); + this.btJogLeft.UseVisualStyleBackColor = false; + this.btJogLeft.Click += new System.EventHandler(this.btJogLeft_Click); + this.btJogLeft.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogDown_Click); + this.btJogLeft.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btJogUp_Click); + // + // btJogStop + // + this.btJogStop.Dock = System.Windows.Forms.DockStyle.Fill; + this.btJogStop.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold); + this.btJogStop.ForeColor = System.Drawing.Color.Black; + this.btJogStop.Location = new System.Drawing.Point(75, 83); + this.btJogStop.Margin = new System.Windows.Forms.Padding(0); + this.btJogStop.motAccControl = null; + this.btJogStop.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btJogStop.motSpdControl = null; + this.btJogStop.motValueControl = null; + this.btJogStop.Name = "btJogStop"; + this.btJogStop.Size = new System.Drawing.Size(73, 81); + this.btJogStop.TabIndex = 0; + this.btJogStop.Tag = "STOP"; + this.btJogStop.Text = "■"; + this.toolTip1.SetToolTip(this.btJogStop, "Emergency stop"); + this.btJogStop.UseVisualStyleBackColor = true; + this.btJogStop.Click += new System.EventHandler(this.btJogStop_Click); + // + // btJogDn + // + this.btJogDn.BackColor = System.Drawing.Color.Turquoise; + this.btJogDn.Dock = System.Windows.Forms.DockStyle.Fill; + this.btJogDn.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.btJogDn.ForeColor = System.Drawing.Color.Blue; + this.btJogDn.Location = new System.Drawing.Point(75, 165); + this.btJogDn.Margin = new System.Windows.Forms.Padding(0); + this.btJogDn.motAccControl = null; + this.btJogDn.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btJogDn.motSpdControl = null; + this.btJogDn.motValueControl = null; + this.btJogDn.Name = "btJogDn"; + this.btJogDn.Size = new System.Drawing.Size(73, 81); + this.btJogDn.TabIndex = 0; + this.btJogDn.Tag = "CW"; + this.btJogDn.Text = "POS(+)"; + this.toolTip1.SetToolTip(this.btJogDn, "Forward direction movement"); + this.btJogDn.UseVisualStyleBackColor = false; + this.btJogDn.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogDown_Click); + this.btJogDn.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btJogUp_Click); + // + // btJogUp + // + this.btJogUp.BackColor = System.Drawing.Color.Turquoise; + this.btJogUp.Dock = System.Windows.Forms.DockStyle.Fill; + this.btJogUp.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.btJogUp.ForeColor = System.Drawing.Color.Red; + this.btJogUp.Location = new System.Drawing.Point(75, 1); + this.btJogUp.Margin = new System.Windows.Forms.Padding(0); + this.btJogUp.motAccControl = null; + this.btJogUp.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btJogUp.motSpdControl = null; + this.btJogUp.motValueControl = null; + this.btJogUp.Name = "btJogUp"; + this.btJogUp.Size = new System.Drawing.Size(73, 81); + this.btJogUp.TabIndex = 0; + this.btJogUp.Tag = "CCW"; + this.btJogUp.Text = "NEG(-)"; + this.toolTip1.SetToolTip(this.btJogUp, "Reverse direction movement"); + this.btJogUp.UseVisualStyleBackColor = false; + this.btJogUp.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogDown_Click); + this.btJogUp.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btJogUp_Click); + // + // button5 + // + this.button5.Dock = System.Windows.Forms.DockStyle.Fill; + this.button5.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.button5.ForeColor = System.Drawing.Color.Black; + this.button5.Location = new System.Drawing.Point(1, 165); + this.button5.Margin = new System.Windows.Forms.Padding(0); + this.button5.motAccControl = null; + this.button5.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.button5.motSpdControl = null; + this.button5.motValueControl = null; + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(73, 81); + this.button5.TabIndex = 3; + this.button5.Text = "Home\r\nSearch"; + this.toolTip1.SetToolTip(this.button5, "Execute home search"); + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.btJogHome_Click); + // + // btPClear + // + this.btPClear.Dock = System.Windows.Forms.DockStyle.Fill; + this.btPClear.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.btPClear.ForeColor = System.Drawing.Color.Black; + this.btPClear.Location = new System.Drawing.Point(149, 165); + this.btPClear.Margin = new System.Windows.Forms.Padding(0); + this.btPClear.motAccControl = null; + this.btPClear.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btPClear.motSpdControl = null; + this.btPClear.motValueControl = null; + this.btPClear.Name = "btPClear"; + this.btPClear.Size = new System.Drawing.Size(74, 81); + this.btPClear.TabIndex = 3; + this.btPClear.Text = "Position\r\nReset"; + this.toolTip1.SetToolTip(this.btPClear, "Reset current position"); + this.btPClear.UseVisualStyleBackColor = true; + this.btPClear.Click += new System.EventHandler(this.btJogPClear_Click); + // + // btSVY + // + this.btSVY.Dock = System.Windows.Forms.DockStyle.Fill; + this.btSVY.Font = new System.Drawing.Font("Calibri", 10F); + this.btSVY.ForeColor = System.Drawing.Color.Black; + this.btSVY.Location = new System.Drawing.Point(1, 1); + this.btSVY.Margin = new System.Windows.Forms.Padding(0); + this.btSVY.motAccControl = null; + this.btSVY.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btSVY.motSpdControl = null; + this.btSVY.motValueControl = null; + this.btSVY.Name = "btSVY"; + this.btSVY.Size = new System.Drawing.Size(73, 81); + this.btSVY.TabIndex = 4; + this.btSVY.Text = "SVON"; + this.toolTip1.SetToolTip(this.btSVY, "Servo ON/OFF"); + this.btSVY.UseVisualStyleBackColor = true; + this.btSVY.Click += new System.EventHandler(this.btJogSVon_Click); + // + // btAClear + // + this.btAClear.Dock = System.Windows.Forms.DockStyle.Fill; + this.btAClear.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.btAClear.ForeColor = System.Drawing.Color.Black; + this.btAClear.Location = new System.Drawing.Point(149, 1); + this.btAClear.Margin = new System.Windows.Forms.Padding(0); + this.btAClear.motAccControl = null; + this.btAClear.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btAClear.motSpdControl = null; + this.btAClear.motValueControl = null; + this.btAClear.Name = "btAClear"; + this.btAClear.Size = new System.Drawing.Size(74, 81); + this.btAClear.TabIndex = 4; + this.btAClear.Text = "Alarm\r\nClear"; + this.toolTip1.SetToolTip(this.btAClear, "Clear servo alarm"); + this.btAClear.UseVisualStyleBackColor = true; + this.btAClear.Click += new System.EventHandler(this.btJogAClear_Click); + // + // btJogRight + // + this.btJogRight.BackColor = System.Drawing.Color.Turquoise; + this.btJogRight.Dock = System.Windows.Forms.DockStyle.Fill; + this.btJogRight.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.btJogRight.ForeColor = System.Drawing.Color.Blue; + this.btJogRight.Location = new System.Drawing.Point(149, 83); + this.btJogRight.Margin = new System.Windows.Forms.Padding(0); + this.btJogRight.motAccControl = null; + this.btJogRight.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btJogRight.motSpdControl = null; + this.btJogRight.motValueControl = null; + this.btJogRight.Name = "btJogRight"; + this.btJogRight.Size = new System.Drawing.Size(74, 81); + this.btJogRight.TabIndex = 0; + this.btJogRight.Tag = "CW"; + this.btJogRight.Text = "POS(+)"; + this.toolTip1.SetToolTip(this.btJogRight, "Forward direction movement"); + this.btJogRight.UseVisualStyleBackColor = false; + this.btJogRight.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogDown_Click); + this.btJogRight.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btJogUp_Click); + // + // panel7 + // + this.panel7.Controls.Add(this.nudPosRel); + this.panel7.Controls.Add(this.button3); + this.panel7.Controls.Add(this.linkLabel11); + this.panel7.Dock = System.Windows.Forms.DockStyle.Top; + this.panel7.Location = new System.Drawing.Point(3, 63); + this.panel7.Name = "panel7"; + this.panel7.Padding = new System.Windows.Forms.Padding(2); + this.panel7.Size = new System.Drawing.Size(224, 30); + this.panel7.TabIndex = 61; + // + // nudPosRel + // + this.nudPosRel.DecimalPlaces = 3; + this.nudPosRel.Dock = System.Windows.Forms.DockStyle.Fill; + this.nudPosRel.Location = new System.Drawing.Point(79, 2); + this.nudPosRel.Maximum = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this.nudPosRel.Minimum = new decimal(new int[] { + 99999999, + 0, + 0, + -2147483648}); + this.nudPosRel.MotionIndex = -1; + this.nudPosRel.Name = "nudPosRel"; + this.nudPosRel.Size = new System.Drawing.Size(98, 26); + this.nudPosRel.TabIndex = 50; + this.nudPosRel.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.nudPosRel, "Arbitrary position value to move. Press the GO button on the right to move"); + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Right; + this.button3.ForeColor = System.Drawing.Color.Black; + this.button3.Location = new System.Drawing.Point(177, 2); + this.button3.motAccControl = null; + this.button3.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.button3.motSpdControl = null; + this.button3.motValueControl = null; + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(45, 26); + this.button3.TabIndex = 51; + this.button3.Text = "Move"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click_1); + // + // linkLabel11 + // + this.linkLabel11.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel11.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel11.LinkColor = System.Drawing.Color.Blue; + this.linkLabel11.Location = new System.Drawing.Point(2, 2); + this.linkLabel11.motValueControl = this.nudPosRel; + this.linkLabel11.Name = "linkLabel11"; + this.linkLabel11.Size = new System.Drawing.Size(77, 26); + this.linkLabel11.TabIndex = 47; + this.linkLabel11.TabStop = true; + this.linkLabel11.Text = "REL.Value"; + this.linkLabel11.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.toolTip1.SetToolTip(this.linkLabel11, "Change value"); + this.linkLabel11.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel11_LinkClicked); + // + // panel14 + // + this.panel14.Controls.Add(this.chkJogMoveForce); + this.panel14.Dock = System.Windows.Forms.DockStyle.Top; + this.panel14.Location = new System.Drawing.Point(3, 370); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(224, 33); + this.panel14.TabIndex = 64; + // + // chkJogMoveForce + // + this.chkJogMoveForce.AutoSize = true; + this.chkJogMoveForce.Dock = System.Windows.Forms.DockStyle.Left; + this.chkJogMoveForce.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.chkJogMoveForce.ForeColor = System.Drawing.Color.Indigo; + this.chkJogMoveForce.Location = new System.Drawing.Point(0, 0); + this.chkJogMoveForce.Name = "chkJogMoveForce"; + this.chkJogMoveForce.Size = new System.Drawing.Size(94, 33); + this.chkJogMoveForce.TabIndex = 59; + this.chkJogMoveForce.Text = "Force Jog"; + this.chkJogMoveForce.UseVisualStyleBackColor = true; + this.chkJogMoveForce.Click += new System.EventHandler(this.chkJogMoveForce_Click); + // + // panel8 + // + this.panel8.Controls.Add(this.nudPosAbs); + this.panel8.Controls.Add(this.button1); + this.panel8.Controls.Add(this.linkLabel10); + this.panel8.Dock = System.Windows.Forms.DockStyle.Top; + this.panel8.Location = new System.Drawing.Point(3, 33); + this.panel8.Name = "panel8"; + this.panel8.Padding = new System.Windows.Forms.Padding(2); + this.panel8.Size = new System.Drawing.Size(224, 30); + this.panel8.TabIndex = 62; + // + // nudPosAbs + // + this.nudPosAbs.DecimalPlaces = 3; + this.nudPosAbs.Dock = System.Windows.Forms.DockStyle.Fill; + this.nudPosAbs.Location = new System.Drawing.Point(79, 2); + this.nudPosAbs.Maximum = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this.nudPosAbs.Minimum = new decimal(new int[] { + 99999999, + 0, + 0, + -2147483648}); + this.nudPosAbs.MotionIndex = -1; + this.nudPosAbs.Name = "nudPosAbs"; + this.nudPosAbs.Size = new System.Drawing.Size(98, 26); + this.nudPosAbs.TabIndex = 13; + this.nudPosAbs.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.nudPosAbs, "Arbitrary position value to move. Press the GO button on the right to move"); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.ForeColor = System.Drawing.Color.Black; + this.button1.Location = new System.Drawing.Point(177, 2); + this.button1.motAccControl = null; + this.button1.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.button1.motSpdControl = null; + this.button1.motValueControl = null; + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(45, 26); + this.button1.TabIndex = 51; + this.button1.Text = "Move"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // linkLabel10 + // + this.linkLabel10.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel10.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel10.LinkColor = System.Drawing.Color.Blue; + this.linkLabel10.Location = new System.Drawing.Point(2, 2); + this.linkLabel10.motValueControl = this.nudPosAbs; + this.linkLabel10.Name = "linkLabel10"; + this.linkLabel10.Size = new System.Drawing.Size(77, 26); + this.linkLabel10.TabIndex = 45; + this.linkLabel10.TabStop = true; + this.linkLabel10.Text = "ABS.Value"; + this.linkLabel10.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.toolTip1.SetToolTip(this.linkLabel10, "Change value"); + this.linkLabel10.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel10_LinkClicked); + // + // panel11 + // + this.panel11.Controls.Add(this.nudJogVel); + this.panel11.Controls.Add(this.linkLabel8); + this.panel11.Dock = System.Windows.Forms.DockStyle.Top; + this.panel11.Location = new System.Drawing.Point(3, 3); + this.panel11.Name = "panel11"; + this.panel11.Padding = new System.Windows.Forms.Padding(2); + this.panel11.Size = new System.Drawing.Size(224, 30); + this.panel11.TabIndex = 63; + // + // nudJogVel + // + this.nudJogVel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.nudJogVel.DecimalPlaces = 2; + this.nudJogVel.Dock = System.Windows.Forms.DockStyle.Fill; + this.nudJogVel.Location = new System.Drawing.Point(79, 2); + this.nudJogVel.Maximum = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this.nudJogVel.MotionIndex = -1; + this.nudJogVel.Name = "nudJogVel"; + this.nudJogVel.Size = new System.Drawing.Size(143, 26); + this.nudJogVel.TabIndex = 0; + this.nudJogVel.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.nudJogVel, "Jog mode movement speed"); + this.nudJogVel.Value = new decimal(new int[] { + 20, + 0, + 0, + 0}); + // + // linkLabel8 + // + this.linkLabel8.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel8.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel8.LinkColor = System.Drawing.Color.Blue; + this.linkLabel8.Location = new System.Drawing.Point(2, 2); + this.linkLabel8.motValueControl = this.nudJogVel; + this.linkLabel8.Name = "linkLabel8"; + this.linkLabel8.Size = new System.Drawing.Size(77, 26); + this.linkLabel8.TabIndex = 41; + this.linkLabel8.TabStop = true; + this.linkLabel8.Text = "JOG Speed"; + this.linkLabel8.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.toolTip1.SetToolTip(this.linkLabel8, "Change value"); + this.linkLabel8.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel8_LinkClicked); + // + // tabControl2 + // + this.tabControl2.Controls.Add(this.tabPage7); + this.tabControl2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tabControl2.Location = new System.Drawing.Point(0, 449); + this.tabControl2.Name = "tabControl2"; + this.tabControl2.SelectedIndex = 0; + this.tabControl2.Size = new System.Drawing.Size(711, 152); + this.tabControl2.TabIndex = 45; + // + // tabPage7 + // + this.tabPage7.Controls.Add(this.RtLog); + this.tabPage7.Location = new System.Drawing.Point(4, 27); + this.tabPage7.Margin = new System.Windows.Forms.Padding(0); + this.tabPage7.Name = "tabPage7"; + this.tabPage7.Size = new System.Drawing.Size(703, 121); + this.tabPage7.TabIndex = 0; + this.tabPage7.Text = "Log"; + this.tabPage7.UseVisualStyleBackColor = true; + // + // RtLog + // + this.RtLog.BackColor = System.Drawing.Color.Silver; + this.RtLog.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.RtLog.ColorList = new arCtl.sLogMessageColor[0]; + this.RtLog.DateFormat = "mm:ss"; + this.RtLog.DefaultColor = System.Drawing.Color.LightGray; + this.RtLog.Dock = System.Windows.Forms.DockStyle.Fill; + this.RtLog.EnableDisplayTimer = true; + this.RtLog.EnableGubunColor = true; + this.RtLog.Font = new System.Drawing.Font("맑은 고딕", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.RtLog.ListFormat = "[{0}] {1}"; + this.RtLog.Location = new System.Drawing.Point(0, 0); + this.RtLog.Margin = new System.Windows.Forms.Padding(0); + this.RtLog.MaxListCount = ((ushort)(200)); + this.RtLog.MaxTextLength = ((uint)(4000u)); + this.RtLog.MessageInterval = 50; + this.RtLog.Name = "RtLog"; + this.RtLog.Size = new System.Drawing.Size(703, 121); + this.RtLog.TabIndex = 42; + this.RtLog.Text = ""; + // + // tabControl3 + // + this.tabControl3.Controls.Add(this.tabPage2); + this.tabControl3.Dock = System.Windows.Forms.DockStyle.Right; + this.tabControl3.Location = new System.Drawing.Point(959, 5); + this.tabControl3.Name = "tabControl3"; + this.tabControl3.SelectedIndex = 0; + this.tabControl3.Size = new System.Drawing.Size(300, 920); + this.tabControl3.TabIndex = 142; + // + // tabPage2 + // + this.tabPage2.Location = new System.Drawing.Point(4, 27); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(292, 889); + this.tabPage2.TabIndex = 0; + this.tabPage2.Text = "Quick Control"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // dvMot + // + this.dvMot.A_DelCurrentCell = true; + this.dvMot.A_EnterToTab = true; + this.dvMot.A_KoreanField = null; + this.dvMot.A_UpperField = null; + this.dvMot.A_ViewRownumOnHeader = false; + this.dvMot.AllowUserToAddRows = false; + this.dvMot.AllowUserToDeleteRows = false; + this.dvMot.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dvMot.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dvMot.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dvc_axis, + this.Column10, + this.Column2, + this.Column3, + this.Column4, + this.Column5, + this.Column6, + this.Column7, + this.Column8, + this.Column9, + this.dvc_desc}); + dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle12.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dvMot.DefaultCellStyle = dataGridViewCellStyle12; + this.dvMot.Dock = System.Windows.Forms.DockStyle.Fill; + this.dvMot.Location = new System.Drawing.Point(3, 3); + this.dvMot.MultiSelect = false; + this.dvMot.Name = "dvMot"; + this.dvMot.ReadOnly = true; + this.dvMot.RowTemplate.Height = 23; + this.dvMot.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dvMot.Size = new System.Drawing.Size(697, 282); + this.dvMot.TabIndex = 36; + this.dvMot.SelectionChanged += new System.EventHandler(this.dvMot_SelectionChanged); + // + // dvc_axis + // + this.dvc_axis.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.dvc_axis.DefaultCellStyle = dataGridViewCellStyle8; + this.dvc_axis.HeaderText = "Axis"; + this.dvc_axis.Name = "dvc_axis"; + this.dvc_axis.ReadOnly = true; + this.dvc_axis.Width = 40; + // + // Column10 + // + this.Column10.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.Column10.DefaultCellStyle = dataGridViewCellStyle9; + this.Column10.HeaderText = "Name"; + this.Column10.Name = "Column10"; + this.Column10.ReadOnly = true; + this.Column10.Width = 180; + // + // Column2 + // + dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + this.Column2.DefaultCellStyle = dataGridViewCellStyle10; + this.Column2.HeaderText = "Cmd"; + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + // + // Column3 + // + dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + this.Column3.DefaultCellStyle = dataGridViewCellStyle11; + this.Column3.HeaderText = "Act"; + this.Column3.Name = "Column3"; + this.Column3.ReadOnly = true; + // + // Column4 + // + this.Column4.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column4.HeaderText = "Home"; + this.Column4.Name = "Column4"; + this.Column4.ReadOnly = true; + this.Column4.Width = 50; + // + // Column5 + // + this.Column5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column5.HeaderText = "-"; + this.Column5.Name = "Column5"; + this.Column5.ReadOnly = true; + this.Column5.Width = 50; + // + // Column6 + // + this.Column6.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column6.HeaderText = "+"; + this.Column6.Name = "Column6"; + this.Column6.ReadOnly = true; + this.Column6.Width = 50; + // + // Column7 + // + this.Column7.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column7.HeaderText = "Inp"; + this.Column7.Name = "Column7"; + this.Column7.ReadOnly = true; + this.Column7.Width = 50; + // + // Column8 + // + this.Column8.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column8.HeaderText = "Alm"; + this.Column8.Name = "Column8"; + this.Column8.ReadOnly = true; + this.Column8.Width = 50; + // + // Column9 + // + this.Column9.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column9.HeaderText = "H.Set"; + this.Column9.Name = "Column9"; + this.Column9.ReadOnly = true; + this.Column9.Width = 50; + // + // dvc_desc + // + this.dvc_desc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dvc_desc.HeaderText = "Description"; + this.dvc_desc.Name = "dvc_desc"; + this.dvc_desc.ReadOnly = true; + // + // tmDisplay + // + this.tmDisplay.Interval = 500; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // nudJogAcc + // + this.nudJogAcc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.nudJogAcc.DecimalPlaces = 2; + this.nudJogAcc.Dock = System.Windows.Forms.DockStyle.Fill; + this.nudJogAcc.Location = new System.Drawing.Point(79, 2); + this.nudJogAcc.Maximum = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this.nudJogAcc.MotionIndex = -1; + this.nudJogAcc.Name = "nudJogAcc"; + this.nudJogAcc.Size = new System.Drawing.Size(143, 26); + this.nudJogAcc.TabIndex = 0; + this.nudJogAcc.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.toolTip1.SetToolTip(this.nudJogAcc, "Jog mode movement speed"); + this.nudJogAcc.Value = new decimal(new int[] { + 500, + 0, + 0, + 0}); + // + // motLinkLabel1 + // + this.motLinkLabel1.Dock = System.Windows.Forms.DockStyle.Left; + this.motLinkLabel1.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.motLinkLabel1.LinkColor = System.Drawing.Color.Blue; + this.motLinkLabel1.Location = new System.Drawing.Point(2, 2); + this.motLinkLabel1.motValueControl = this.nudJogAcc; + this.motLinkLabel1.Name = "motLinkLabel1"; + this.motLinkLabel1.Size = new System.Drawing.Size(77, 26); + this.motLinkLabel1.TabIndex = 41; + this.motLinkLabel1.TabStop = true; + this.motLinkLabel1.Text = "JOG Acc"; + this.motLinkLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.toolTip1.SetToolTip(this.motLinkLabel1, "Change value"); + this.motLinkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.motLinkLabel1_LinkClicked); + // + // panLeft + // + this.panLeft.Controls.Add(this.listView1); + this.panLeft.Controls.Add(this.tabControl4); + this.panLeft.Controls.Add(this.lbModelTitle); + this.panLeft.Dock = System.Windows.Forms.DockStyle.Left; + this.panLeft.Location = new System.Drawing.Point(5, 5); + this.panLeft.Name = "panLeft"; + this.panLeft.Size = new System.Drawing.Size(238, 920); + this.panLeft.TabIndex = 3; + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1}); + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(0, 34); + this.listView1.MultiSelect = false; + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(238, 420); + this.listView1.TabIndex = 146; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); + // + // columnHeader1 + // + this.columnHeader1.Text = "Model Name"; + this.columnHeader1.Width = 230; + // + // tabControl4 + // + this.tabControl4.Controls.Add(this.tabPage4); + this.tabControl4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tabControl4.Location = new System.Drawing.Point(0, 454); + this.tabControl4.Name = "tabControl4"; + this.tabControl4.SelectedIndex = 0; + this.tabControl4.Size = new System.Drawing.Size(238, 466); + this.tabControl4.TabIndex = 145; + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.panel2); + this.tabPage4.Controls.Add(this.panel14); + this.tabPage4.Controls.Add(this.tableLayoutPanel1); + this.tabPage4.Controls.Add(this.panel1); + this.tabPage4.Controls.Add(this.panel7); + this.tabPage4.Controls.Add(this.panel8); + this.tabPage4.Controls.Add(this.panel11); + this.tabPage4.Location = new System.Drawing.Point(4, 27); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Padding = new System.Windows.Forms.Padding(3); + this.tabPage4.Size = new System.Drawing.Size(230, 435); + this.tabPage4.TabIndex = 1; + this.tabPage4.Text = "JOG"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // panel2 + // + this.panel2.Controls.Add(this.linkLabel6); + this.panel2.Controls.Add(this.linkLabel5); + this.panel2.Controls.Add(this.linkLabel4); + this.panel2.Controls.Add(this.linkLabel3); + this.panel2.Controls.Add(this.linkLabel2); + this.panel2.Controls.Add(this.linkLabel1); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(3, 403); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(224, 33); + this.panel2.TabIndex = 66; + // + // linkLabel6 + // + this.linkLabel6.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel6.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.linkLabel6.Location = new System.Drawing.Point(194, 0); + this.linkLabel6.Name = "linkLabel6"; + this.linkLabel6.Size = new System.Drawing.Size(32, 33); + this.linkLabel6.TabIndex = 71; + this.linkLabel6.TabStop = true; + this.linkLabel6.Text = "200"; + this.linkLabel6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.linkLabel6.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel5 + // + this.linkLabel5.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel5.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.linkLabel5.Location = new System.Drawing.Point(162, 0); + this.linkLabel5.Name = "linkLabel5"; + this.linkLabel5.Size = new System.Drawing.Size(32, 33); + this.linkLabel5.TabIndex = 70; + this.linkLabel5.TabStop = true; + this.linkLabel5.Text = "100"; + this.linkLabel5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.linkLabel5.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel4 + // + this.linkLabel4.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel4.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.linkLabel4.Location = new System.Drawing.Point(130, 0); + this.linkLabel4.Name = "linkLabel4"; + this.linkLabel4.Size = new System.Drawing.Size(32, 33); + this.linkLabel4.TabIndex = 69; + this.linkLabel4.TabStop = true; + this.linkLabel4.Text = "50"; + this.linkLabel4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.linkLabel4.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel3 + // + this.linkLabel3.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.linkLabel3.Location = new System.Drawing.Point(98, 0); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(32, 33); + this.linkLabel3.TabIndex = 68; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "20"; + this.linkLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel2 + // + this.linkLabel2.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel2.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.linkLabel2.Location = new System.Drawing.Point(66, 0); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(32, 33); + this.linkLabel2.TabIndex = 67; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "10"; + this.linkLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // linkLabel1 + // + this.linkLabel1.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel1.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.linkLabel1.Location = new System.Drawing.Point(34, 0); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(32, 33); + this.linkLabel1.TabIndex = 66; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "5"; + this.linkLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(34, 33); + this.label1.TabIndex = 65; + this.label1.Text = "SPD"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // panel1 + // + this.panel1.Controls.Add(this.nudJogAcc); + this.panel1.Controls.Add(this.motLinkLabel1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(3, 93); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(2); + this.panel1.Size = new System.Drawing.Size(224, 30); + this.panel1.TabIndex = 65; + // + // lbModelTitle + // + this.lbModelTitle.BackColor = System.Drawing.Color.Gray; + this.lbModelTitle.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.lbModelTitle.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbModelTitle.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.lbModelTitle.BorderColorOver = System.Drawing.Color.DodgerBlue; + this.lbModelTitle.BorderSize = new System.Windows.Forms.Padding(0); + this.lbModelTitle.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbModelTitle.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbModelTitle.Dock = System.Windows.Forms.DockStyle.Top; + this.lbModelTitle.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.lbModelTitle.ForeColor = System.Drawing.Color.White; + this.lbModelTitle.GradientEnable = true; + this.lbModelTitle.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbModelTitle.GradientRepeatBG = false; + this.lbModelTitle.isButton = false; + this.lbModelTitle.Location = new System.Drawing.Point(0, 0); + this.lbModelTitle.Margin = new System.Windows.Forms.Padding(0); + this.lbModelTitle.MouseDownColor = System.Drawing.Color.Yellow; + this.lbModelTitle.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbModelTitle.msg = null; + this.lbModelTitle.Name = "lbModelTitle"; + this.lbModelTitle.ProgressBorderColor = System.Drawing.Color.Black; + this.lbModelTitle.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbModelTitle.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbModelTitle.ProgressEnable = false; + this.lbModelTitle.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbModelTitle.ProgressForeColor = System.Drawing.Color.Black; + this.lbModelTitle.ProgressMax = 100F; + this.lbModelTitle.ProgressMin = 0F; + this.lbModelTitle.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbModelTitle.ProgressValue = 0F; + this.lbModelTitle.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.lbModelTitle.Sign = ""; + this.lbModelTitle.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbModelTitle.SignColor = System.Drawing.Color.Yellow; + this.lbModelTitle.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbModelTitle.Size = new System.Drawing.Size(238, 34); + this.lbModelTitle.TabIndex = 6; + this.lbModelTitle.Text = "--"; + this.lbModelTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbModelTitle.TextShadow = true; + this.lbModelTitle.TextVisible = true; + // + // panel6 + // + this.panel6.BackColor = System.Drawing.SystemColors.Control; + this.panel6.Controls.Add(this.panel3); + this.panel6.Controls.Add(this.tabControl5); + this.panel6.Controls.Add(this.tabControl3); + this.panel6.Controls.Add(this.splitH); + this.panel6.Controls.Add(this.panLeft); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.ForeColor = System.Drawing.SystemColors.ControlText; + this.panel6.Location = new System.Drawing.Point(0, 0); + this.panel6.Name = "panel6"; + this.panel6.Padding = new System.Windows.Forms.Padding(5); + this.panel6.Size = new System.Drawing.Size(1264, 930); + this.panel6.TabIndex = 4; + // + // panel3 + // + this.panel3.Controls.Add(this.tabControl1); + this.panel3.Controls.Add(this.tabControl2); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(248, 324); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(711, 601); + this.panel3.TabIndex = 136; + // + // tabControl5 + // + this.tabControl5.Controls.Add(this.tabPage5); + this.tabControl5.Dock = System.Windows.Forms.DockStyle.Top; + this.tabControl5.Location = new System.Drawing.Point(248, 5); + this.tabControl5.Name = "tabControl5"; + this.tabControl5.SelectedIndex = 0; + this.tabControl5.Size = new System.Drawing.Size(711, 319); + this.tabControl5.TabIndex = 135; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.dvMot); + this.tabPage5.Location = new System.Drawing.Point(4, 27); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.Padding = new System.Windows.Forms.Padding(3); + this.tabPage5.Size = new System.Drawing.Size(703, 288); + this.tabPage5.TabIndex = 1; + this.tabPage5.Text = "Motion Status"; + this.tabPage5.UseVisualStyleBackColor = true; + // + // splitH + // + this.splitH.Dock = System.Windows.Forms.DockStyle.Left; + this.splitH.Location = new System.Drawing.Point(243, 5); + this.splitH.Name = "splitH"; + this.splitH.Size = new System.Drawing.Size(5, 920); + this.splitH.TabIndex = 4; + // + // toolStrip1 + // + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(48, 48); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btAdd, + this.btEdit, + this.btDel, + this.btSave, + this.btCopy, + this.btSelect, + this.toolStripSeparator2, + this.toolStripButton11}); + this.toolStrip1.Location = new System.Drawing.Point(0, 930); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(1264, 55); + this.toolStrip1.TabIndex = 9; + this.toolStrip1.Text = "toolStrip1"; + // + // btAdd + // + this.btAdd.Image = global::Project.Properties.Resources.icons8_add_40; + this.btAdd.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btAdd.Name = "btAdd"; + this.btAdd.Size = new System.Drawing.Size(97, 52); + this.btAdd.Text = "Add(&A)"; + this.btAdd.Click += new System.EventHandler(this.toolStripButton6_Click); + // + // btEdit + // + this.btEdit.Image = global::Project.Properties.Resources.icons8_edit_48; + this.btEdit.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btEdit.Name = "btEdit"; + this.btEdit.Size = new System.Drawing.Size(102, 52); + this.btEdit.Text = "Rename"; + this.btEdit.Click += new System.EventHandler(this.btEdit_Click); + // + // btDel + // + this.btDel.Image = global::Project.Properties.Resources.icons8_delete_40; + this.btDel.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btDel.Name = "btDel"; + this.btDel.Size = new System.Drawing.Size(108, 52); + this.btDel.Text = "Delete(&D)"; + this.btDel.Click += new System.EventHandler(this.toolStripButton7_Click); + // + // btSave + // + this.btSave.Image = ((System.Drawing.Image)(resources.GetObject("btSave.Image"))); + this.btSave.Name = "btSave"; + this.btSave.Size = new System.Drawing.Size(97, 52); + this.btSave.Text = "Save(&S)"; + this.btSave.Click += new System.EventHandler(this.toolStripButton8_Click); + // + // btCopy + // + this.btCopy.Image = ((System.Drawing.Image)(resources.GetObject("btCopy.Image"))); + this.btCopy.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btCopy.Name = "btCopy"; + this.btCopy.Size = new System.Drawing.Size(87, 52); + this.btCopy.Text = "Copy"; + this.btCopy.Click += new System.EventHandler(this.btCopy_Click); + // + // btSelect + // + this.btSelect.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btSelect.AutoSize = false; + this.btSelect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.btSelect.ForeColor = System.Drawing.Color.White; + this.btSelect.Image = global::Project.Properties.Resources.icons8_selection_40; + this.btSelect.Name = "btSelect"; + this.btSelect.Size = new System.Drawing.Size(215, 44); + this.btSelect.Text = "Select this model"; + this.btSelect.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btSelect.Click += new System.EventHandler(this.toolStripButton10_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 55); + // + // toolStripButton11 + // + this.toolStripButton11.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.그룹설정ToolStripMenuItem}); + this.toolStripButton11.Image = global::Project.Properties.Resources.icons8_move_right_40; + this.toolStripButton11.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton11.Name = "toolStripButton11"; + this.toolStripButton11.Size = new System.Drawing.Size(137, 52); + this.toolStripButton11.Text = "Group Move"; + this.toolStripButton11.ButtonClick += new System.EventHandler(this.toolStripButton11_ButtonClick); + this.toolStripButton11.Click += new System.EventHandler(this.toolStripButton11_Click); + // + // 그룹설정ToolStripMenuItem + // + this.그룹설정ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_save_to_grid_40; + this.그룹설정ToolStripMenuItem.Name = "그룹설정ToolStripMenuItem"; + this.그룹설정ToolStripMenuItem.Size = new System.Drawing.Size(184, 54); + this.그룹설정ToolStripMenuItem.Text = "Group Settings"; + this.그룹설정ToolStripMenuItem.Click += new System.EventHandler(this.그룹설정ToolStripMenuItem_Click); + // + // Model_Motion + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(1264, 985); + this.Controls.Add(this.panel6); + this.Controls.Add(this.toolStrip1); + this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ForeColor = System.Drawing.Color.Black; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Model_Motion"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Motion Setting / Select"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.Load += new System.EventHandler(this.@__Load); + ((System.ComponentModel.ISupportInitialize)(this.ds1)).EndInit(); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvPosition)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPosData)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit(); + this.bn.ResumeLayout(false); + this.bn.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel7.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudPosRel)).EndInit(); + this.panel14.ResumeLayout(false); + this.panel14.PerformLayout(); + this.panel8.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudPosAbs)).EndInit(); + this.panel11.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudJogVel)).EndInit(); + this.tabControl2.ResumeLayout(false); + this.tabPage7.ResumeLayout(false); + this.tabControl3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dvMot)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudJogAcc)).EndInit(); + this.panLeft.ResumeLayout(false); + this.tabControl4.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.tabControl5.ResumeLayout(false); + this.tabPage5.ResumeLayout(false); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private DataSet1 ds1; + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private arFrame.Control.MotCommandButton btJogUp; + private arFrame.Control.MotCommandButton btJogDn; + private arFrame.Control.MotCommandButton btJogStop; + private arFrame.Control.MotValueNumericUpDown nudJogVel; + private arFrame.Control.MotCommandButton button5; + private arFrame.Control.MotCommandButton btPClear; + private System.Windows.Forms.ToolTip toolTip1; + private arFrame.Control.MotValueNumericUpDown nudPosAbs; + private arFrame.Control.MotLinkLabel linkLabel8; + private System.Windows.Forms.Panel panLeft; + private arFrame.Control.MotLinkLabel linkLabel10; + private arFrame.Control.MotLinkLabel linkLabel11; + private arFrame.Control.MotCommandButton button1; + private arFrame.Control.MotValueNumericUpDown nudPosRel; + private arFrame.Control.MotCommandButton button3; + private arFrame.Control.MotCommandButton btAClear; + private arCtl.arLabel lbModelTitle; + private arFrame.Control.MotCommandButton btSVY; + private arFrame.Control.MotCommandButton btJogLeft; + private arFrame.Control.MotCommandButton btJogRight; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Panel splitH; + private arCtl.LogTextBox RtLog; + private System.Windows.Forms.CheckBox chkJogMoveForce; + private System.Windows.Forms.TabControl tabControl2; + private System.Windows.Forms.TabPage tabPage7; + private System.Windows.Forms.BindingSource bsPosData; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Panel panel11; + private arCtl.arDatagridView dvPosition; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabControl tabControl3; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.BindingNavigator bn; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.Panel panel14; + private arCtl.arDatagridView dvMot; + private System.Windows.Forms.TabControl tabControl4; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.TabControl tabControl5; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_axis; + private System.Windows.Forms.DataGridViewTextBoxColumn Column10; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; + private System.Windows.Forms.DataGridViewTextBoxColumn Column6; + private System.Windows.Forms.DataGridViewTextBoxColumn Column7; + private System.Windows.Forms.DataGridViewTextBoxColumn Column8; + private System.Windows.Forms.DataGridViewTextBoxColumn Column9; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_desc; + private System.Windows.Forms.Panel panel1; + private arFrame.Control.MotValueNumericUpDown nudJogAcc; + private arFrame.Control.MotLinkLabel motLinkLabel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.LinkLabel linkLabel6; + private System.Windows.Forms.LinkLabel linkLabel5; + private System.Windows.Forms.LinkLabel linkLabel4; + private System.Windows.Forms.LinkLabel linkLabel3; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton btAdd; + private System.Windows.Forms.ToolStripButton btDel; + private System.Windows.Forms.ToolStripButton btSave; + private System.Windows.Forms.ToolStripButton btCopy; + private System.Windows.Forms.ToolStripButton btSelect; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSplitButton toolStripButton11; + private System.Windows.Forms.ToolStripMenuItem 그룹설정ToolStripMenuItem; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ToolStripButton btEdit; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn pidx; + private System.Windows.Forms.DataGridViewTextBoxColumn MotIndex; + private System.Windows.Forms.DataGridViewTextBoxColumn PosIndex; + private System.Windows.Forms.DataGridViewTextBoxColumn posTitleDataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn Description; + private System.Windows.Forms.DataGridViewButtonColumn btPos; + private System.Windows.Forms.DataGridViewButtonColumn btspeed; + private System.Windows.Forms.DataGridViewButtonColumn btacc; + private System.Windows.Forms.DataGridViewButtonColumn btdcc; + private System.Windows.Forms.DataGridViewButtonColumn btGo; + private System.Windows.Forms.DataGridViewButtonColumn btSet; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/Model_Motion.cs b/Handler/Project/Dialog/Model_Motion.cs new file mode 100644 index 0000000..b7f5e7b --- /dev/null +++ b/Handler/Project/Dialog/Model_Motion.cs @@ -0,0 +1,1462 @@ +#pragma warning disable IDE1006 // 명명 스타일 + +using AR; +using System; +using System.Collections.Generic; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Windows.Forms; + +namespace Project +{ + public partial class Model_Motion : Form + { + public string Value = string.Empty; + short axisIndex = -1; + eAxis axis = eAxis.Z_THETA;// + Color sbBackColor = Color.FromArgb(200, 200, 200); + + public Model_Motion() + { + InitializeComponent(); + + if (System.Diagnostics.Debugger.IsAttached == false) + { + // fb = new Dialog.fBlurPanel(); + //fb.Show(); + } + + this.KeyPreview = true; + this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); }; + this.StartPosition = FormStartPosition.CenterScreen; + this.FormClosed += __Closed; + this.FormClosing += __Closing; + + var axlist = Enum.GetNames(typeof(eAxis)); + var axvalues = Enum.GetValues(typeof(eAxis)); + + var preValueList = new List(); + + //모터설정값을 보고 해당 모터의 목록을 표시한다. + //사용하지 않는 축은 표시하지 않는다 + for (int i = 0; i < SETTING.System.MotaxisCount; i++) + { + var axis = (eAxis)i; + var axisname = (eAxisName)i; + var axTitle = axisname.ToString();// axis.ToString(); + + if (PUB.system_mot.UseAxis(i) == false) continue;// axTitle = "Disable"; + + if (axisIndex == -1) axisIndex = (short)i; + if (axTitle.Equals(i.ToString())) axTitle = "(No Name)"; + this.dvMot.Rows.Add( + new string[] { + i.ToString(), axTitle, string.Empty, string.Empty, string.Empty, + string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, + string.Empty + }); + } + dvMot.Columns[10].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; + //링크레이블과 버튼 연결 + AttachEvents(); + } + Boolean hasChanged() + { + this.Validate(); + this.bsPosData.EndEdit(); + var chg = this.ds1.MCModel.GetChanges(); + if (chg == null || chg.Rows.Count < 1) return false; + return true; + } + + private void __Closing(object sender, FormClosingEventArgs e) + { + if (hasChanged()) + { + var dlg = UTIL.MsgQ("There are unsaved changes.\n" + + "Proceeding will discard the changes\n" + + "Do you want to continue?"); + + if (dlg != DialogResult.Yes) + { + e.Cancel = true; + return; + } + } + } + + private void __Load(object sender, EventArgs e) + { + this.Show(); + ////'Application.DoEvents(); + /// + + + + this.ds1.Clear(); + this.ds1.MCModel.Merge(PUB.mdm.dataSet.MCModel); + this.ds1.MCModel.AcceptChanges(); + this.ds1.MCModel.TableNewRow += Model_TableNewRow; + //this.ds1.MCModel.AcceptChanges(); + + + //축이름을 확인 220304 + foreach (DataSet1.MCModelRow dr in ds1.MCModel) + { + if (dr.RowState == DataRowState.Deleted || dr.RowState == DataRowState.Detached) continue; + var curname = dr.MotName; + var axis = (eAxis)dr.MotIndex; + if (axis.ToString() != curname) + { + dr.MotName = axis.ToString(); + dr.EndEdit(); + } + } + this.ds1.MCModel.AcceptChanges(); + + //데이터가 안나오게 한다. + this.bsPosData.Filter = "isnull(title,'') = 'dudrndjqtek' and isnull(motindex,-1) = -1"; + + + + //모델목록을 업데이트한다 (모델은 pidx =-1인데이터를 뜻한다) + RefreshModelList(); + + + //현재 선택된 모델정보를 표시한다. + if (PUB.Result.isSetmModel) + { + //모델명을 표시 + lbModelTitle.Text = PUB.Result.mModel.Title; + + //해당모델명을 찾아서 선택해준다. + foreach (ListViewItem item in this.listView1.Items) + { + if (item.Text == PUB.Result.mModel.Title) + { + item.Focused = true; + item.Selected = true; + break; + } + } + } + else + { + //선택된 모델명이 없다 + lbModelTitle.Text = "--"; + } + + //모델정보가 아에 없다면 + if (this.ds1.MCModel.Rows.Count < 1) + { + var newdr = this.ds1.MCModel.NewMCModelRow(); + newdr.Title = "Default"; + newdr.pidx = -1; + newdr.PosIndex = -1; + newdr.idx = ds1.MCModel.Rows.Count + 1; + this.ds1.MCModel.AddMCModelRow(newdr); + + UTIL.MsgI("No registered models found. Creating default model (Default)"); + } + + //this.axisIndex = 0; //기본Z축 + //radClick_MotAxisSelect(this.flowLayoutPanel1.Controls[0], null); + //var rad = flowLayoutPanel1.Controls[0] as RadioButton; + //rad.Checked = true; + + //빠른실행폼추가 + var fctl = new Dialog.Quick_Control + { + TopLevel = false, + Visible = true, + Padding = new Padding(0, 0, 0, 0), + ForeColor = Color.Black + }; + fctl.panBG.BackColor = Color.White; + fctl.panBG.ForeColor = Color.Black; + //fctl.groupBox2.ForeColor = Color.Black; + fctl.groupBox3.ForeColor = Color.Black; + this.tabPage2.Controls.Add(fctl); + fctl.Dock = DockStyle.Fill; + fctl.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + //fctl.panTopMenuDiv.Visible = false; + /// fctl.panBG.BackColor = this.panel6.BackColor; + fctl.panBG.BorderStyle = BorderStyle.None; + fctl.Show(); + fctl.Dock = DockStyle.Fill; + PUB.log.RaiseMsg += log_RaiseMsg; + //PUB.flag.set(eVarBool.JOG, true, "MOTION CONTROL"); + + if (PUB.sm.Step != eSMStep.IDLE) + { + btDel.Enabled = false; + btCopy.Enabled = false; + btSelect.Visible = false; + btEdit.Enabled = false; + //Util.MsgE("대기 상태일때만 복사/삭제 기능을 쓸 수 있습니다"); + } + + this.RtLog.ColorList = new arCtl.sLogMessageColor[] { + new arCtl.sLogMessageColor("BARCODE",Color.DarkMagenta), + new arCtl.sLogMessageColor("ERR",Color.Red), + new arCtl.sLogMessageColor("NORMAL", Color.Black), + new arCtl.sLogMessageColor("WARN", Color.DarkMagenta), + new arCtl.sLogMessageColor("ATT", Color.MidnightBlue), + new arCtl.sLogMessageColor("INFO", Color.MidnightBlue), + new arCtl.sLogMessageColor("VIS", Color.Blue), + new arCtl.sLogMessageColor("SM", Color.Indigo), + new arCtl.sLogMessageColor("WATCH", Color.Indigo), + }; + + this.tmDisplay.Start(); + } + + void RefreshModelList() + { + this.listView1.Items.Clear(); + var list = this.ds1.MCModel.Where(t => t.pidx == -1).OrderBy(t => t.Title).ToList(); + if (list.Any()) + { + foreach (var item in list) + { + if (item.Title.isEmpty()) continue; + var lv = this.listView1.Items.Add(item.Title); + lv.Tag = item.idx; + } + } + } + + void AttachEvents() + { + var EventConnectControls = new List + { + tabControl4 + }; + + //linklabel 과 button 에 클릭 이벤트 생성 + foreach (Control page in EventConnectControls) + { + foreach (var ctl in page.Controls) + { + if (ctl.GetType() == typeof(arFrame.Control.MotLinkLabel)) + { + var label = ctl as arFrame.Control.MotLinkLabel; + if (label.motValueControl != null) label.LinkClicked += label_LinkClicked; + + } + else if (ctl.GetType() == typeof(arFrame.Control.MotCommandButton)) + { + var button = ctl as arFrame.Control.MotCommandButton; + if (button.motValueControl != null) button.Click += button_Click; + } + } + } + } + + void button_Click(object sender, EventArgs e) + { + var ctl = sender as arFrame.Control.MotCommandButton; + var nud = ctl.motValueControl as arFrame.Control.MotValueNumericUpDown; + var nudAcc = ctl.motAccControl;// as arFrame.Control.MotValueNumericUpDown; + var nudSpd = ctl.motSpdControl; + if (nud.MotionIndex < 0) + { + UTIL.MsgE("Motion axis number is not specified\n\n" + + "Name : " + ctl.Name + "\n" + + "Title : " + ctl.Text); + return; + } + if ((nudAcc == null || nudSpd == null) && ctl.motCommand != arFrame.Control.MotCommandButton.eCommand.AcceptPosition) + { + UTIL.MsgE("Speed/acceleration control is not specified\n\n" + + "Name : " + ctl.Name + "\n" + + "Title : " + ctl.Text); + return; + } + + var axis = (eAxis)nud.MotionIndex; + var pos = (double)nud.Value; + + //모션이 초기화가 안되있다면 오류로 처리한다 + if (PUB.mot.IsHomeSet((short)nud.MotionIndex) == false) + { + UTIL.MsgE("Home search for this axis is not completed.\nPlease complete home search first"); + return; + } + + + + switch (ctl.motCommand) + { + case arFrame.Control.MotCommandButton.eCommand.AcceptPosition: + + var msg1 = string.Format("Do you want to change the motion settings?\n" + + "Axis : {0}\n" + + "Before : {1}\n" + + "After : {2}\n" + + "You must press 'Save' after change to record permanently", axis, PUB.mot.GetActPos((short)nud.MotionIndex), pos, nud.Value); + + if (UTIL.MsgQ(msg1) != System.Windows.Forms.DialogResult.Yes) return; + + ChangeCurrentPosition((short)nud.MotionIndex, nud); + break; + case arFrame.Control.MotCommandButton.eCommand.AbsoluteMove: + case arFrame.Control.MotCommandButton.eCommand.RelativeMove: + + var speed = (double)nudSpd.Value; + var acc = (double)nudAcc.Value; + + + + + var relative = false; + if (ctl.motCommand == arFrame.Control.MotCommandButton.eCommand.RelativeMove) + relative = true; + + var msg = string.Format("Do you want to change the motion position?\n" + + "Axis : {0}\n" + + "Current position : {1}\n" + + "Target position : {2}\n" + + "Please make sure to check for potential collisions during movement", axis, PUB.mot.GetActPos((short)nud.MotionIndex), pos); + + if (UTIL.MsgQ(msg) != System.Windows.Forms.DialogResult.Yes) return; + + if (!MOT.Move(axis, pos, speed, acc, relative)) + PUB.log.AddE("MOT:MOVE_:" + axis.ToString() + ",Msg=" + PUB.mot.ErrorMessage); + break; + } + } + + void label_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + var ctl = sender as arFrame.Control.MotLinkLabel; + PUB.ChangeUIPopup(ctl.motValueControl); + } + + private void __Closed(object sender, FormClosedEventArgs e) + { + //this.bs.CurrentChanged -= this.bs_CurrentChanged_1; + this.tmDisplay.Enabled = false; + this.ds1.MCModel.TableNewRow -= Model_TableNewRow; + } + + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + + private void LbTitle_DoubleClick(object sender, EventArgs e) + { + if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal; + else this.WindowState = FormWindowState.Maximized; + } + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + + void log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (Message.StartsWith("[EO]") || Message.StartsWith("EO")) + { + return; + } + this.RtLog.AddMsg(LogTime, TypeStr, Message); + } + + void Model_TableNewRow(object sender, DataTableNewRowEventArgs e) + { + // e.Row["SlotCount"] = 20; + } + + private void tmDisplay_Tick(object sender, EventArgs e) + { + tabControl4.TabPages[0].Text = $"({axisIndex}) JOG"; + + this.Text = "MODEL(MOTION) SETTING"; + + if (PUB.mot.IsInit == false) + { + //if (groupBox3.Enabled == true) groupBox3.Enabled = false; + } + else + { + //if (groupBox3.Enabled == false) groupBox3.Enabled = true; + + //각축별 기본 상태를 표시해준다. + //dvMot.SuspendLayout(); + for (int r = 0; r < dvMot.RowCount; r++) // 오류수정 2111221 + { + var row = this.dvMot.Rows[r]; + var axis = short.Parse(row.Cells[0].Value.ToString()); + row.Cells[0].Style.BackColor = PUB.mot.IsServOn(axis) ? Color.Lime : Color.Tomato; + row.Cells[2].Value = $"{PUB.mot.GetCmdPos(axis)}"; + row.Cells[3].Value = $"{PUB.mot.GetActPos(axis)}"; + row.Cells[4].Style.BackColor = PUB.mot.IsOrg(axis) ? Color.SkyBlue : Color.Gray; + row.Cells[4].Value = PUB.mot.IsOrg(axis) ? "O" : ""; + row.Cells[5].Style.BackColor = PUB.mot.IsLimitN(axis) ? Color.Red : Color.Gray; + row.Cells[5].Value = PUB.mot.IsLimitN(axis) ? "O" : ""; + row.Cells[6].Style.BackColor = PUB.mot.IsLimitP(axis) ? Color.Red : Color.Gray; + row.Cells[6].Value = PUB.mot.IsLimitP(axis) ? "O" : ""; + row.Cells[7].Style.BackColor = PUB.mot.IsInp(axis) ? Color.SkyBlue : Color.Gray; + row.Cells[7].Value = PUB.mot.IsInp(axis) ? "O" : ""; + row.Cells[8].Style.BackColor = PUB.mot.IsServAlarm(axis) ? Color.Red : Color.Gray; + row.Cells[8].Value = PUB.mot.IsServAlarm(axis) ? "O" : ""; + row.Cells[9].Style.BackColor = PUB.mot.IsHomeSet(axis) ? Color.Green : Color.Gray; + row.Cells[9].Value = PUB.mot.IsHomeSet(axis) ? "O" : ""; + row.Cells[10].Value = PUB.mot.IsServOn(axis) ? "Servo On" : "Servo Off"; + } + //dvMot.ResumeLayout(); + } + // this.tblFG.Invalidate(); + } + + private void dv_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + + #region "jog function" + + private void button1_Click(object sender, EventArgs e) + { + //절대값 이동 + var pos = (double)nudPosAbs.Value; + var vel = (double)nudJogVel.Value; + + var msg = $"Move motion({axis}) coordinate to ({pos})?"; + if (UTIL.MsgQ(msg) != DialogResult.Yes) return; + + MOT.Move(this.axis, pos, vel, 500, false, !chkJogMoveForce.Checked, !chkJogMoveForce.Checked); + PUB.log.AddI(string.Format("Axis {0} manual movement(ABS) {1}mm", axisIndex, pos)); + } + + private void button3_Click_1(object sender, EventArgs e) + { + + //상대값 이동 + var pos = (double)nudPosRel.Value; + var vel = (double)nudJogVel.Value; + + if(pos == 0.0) + { + UTIL.MsgE("Value cannot be (0) for relative movement",true); + return; + } + + var msg = $"Move motion({axis}) coordinate by ({pos}) from current position?"; + if (UTIL.MsgQ(msg) != DialogResult.Yes) return; + + MOT.Move(this.axis, pos, vel, 500, true, !chkJogMoveForce.Checked, !chkJogMoveForce.Checked); + PUB.log.AddI(string.Format("Axis {0} manual movement(REL) {1}mm", axisIndex, pos)); + } + + + private void btJogHome_Click(object sender, EventArgs e) + { + //jog-home + var dlg = UTIL.MsgQ(string.Format("Execute home search for axis {0}?", this.axis)); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var rlt = MOT.Home("Model(UserControl)", this.axis); + if (rlt == false) + { + UTIL.MsgE(PUB.mot.ErrorMessage); + return; + } + PUB.log.Add(string.Format("user click : home ({0})", axisIndex)); + } + + private void btJogPClear_Click(object sender, EventArgs e) + { + var dlg = UTIL.MsgQ("Initialize position values?\n" + + "Make sure to perform home operation before actual use"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + //jog pos-clear + PUB.mot.ClearPosition((short)axisIndex); + PUB.mot.SetHomeSet(axisIndex, false); //홈셋도 풀어야한다 201222 + PUB.log.Add(string.Format("user click : pos clear ({0})", axisIndex)); + } + + private void btJogAClear_Click(object sender, EventArgs e) + { + //jog-alaram clear + PUB.mot.SetAlarmClearOn(this.axisIndex); + System.Threading.Thread.Sleep(200); + PUB.mot.SetAlarmClearOff(this.axisIndex); + PUB.log.Add(string.Format("user click : alarm clear ({0})", axisIndex)); + } + + private void btJogBrake_Click(object sender, EventArgs e) + { + //jog-brake + //var curstate = Util_DO.GetIOOutput(eDOName.BRAKE_OFF); + //Util_DO.SetBrake(!curstate); + //Pub.log.Add(string.Format("user click : set brake ({0})", axisIndex)); + } + + private void btJogSVon_Click(object sender, EventArgs e) + { + //jog-svon + var curstate = PUB.mot.IsServOn(axisIndex); + if (curstate) + { + var dlg = UTIL.MsgQ("Turn OFF SERVO-ON status?\n\nWhen turned OFF, HOME-SET status will also be turned OFF"); + if (dlg != DialogResult.Yes) return; + } + PUB.mot.SetServOn((short)axisIndex, !curstate); + PUB.log.Add(string.Format("user click : servo on ({0})", axisIndex)); + } + + + private void btJogStop_Click(object sender, EventArgs e) + { + //jog-stop + PUB.mot.MoveStop("JOG", this.axisIndex); + PUB.log.Add(string.Format("user click : move stop ({0})", axisIndex)); + } + + private void btJogDown_Click(object sender, MouseEventArgs e) + { + //jog-moouse down + var bt = sender as Button; + var tag = bt.Tag.ToString(); + var vel1 = (double)this.nudJogVel.Value; + var acc1 = (double)this.nudJogAcc.Value; + + var motDir = arDev.MOT.MOTION_DIRECTION.Positive; + if (tag == "CCW") motDir = arDev.MOT.MOTION_DIRECTION.Negative; + + Boolean jogMoveForce = this.chkJogMoveForce.Checked; + if (!MOT.JOG(this.axisIndex, motDir, vel1, acc1, acc1, false, !jogMoveForce, !jogMoveForce)) + PUB.log.AddE("MOT:JOG:" + tag + ":" + PUB.mot.ErrorMessage); + + PUB.log.Add(string.Format("user click : jog start ({0}) - {1}", axisIndex, tag)); + } + + private void btJogUp_Click(object sender, MouseEventArgs e) + { + //jog-mouseup + var bt = sender as Button; + var tag = bt.Tag.ToString(); + //Pub.mot.MoveStop("JOG", this.axisIndex); //선택된 축을 멈춘다. + MOT.Stop((eAxis)this.axisIndex, "JOG"); + PUB.log.Add(string.Format("user click : jog stop ({0})", axisIndex)); + } + + #endregion + + void ChangeCurrentPosition(short Axis, NumericUpDown valueCtl) + { + valueCtl.Value = (decimal)PUB.mot.GetActPos(Axis); + } + /// + /// 상단목록에서 모션을 선택한 경우 + /// + /// + /// + private void MotAxisSelect(int axisindex, string source) + { + if (tabControl4.Tag != null && tabControl4.Tag.ToString().Equals(axisindex.ToString())) + return; + + this.tabControl4.Tag = axisindex; + + //if(this.listView1.FocusedItem == null) + //{ + // Util.MsgE("선택된 모델이 없습니다\n\n좌측 목록에서 모델을 선택 하세요"); + //} + + RefreshMotorPosition($"motaxis({source})"); + } + + private void bs_CurrentChanged_1(object sender, EventArgs e) + { + //if (pauserefreshmot == true) return; + + //RefreshMotorPosition("bs"); + //BindingData(); + } + void RefreshMotorPosition(string source) + { + if (listView1.FocusedItem == null) + { + bsPosData.Filter = "motindex=99 and PosTitle='영구없다'"; + return; + } + var lvitem = listView1.FocusedItem; lvitem.Selected = true; + var idx = int.Parse(listView1.FocusedItem.Tag.ToString()); + + + var dr = ds1.MCModel.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) + { + UTIL.MsgE($"No data found for selected index({idx}). \nPlease try again", true); + bsPosData.Filter = "motindex=99 and PosTitle='영구없다'"; + return; + } + + if (lvitem.Text != lbModelTitle.Text) + { + lbModelTitle.BackColor = Color.Red; + lbModelTitle.BackColor2 = Color.Tomato; + } + else + { + lbModelTitle.BackColor = Color.Gray; + lbModelTitle.BackColor2 = Color.FromArgb(100, 100, 100); + } + + + + + this.tabControl5.TabPages[0].Text = $"[{dr.Title}] Motion Status"; + this.tabControl1.TabPages[0].Text = $"[{dr.Title}-M{this.axisIndex}] Position Data"; + + + RtLog.AddMsg($"Motion coordinate value check ({dr.Title}[{dr.idx}], Axis: {this.axisIndex})"); + + + //var rowindex = dvMot.SelectedCells[0].RowIndex; + //var row = dvMot.Rows[rowindex]; + //var axisIndex = short.Parse(row.Cells[0].Value.ToString()); + //var axis = (eAxis)this.axisIndex; + //var axisTitle = row.Cells[1].Value.ToString(); + { + + + //위치정보 표시 + bsPosData.Filter = string.Format("pidx={0} and motindex = {1} and PosTitle not like 'XX_%'", dr.idx, this.axisIndex); + + RtLog.AddMsg($"({bsPosData.Count}) data items confirmed"); + + + //(위치정보) 데이터수량이 맞지 않으면 재 생성한다 + string[] list = null; + Array val = null; + Type axType = null; + var axis = (eAxis)axisIndex; + + if (axis == eAxis.PX_PICK) axType = typeof(ePXLoc); + else if (axis == eAxis.PZ_PICK) axType = typeof(ePZLoc); + else if (axis == eAxis.Z_THETA) axType = typeof(ePTLoc); + + else if (axis == eAxis.PL_MOVE) axType = typeof(eLMLoc); + else if (axis == eAxis.PL_UPDN) axType = typeof(eLZLoc); + else if (axis == eAxis.PR_MOVE) axType = typeof(eRMLoc); + else if (axis == eAxis.PR_UPDN) axType = typeof(eRZLoc); + + if (axType == null) + { + UTIL.MsgE("Position information for specified axis is not defined"); + return; + } + + list = Enum.GetNames(axType); + val = Enum.GetValues(axType); + + var sb = new System.Text.StringBuilder(); + var cntI = 0; + var cntE = 0; + var cntD = 0; + + //posidx == -1인 데이터는 모두 소거한다 + var dellist = ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex && t.PosIndex == -1).ToList(); + if (dellist.Any()) + { + RtLog.AddMsg($"Motion ({axisIndex}) has {dellist.Count} data items with position information -1, deleting them"); + cntD += dellist.Count; + foreach (var item in dellist) + ds1.MCModel.RemoveMCModelRow(item); + + //삭제되었으니 적용처리한다 + ds1.MCModel.AcceptChanges(); + } + + //모든데이터의 체크상태를 off한다. + //작업완료후 CHK가 false 인 데이터는 삭제 처리 한다. + var alllist = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex); + alllist.ToList().ForEach(t => t.Check = false); + ds1.MCModel.AcceptChanges(); + + //list는 각 모션의 위치정보 enum list 값이다. + for (int i = 0; i < list.Length; i++) + { + var arrTitle = list[i]; + var vv = val.GetValue(i); + var arrIndex = (byte)vv;// ((eAxis)(val.GetValue(i))); + //if (arrIndex < 50) continue; //여기는 예약된 위치값이므로 사용하지 않는다 + var targetem = Enum.Parse(axType, vv.ToString()); + + //이 값이 데이터가 없다면 추가하고, 있다면 이름을 검사해서 결과를 안내한다 + var pDr = alllist.Where(t => t.PosIndex == arrIndex).FirstOrDefault(); + if (pDr == null) + { + cntI += 1; + var newdr = this.ds1.MCModel.NewMCModelRow(); + + if (ds1.MCModel.Rows.Count == 0) newdr.idx = 1; + else newdr.idx = ds1.MCModel.Max(t => t.idx) + 1; + + newdr.pidx = dr.idx; + newdr.MotIndex = this.axisIndex; + newdr.PosIndex = (short)arrIndex; + newdr.PosTitle = arrTitle; + newdr.Position = 0.0; + newdr.Speed = 50; + newdr.SpeedAcc = 100; + newdr.Check = true; + newdr.Description = targetem.DescriptionAttr(); + newdr.Category = targetem.CategoryAttr(); + + this.ds1.MCModel.AddMCModelRow(newdr); + newdr.EndEdit(); + sb.AppendLine("Item added: " + arrTitle); + } + else + { + //이름이 다르다면 추가해준다. + if (pDr.PosTitle != arrTitle) + { + sb.AppendLine("(Position) Item changed: " + pDr.PosTitle + " => " + arrTitle); + cntE += 1; + pDr.PosTitle = arrTitle; + } + pDr.Description = targetem.DescriptionAttr(); + //pDr.Category = targetem.CategoryAttr(); + pDr.Check = true; + pDr.EndEdit(); + } + } + ds1.MCModel.AcceptChanges(); + + //미사용개체 삭제한다 + var NotUseList = alllist.Where(t => t.Check == false).ToList(); + if (NotUseList.Any()) + { + cntD += NotUseList.Count(); + foreach (var item in NotUseList) + ds1.MCModel.RemoveMCModelRow(item); + + //삭제한 대상이 있으니적용처리 + ds1.MCModel.AcceptChanges(); + } + + + + + + + if (cntI > 0) sb.AppendLine("Added count: " + cntI.ToString()); + if (cntE > 0) sb.AppendLine("Changed count: " + cntE.ToString()); + if (cntD > 0) sb.AppendLine("Deleted count: " + cntD.ToString()); + + //최종 확정 + this.ds1.MCModel.AcceptChanges(); + + if (sb.Length > 0) + { + UTIL.MsgI(sb.ToString()); + } + } + } + + private void chkJogMoveForce_Click(object sender, EventArgs e) + { + if (chkJogMoveForce.Checked) + { + UTIL.MsgI( + "Collision conditions are not checked during jog forced movement\n" + + "Please make sure to check surrounding obstacles when moving shuttle\n" + + "'Forced movement' should only be used during teaching operations"); + } + } + + //private void button6_Click(object sender, EventArgs e) + //{ + // //적용 + + // this.bs.EndEdit(); + // this.bsPosData.EndEdit(); + // this.Validate(); + + // var drv = this.bs.Current as DataRowView; + // if (drv == null) return; + // var dr = drv.Row as DataSet1.MCModelRow; + + // this.Value = dr.Title; + + // if (Pub.LockModel.WaitOne(1) == true) + // { + // Pub.LockModel.Reset(); + // Pub.log.AddI("모션모델을 적용 합니다"); + // Pub.Result.mModel.ReadValue(dr.Title, this.ds1.MCModel); + // Pub.LockModel.Set(); + // if (Pub.Result.mModel.isSet) + // { + // Pub.log.AddAT("모션모델선택완료 : " + Pub.Result.mModel.Title); + // } + // else Util.MsgE("적용 실패\n\n대상 모델 명이 없습니다"); + // } + // else + // { + // Util.MsgE("모션 적용 실패\n잠시 후 다시 시도하세요"); + // } + + //} + + + + private void arDatagridView2_CellClick(object sender, DataGridViewCellEventArgs e) + { + //position click + var dv = sender as DataGridView; + var col = this.dvPosition.Columns[e.ColumnIndex]; + var colName = col.Name.ToLower(); + if (colName == "btgo") + { + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("Motion home is not completed\nPlease proceed with 'Device Initialization' from main screen"); + return; + } + //현재값으로 모터를 이동 + //현재위치값으로 설정 + var cell = dv.Rows[e.RowIndex].Cells["btpos"]; + var value = (double)cell.Value; + var drv = this.bsPosData.Current as DataRowView; + var drParent = drv.Row as DataSet1.MCModelRow; + + //일반 속도값을 찾는다 + //var speedDr = drParent.Speed;// this.ds1.MCModel.Where(t => t.pidx == drParent.idx && t.MotIndex == axisIndex && t.PosIndex == -1 && t.SpdIndex == (int)eAxisSpeed.Normal).FirstOrDefault(); + var speed = drParent.Speed;// speedDr.Speed;// (double)this.nudJogVel.Value; + var acc = drParent.SpeedAcc;// speedDr.SpeedAcc;// ; (double)nudAcc.Value; + + + var relative = false; + //if (ctl.motCommand == arFrame.Control.MotCommandButton.eCommand.RelativeMove) + // relative = true; + + var msg = string.Format("Do you want to change the motion position?\n" + + "Axis : {0}\n" + + "Current position : {1}\n" + + "Target position : {2}\n" + + "Movement speed : {3}(Acceleration:{4})\n" + + "Please make sure to check for potential collisions during movement", axis, PUB.mot.GetActPos(axisIndex), value, speed, acc); + + if (UTIL.MsgQ(msg) != System.Windows.Forms.DialogResult.Yes) return; + + if (!MOT.Move(axis, value, speed, acc, relative, true,true)) + PUB.log.AddE("MOT:MOVE_:" + axis.ToString() + ",Msg=" + PUB.mot.ErrorMessage); + + + + } + else if (colName == "btset") + { + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("Motion home is not completed\nPlease proceed with 'Device Initialization' from main screen"); + return; + } + + //현재위치값으로 설정 + var cell = dv.Rows[e.RowIndex].Cells["btpos"]; + var value = (double)cell.Value; + var nValue = Math.Round(PUB.mot.GetCmdPos(this.axisIndex), 4); //소수점4자리에서 반올림처리한다 210414 + + var msg1 = string.Format("Do you want to change the motion settings?\n" + + "Axis : {0}\n" + + "Before : {1}\n" + + "After : {2}\n" + + "You must press 'Save' after change to record permanently", this.axis, value, nValue); + + if (UTIL.MsgQ(msg1) != System.Windows.Forms.DialogResult.Yes) return; + cell.Value = nValue; + } + else if (colName == "btpos") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + var value = (double)cell.Value; + value = PUB.ChangeValuePopup(value, "Position Input"); + cell.Value = value; + } + else if (colName == "btspeed") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + var value = (double)cell.Value; + + var maxvalue = PUB.system_mot.GetMaxSpeed[this.axisIndex]; + if (maxvalue == 0) maxvalue = 1000; + value = PUB.ChangeValuePopup(value, $"Speed Input(Max:{maxvalue}mm/s)"); + if(value > maxvalue) + { + UTIL.MsgE($"Input value({value}) exceeds maximum value({maxvalue}).\nPlease input again"); + //cell.Value = maxvalue; + } + else + { + cell.Value = value; + } + + } + else if (colName == "btacc") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + var value = (double)cell.Value; + + var maxvalue = PUB.system_mot.GetMaxAcc[this.axisIndex]; + if (maxvalue == 0) maxvalue = 2000; + value = PUB.ChangeValuePopup(value, $"Acceleration Input(Max:{maxvalue}mm/s)"); + if (value > maxvalue) + { + UTIL.MsgE($"Input value({value}) exceeds maximum value({maxvalue}).\nPlease input again"); + //cell.Value = maxvalue; + } + else + { + cell.Value = value; + } + } + else if (colName == "btdcc") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + if (cell.Value.ToString().isEmpty()) cell.Value = "0"; + var value = (double)cell.Value; + + var maxvalue = PUB.system_mot.GetMaxAcc[this.axisIndex]; + if (maxvalue == 0) maxvalue = 2000; + value = PUB.ChangeValuePopup(value, $"Deceleration Input(Max:{maxvalue}mm/s)"); + if (value > maxvalue) + { + UTIL.MsgE($"Input value({value}) exceeds maximum value({maxvalue}).\nPlease input again"); + //cell.Value = maxvalue; + } + else + { + cell.Value = value; + } + } + + } + + private void linkLabel8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //jopgspeed + var value = (double)nudJogVel.Value; + value = PUB.ChangeValuePopup(value, "Speed Input"); + nudJogVel.Value = (decimal)value; + } + + private void linkLabel10_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //absvalue + var value = (double)this.nudPosAbs.Value; + value = PUB.ChangeValuePopup(value, "Speed Input"); + nudPosAbs.Value = (decimal)value; + } + + private void linkLabel11_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //reelvalu + var value = (double)nudPosRel.Value; + value = PUB.ChangeValuePopup(value, "Speed Input"); + nudPosRel.Value = (decimal)value; + } + + private void toolStripButton1_Click(object sender, EventArgs e) + { + var maxspeed = PUB.system_mot.GetMaxSpeed[this.axisIndex]; + if (maxspeed == 0) maxspeed = 1000; + + var dlg = UTIL.MsgQ($"Change speed of all movement coordinates in batch?\nMax:{maxspeed}mm/s"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var value = PUB.ChangeValuePopup(100.0, "Batch Speed Change"); + + if(value > maxspeed) + { + UTIL.MsgE($"Input value({value}) is greater than maximum value({maxspeed}). Please input again"); + return; + } + for (int i = 0; i < this.bsPosData.Count; i++) + { + this.bsPosData.Position = i; + var drv = this.bsPosData.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + dr.Speed = value; + dr.EndEdit(); + } + } + + private void toolStripButton2_Click_2(object sender, EventArgs e) + { + var maxspeed = PUB.system_mot.GetMaxAcc[this.axisIndex]; + if (maxspeed == 0) maxspeed = 2000; + + var dlg = UTIL.MsgQ($"Change acceleration/deceleration of all movement coordinates in batch?\nMax:{maxspeed}mm/s"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var value = PUB.ChangeValuePopup(100.0, "Batch Acceleration/Deceleration Change"); + + if (value > maxspeed) + { + UTIL.MsgE($"Input value({value}) is greater than maximum value({maxspeed}). Please input again"); + return; + } + + for (int i = 0; i < this.bsPosData.Count; i++) + { + this.bsPosData.Position = i; + var drv = this.bsPosData.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + dr.SpeedAcc = value; + dr.EndEdit(); + } + } + + private void toolStripButton3_Click_1(object sender, EventArgs e) + { + var maxspeed = PUB.system_mot.GetMaxAcc[this.axisIndex]; + if (maxspeed == 0) maxspeed = 2000; + + var dlg = UTIL.MsgQ($"Change deceleration of all movement coordinates in batch?\nMax:{maxspeed}mm/s"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var value = PUB.ChangeValuePopup(0, "Batch Deceleration Change"); + + if (value > maxspeed) + { + UTIL.MsgE($"Input value({value}) is greater than maximum value({maxspeed}). Please input again"); + return; + } + + for (int i = 0; i < this.bsPosData.Count; i++) + { + this.bsPosData.Position = i; + var drv = this.bsPosData.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + dr.SpeedDcc = value; + dr.EndEdit(); + } + } + + + private void dvMot_SelectionChanged(object sender, EventArgs e) + { + if (dvMot.SelectedRows.Count < 1) + { + Console.WriteLine("no selecte"); + this.axisIndex = -1; + this.axis = (eAxis)axisIndex; + } + else + { + var selrow = dvMot.SelectedRows[0]; + this.axisIndex = short.Parse(selrow.Cells["dvc_axis"].Value.ToString()); + this.axis = (eAxis)axisIndex; + MotAxisSelect(this.axisIndex, "dvmot"); + Console.WriteLine($"select indx {axisIndex}"); + } + } + + private void motLinkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //jopgspeed + var value = (double)nudJogAcc.Value; + value = PUB.ChangeValuePopup(value, "Jog Acceleration Input"); + nudJogAcc.Value = (decimal)value; + } + + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Windows.Forms.LinkLabel lv = sender as System.Windows.Forms.LinkLabel; + var speed = int.Parse(lv.Text); + nudJogVel.Value = speed; + + } + + + + private void toolStripButton6_Click(object sender, EventArgs e) + { + var f = new AR.Dialog.fInput("Enter model name",string.Empty); + if (f.ShowDialog() != DialogResult.OK) return; + + //지정한 이름이있는지 확인한다. + if (ds1.MCModel.Where(t => t.Title == f.ValueString).Any()) + { + UTIL.MsgE("Name is already in use\n\n" + f.ValueString); + return; + } + + var newdr = this.ds1.MCModel.NewMCModelRow();// this.bs.AddNew() as DataRowView; + newdr.Title = f.ValueString; + newdr.pidx = -1; //메인 모델은 pidx값이 -1이다 + newdr.PosIndex = -1; + newdr.idx = this.ds1.MCModel.Max(t => t.idx) + 1; //현재 인덱스에 더 크게 입력한다 + newdr.EndEdit(); + this.ds1.MCModel.AddMCModelRow(newdr); + this.ds1.MCModel.AcceptChanges(); + + //데이터를 추가 했으니 목록 추가를 해준다. + var lv = listView1.Items.Add(newdr.Title); + lv.Tag = newdr.idx; + + } + + private void toolStripButton7_Click(object sender, EventArgs e) + { + if (this.listView1.FocusedItem == null) + { + UTIL.MsgE("Select target to delete and try again", true); + return; + } + var idx = int.Parse(listView1.FocusedItem.Tag.ToString()); + var dr = this.ds1.MCModel.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) + { + UTIL.MsgE($"No data found for index({idx}) value.\nPlease try again"); + return; + } + + var dlg = UTIL.MsgQ("Delete currently selected data?\n\n" + + $"Model name : {dr.Title}\n" + + $"Model number : ({dr.idx})"); + + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + + this.ds1.MCModel.RemoveMCModelRow(dr); + this.ds1.MCModel.AcceptChanges(); + this.listView1.Items.Remove(listView1.FocusedItem); + + //데이터가 있다면 첫번쨰 자료를 선택한다. + RefreshMotorPosition("delete button"); + } + + private void toolStripButton8_Click(object sender, EventArgs e) + { + //button - save + this.Validate(); + this.bsPosData.EndEdit(); + this.Validate(); + + if (PUB.PasswordCheck() == false) + { + UTIL.MsgE("Password incorrect"); + return; + } + + //기존의 데이터와 다른점을 표시해준다. + var sb = new System.Text.StringBuilder(); + + //현재 데이터 중 부모데이터가 없는 자료를 삭제한다. + List delrows = new List(); + foreach (var grpdata in this.ds1.MCModel.Where(t => t.pidx != -1).GroupBy(t => t.pidx)) + { + var pidx = grpdata.Key; + //이 데이터의 부모가 존재하는지 확인 + if (ds1.MCModel.Where(t => t.idx == pidx && t.pidx == -1).Any() == false) + { + //삭제 대상에 넣는다. + foreach (var dr in grpdata) + { + delrows.Add(dr); + } + } + } + + //빈데이터삭제 + if (delrows.Any()) + { + sb.AppendLine($"Empty data deleted {delrows.Count} items"); + for (int i = 0; i < delrows.Count; i++) + ds1.MCModel.RemoveMCModelRow(delrows[i]); + ds1.MCModel.AcceptChanges(); + } + + //현재데이터에는 있는데 기존에는 없는 것을 찾는다 + foreach (DataSet1.MCModelRow dr in ds1.MCModel) + { + //if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Deleted) continue; + var mpos = PUB.mdm.dataSet.MCModel.Where(t => t.pidx == dr.pidx && t.MotIndex == dr.MotIndex && t.PosIndex == dr.PosIndex); + if (mpos.Any() == false) + { + sb.AppendLine($"[Added] Mot({dr.MotIndex}) {dr.PosTitle}({dr.Position})"); + } + else + { + var first = mpos.First(); + if (dr.Position != first.Position || dr.PosTitle != first.PosTitle) + { + sb.AppendLine($"[Changed] Mot({first.MotIndex}) {first.PosTitle}({first.Position}) => {dr.PosTitle}({dr.Position})"); + //sb.AppendLine($" => {dr.PosTitle}({dr.Position})"); + } + } + } + + //삭제건확인 + foreach (DataSet1.MCModelRow dr in PUB.mdm.dataSet.MCModel) + { + //if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Deleted) continue; + //서버데이터인데..나한테 존재하지 않으면 오류 처리핟. + var mpos = ds1.MCModel.Where(t => t.MotIndex == dr.MotIndex && t.PosIndex == dr.PosIndex); + if (mpos.Any() == false) + { + sb.AppendLine($"[Deleted] M={dr.MotIndex},P={dr.PosIndex},T={dr.PosTitle},V={dr.Position}"); + } + } + + if (sb.Length > 0) + { + UTIL.MsgI("The following items have been changed\n" + sb.ToString()); + } + else PUB.log.AddI("No motion information changed"); + +// if (PUB.LockModel.WaitOne(1000) ==false) + { + //PUB.LockModel.Reset(); + try + { + this.ds1.AcceptChanges(); + PUB.mdm.dataSet.MCModel.Clear(); + PUB.mdm.dataSet.MCModel.Merge(this.ds1.MCModel); + PUB.mdm.dataSet.AcceptChanges(); + PUB.mdm.SaveModelM(); + ds1.MCModel.AcceptChanges(); + + //변경된데이터를 바로 적용 합니다 + var curmodelnmae = PUB.Result.mModel.Title; + if (curmodelnmae.isEmpty()) + { + UTIL.MsgE("No specified model, values will not be applied\nPlease select work model again", true); + } + else + { + PUB.log.AddI($"Applying motion model ({curmodelnmae})"); + PUB.Result.mModel.ReadValue(curmodelnmae); + if (PUB.Result.mModel.isSet) + { + PUB.log.AddAT("Motion model application completed: " + PUB.Result.mModel.Title); + } + else UTIL.MsgE($"Motion model application failed\n\nTarget model name({curmodelnmae}) not found"); + } + + + + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + } + finally + { + //PUB.LockModel.Set(); + } + + + + + + + } + //else Util.MsgE("모델정보 저장 실패\n잠시 후 다시 시도하세요"); + } + + private void btCopy_Click(object sender, EventArgs e) + { + if (this.listView1.FocusedItem == null) + { + UTIL.MsgE("Select model to copy", true); + return; + } + + var idx = int.Parse(this.listView1.FocusedItem.Tag.ToString()); + var dr = ds1.MCModel.Where(t => t.idx == idx).FirstOrDefault();// drv.Row as DataSet1.MCModelRow; + if (dr == null) + { + UTIL.MsgE($"Cannot find data for model number({idx})\n\nPlease try again"); + return; + } + + var dlg = UTIL.MsgQ(string.Format("Copy the following model information?\n\nModel name : {0}", dr.Title)); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + + var newdr = this.ds1.MCModel.NewMCModelRow(); + UTIL.CopyData(dr, newdr); + + var newnameidx = 1; + while (true) + { + var newname = dr.Title + $"-Copy({newnameidx++})-"; + if (ds1.MCModel.Where(t => t.Title == newname).Any() == false) + { + newdr.Title = newname; + break; + } + } + + newdr.idx = this.ds1.MCModel.Max(t => t.idx) + 1; + newdr.EndEdit(); + this.ds1.MCModel.AddMCModelRow(newdr); + this.ds1.MCModel.AcceptChanges(); + + //목록추가해준다. + var lv = this.listView1.Items.Add(newdr.Title); + lv.Tag = newdr.idx; + + //상세내역 복사해준다. + var childs = ds1.MCModel.Where(t => t.pidx == dr.idx).ToArray(); + foreach (var dr2 in childs) + { + var newdr2 = this.ds1.MCModel.NewMCModelRow(); + UTIL.CopyData(dr2, newdr2); //모든자료를 먼저 복사한다. + newdr2.pidx = newdr.idx; //인덱스를 바꿔준다. + newdr2.EndEdit(); + newdr2.idx = this.ds1.MCModel.Max(t => t.idx) + 1; + this.ds1.MCModel.AddMCModelRow(newdr2); + } + this.ds1.MCModel.AcceptChanges(); + PUB.log.Add($"{dr.Title} model copy => {newdr.Title}"); + } + + private void toolStripButton10_Click(object sender, EventArgs e) + { + if (PUB.sm.Step == eSMStep.RUN || PUB.sm.Step == eSMStep.WAITSTART || PUB.sm.Step == eSMStep.PAUSE) + { + UTIL.MsgE("Cannot change model because currently operating (waiting)"); + return; + } + //select + this.Validate(); + if (listView1.FocusedItem == null) return; + if (hasChanged()) + { + UTIL.MsgE("Cannot select model because there are unsaved changes", true); + return; + } + + this.Value = listView1.FocusedItem.Text; + DialogResult = System.Windows.Forms.DialogResult.OK; + } + + private void toolStripButton11_Click(object sender, EventArgs e) + { + + } + + private void 그룹설정ToolStripMenuItem_Click(object sender, EventArgs e) + { + var f = new Dialog.Model_Motion_Desc(this.ds1); + f.ShowDialog(); + } + + private void toolStripButton11_ButtonClick(object sender, EventArgs e) + { + if (this.listView1.FocusedItem == null) + { + UTIL.MsgE("Select a model", true); + return; + } + var idx = int.Parse(listView1.FocusedItem.Tag.ToString()); + var dr = this.ds1.MCModel.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) + { + UTIL.MsgE($"No data found for index({idx})\n\nPlease try again", true); + return; + } + + using (var f = new Dialog.Motion_MoveToGroup(this.ds1, dr.idx)) + f.ShowDialog(); + } + + private void btJogLeft_Click(object sender, EventArgs e) + { + + } + + private void dvPosition_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + + private void listView1_SelectedIndexChanged(object sender, EventArgs e) + { + if (listView1.FocusedItem == null) + { + //Util.MsgE("모델을 다시 선택하세요"); + return; + } + RefreshMotorPosition("listview selinde"); + } + + private void btEdit_Click(object sender, EventArgs e) + { + if (this.listView1.FocusedItem == null) + { + UTIL.MsgE("Select target to change and try again", true); + return; + } + var idx = int.Parse(listView1.FocusedItem.Tag.ToString()); + var dr = this.ds1.MCModel.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) + { + UTIL.MsgE($"No data found for index({idx}) value.\nPlease try again"); + return; + } + + var f = new AR.Dialog.fTouchKeyFull("Change Model Name", dr.Title); + if (f.ShowDialog() != DialogResult.OK) return; + + var valstr = f.tbInput.Text.Trim(); + if (dr.Title.Equals(valstr)) + { + UTIL.MsgE("Name has not been changed", true); + return; + } + + if (ds1.MCModel.Where(t => t.Title == valstr).Any()) + { + UTIL.MsgE("Name already exists", true); + return; + } + + var dlg = UTIL.MsgQ("Change the name of currently selected model?\n\n" + + $"Before : {dr.Title}\n" + + $"After : {valstr}"); + + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + + dr.Title = valstr; + dr.EndEdit(); + this.ds1.MCModel.AcceptChanges(); + + this.listView1.FocusedItem.SubItems[0].Text = valstr; + + RefreshMotorPosition("edit button"); + } + } +} + diff --git a/Handler/Project/Dialog/Model_Motion.resx b/Handler/Project/Dialog/Model_Motion.resx new file mode 100644 index 0000000..9c14fe2 --- /dev/null +++ b/Handler/Project/Dialog/Model_Motion.resx @@ -0,0 +1,2093 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 292, 17 + + + 402, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHpSURBVDhPlZBNiFJRGIa/VRRUEHF13NxoEUUTDDKINwh1 + /MHAv9qJ7TOjaFO0akJ06S5k1kEtDKbSnCwm8Y8JlJkxciqCyX2Lpnuv3p/F4JtXzizkxuA8q/d8vM93 + DodmYfRZOKFsLNxmx9lQW4u80lq8Z+ThxpWQ0pjvGllr8OflOj/bMqW18FVpzVeU+sWytn0Dwwb/aFCz + iYPq2QSrHM6weWlZ+5KA/uM+9N0nULdCED+cVn/XuJOsYmbYvjw3vrWqNC5A245C/5VB80UU3eIt7Nbu + QO0sQfp0HNJHWmHK/xnW+WW1exPNlzHouo7RaISttwlo3+/ib4W+7ZXpHKuakZtznFy1VsLhMDqdDjRN + Q6/XQ+15CPrPh5DKNJDek8Dq06jrNn6wfqYYi8WQTCaRy+VQKBRQXlkay4+xs0b70hptiiV6yhQz0Wh0 + IguCAK/Xi0gkAmUzBLlqg1w5hb0S8axq5kB2Op3weDywWCzGk5/tvBvfXKKrUpG64mtKsfo08Xgc2Wx2 + IrvdbnAcB2Mul+ia9IYqRsYrOvZnla4beYpgMIhMJmOSDxBXKcCiGZ/Ph3Q6DYfDAZfLZZIPJZVKod/v + w263IxAIHE02MBa0223k8/nJh7Hx7Pj9/gfGs61W69FlIvoH9UQK66qEeO0AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHpSURBVDhPlZBNiFJRGIa/VRRUEHF13NxoEUUTDDKINwh1 + /MHAv9qJ7TOjaFO0akJ06S5k1kEtDKbSnCwm8Y8JlJkxciqCyX2Lpnuv3p/F4JtXzizkxuA8q/d8vM93 + DodmYfRZOKFsLNxmx9lQW4u80lq8Z+ThxpWQ0pjvGllr8OflOj/bMqW18FVpzVeU+sWytn0Dwwb/aFCz + iYPq2QSrHM6weWlZ+5KA/uM+9N0nULdCED+cVn/XuJOsYmbYvjw3vrWqNC5A245C/5VB80UU3eIt7Nbu + QO0sQfp0HNJHWmHK/xnW+WW1exPNlzHouo7RaISttwlo3+/ib4W+7ZXpHKuakZtznFy1VsLhMDqdDjRN + Q6/XQ+15CPrPh5DKNJDek8Dq06jrNn6wfqYYi8WQTCaRy+VQKBRQXlkay4+xs0b70hptiiV6yhQz0Wh0 + IguCAK/Xi0gkAmUzBLlqg1w5hb0S8axq5kB2Op3weDywWCzGk5/tvBvfXKKrUpG64mtKsfo08Xgc2Wx2 + IrvdbnAcB2Mul+ia9IYqRsYrOvZnla4beYpgMIhMJmOSDxBXKcCiGZ/Ph3Q6DYfDAZfLZZIPJZVKod/v + w263IxAIHE02MBa0223k8/nJh7Hx7Pj9/gfGs61W69FlIvoH9UQK66qEeO0AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHpSURBVDhPlZBNiFJRGIa/VRRUEHF13NxoEUUTDDKINwh1 + /MHAv9qJ7TOjaFO0akJ06S5k1kEtDKbSnCwm8Y8JlJkxciqCyX2Lpnuv3p/F4JtXzizkxuA8q/d8vM93 + DodmYfRZOKFsLNxmx9lQW4u80lq8Z+ThxpWQ0pjvGllr8OflOj/bMqW18FVpzVeU+sWytn0Dwwb/aFCz + iYPq2QSrHM6weWlZ+5KA/uM+9N0nULdCED+cVn/XuJOsYmbYvjw3vrWqNC5A245C/5VB80UU3eIt7Nbu + QO0sQfp0HNJHWmHK/xnW+WW1exPNlzHouo7RaISttwlo3+/ib4W+7ZXpHKuakZtznFy1VsLhMDqdDjRN + Q6/XQ+15CPrPh5DKNJDek8Dq06jrNn6wfqYYi8WQTCaRy+VQKBRQXlkay4+xs0b70hptiiV6yhQz0Wh0 + IguCAK/Xi0gkAmUzBLlqg1w5hb0S8axq5kB2Op3weDywWCzGk5/tvBvfXKKrUpG64mtKsfo08Xgc2Wx2 + IrvdbnAcB2Mul+ia9IYqRsYrOvZnla4beYpgMIhMJmOSDxBXKcCiGZ/Ph3Q6DYfDAZfLZZIPJZVKod/v + w263IxAIHE02MBa0223k8/nJh7Hx7Pj9/gfGs61W69FlIvoH9UQK66qEeO0AAAAASUVORK5CYII= + + + + 195, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 88, 17 + + + 468, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAwFJREFUWEft + ldtOE1EUhnkXfQyv9DVUhGJUiIlIENoarDUcDIkHqEZDh85AI+lwIyEQmWCiRfFAIARbUFIKRlCkHqAx + 0Qvpcv7pnrHAps6UmdaLLvIluzvsWV/W2oeKctgVnY0SmcF/XSJ3Z5CaCwRr/R0S3XCHr7LU5gLJE/E0 + l0nlowESLK9v0vtUuiCwFt8I+OUfliTNCqIKvMRWwDfi0ylrkk4I6m3dvQa/8V1LkqUQBKYlSyUITEmW + UhD8U7LUgiCv5P8gCGJTG9p9y7T+hhOC+5FPEBxI0K6LmpdHx7Lg1JPPhmBAGNUS6K2zCtYGHyjcPDqW + BYtNWfCglAUPiilB3gl0ktzcpgWLFWVBs/FmdZF6ojI1RNqpJuTVaJDbqe5eGymTs6UT/LSZIv9wgC5G + 2qg72kuDsSEaXVI0MO5S5y4MtNJluYteT68UJhhdLwx5Pkln+n0UeCaSsvyYlBU+Y8vj1D0h0tk+H/la + 7hangqhcbfgK9c0McqV49M3IVBP00vFg82Gmlg0nBNFWrXIckXyg5S7R84qpZcNuQRwI7Dm0jiexm+dr + L4wx1pwLt6Qrg5eOMT3792DrWEQ9EKEdEvsR/7JAGfVv4es7Y06tYkatYj/Ts7+CuErk+NAOkdwq6cx/ + fctWkDbW5+XYQ6qRPKtMz37B06KXRhKKkXBpM0mZTIZmN+aMOb1yiIUcOTC6NEZVvU2/mJ4zgkiiJ1z8 + ltDmITSXiuWVAyPq2lOC+yfTs38Pnh/o2NNiVBGhiyFy25qL1mLRwRYH1Seta2LvIdErieBVTufWU2Hb + 1esVmZ79grG1RaqPtHKvmcT35L6VA1hTG/alT/Q0H2V69gsirg3fKfCiFn67JM9LppYNJwTXt1JUF/Zp + zxdPhIek/m9VyL1Veb/xEFPLBgRzgaAd1N/sJpfg1Z6vfK/Ko+Q43Y4K29Uhz9ZJoekI0ypO4OHH24rn + CxI4obgjAcaYw55DW/dUrpiBt7Va9Ei4PnAJA3X8wRVyizsOhBEVFX8AAjiR3dGw+TcAAAAASUVORK5C + YII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD1SURBVFhH7dAxCsJAEAXQ3E4EbbXRCyiewVaIvZWgB7D1 + ChpQLEI6wdLWNk3WDIyN7GaT/FmLOB9+tzPz2Kiz6a1OBu1gnVx4nXzowONVtC7Nj5fbYhifE14pGwng + IcvNqET24+TKa+UiATzei3BIKWAtJD1GO9+lVoirNPMBepH0GAnNTzc3s9hnVoyt38BKpAQwfeZmUiJn + NX/SBnQiJYB0tAmSZnxlnhyQ2vQnXQ0GpEoggwKpKDI4kIogxYG+2hBVpRnm4UBfFIhGgWgUiEaBaBSI + RoFoFIhGgWgUiIb2tynzfgPkU+2iwL8Ahi6f6lqi6A3RmINXQmh9mwAAAABJRU5ErkJggg== + + + + 81 + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/Model_Motion_Desc.Designer.cs b/Handler/Project/Dialog/Model_Motion_Desc.Designer.cs new file mode 100644 index 0000000..f48b0e7 --- /dev/null +++ b/Handler/Project/Dialog/Model_Motion_Desc.Designer.cs @@ -0,0 +1,1060 @@ +namespace Project.Dialog +{ + partial class Model_Motion_Desc + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Model_Motion_Desc)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle(); + this.dv = new System.Windows.Forms.DataGridView(); + this.titleDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.ds1 = new Project.DataSet1(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.dvPosition = new arCtl.arDatagridView(); + this.MotIndex = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MotName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.posTitleDataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Category = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Description = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.btPos = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btspeed = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btacc = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btdcc = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btGo = new System.Windows.Forms.DataGridViewButtonColumn(); + this.btSet = new System.Windows.Forms.DataGridViewButtonColumn(); + this.bsPos = new System.Windows.Forms.BindingSource(this.components); + this.panel2 = new System.Windows.Forms.Panel(); + this.treeView1 = new System.Windows.Forms.TreeView(); + this.toolStrip2 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton6 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton7 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton8 = new System.Windows.Forms.ToolStripButton(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.listView1 = new System.Windows.Forms.ListView(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.bindingNavigator1 = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.lbMotPos = new System.Windows.Forms.ToolStripLabel(); + this.dvMot = new arCtl.arDatagridView(); + this.dvc_axis = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_desc = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.panLeft = new System.Windows.Forms.Panel(); + this.arLabel18 = new arCtl.arLabel(); + this.panel6 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tabControl5 = new System.Windows.Forms.TabControl(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.splitH = new System.Windows.Forms.Panel(); + this.panel9 = new System.Windows.Forms.Panel(); + this.panTopMenu = new System.Windows.Forms.Panel(); + this.btSave = new System.Windows.Forms.Button(); + this.toolStripButton9 = new System.Windows.Forms.ToolStripButton(); + ((System.ComponentModel.ISupportInitialize)(this.dv)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ds1)).BeginInit(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvPosition)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPos)).BeginInit(); + this.panel2.SuspendLayout(); + this.toolStrip2.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).BeginInit(); + this.bindingNavigator1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvMot)).BeginInit(); + this.panLeft.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel1.SuspendLayout(); + this.tabControl5.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.panTopMenu.SuspendLayout(); + this.SuspendLayout(); + // + // dv + // + this.dv.AllowUserToAddRows = false; + this.dv.AllowUserToDeleteRows = false; + this.dv.AutoGenerateColumns = false; + this.dv.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dv.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; + this.dv.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv.ColumnHeadersHeight = 35; + this.dv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dv.ColumnHeadersVisible = false; + this.dv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.titleDataGridViewTextBoxColumn}); + this.dv.DataSource = this.bs; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(5); + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv.DefaultCellStyle = dataGridViewCellStyle1; + this.dv.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv.Location = new System.Drawing.Point(0, 34); + this.dv.MultiSelect = false; + this.dv.Name = "dv"; + this.dv.RowHeadersVisible = false; + this.dv.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.dv.Size = new System.Drawing.Size(238, 223); + this.dv.TabIndex = 1; + this.dv.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dv_DataError); + // + // titleDataGridViewTextBoxColumn + // + this.titleDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.titleDataGridViewTextBoxColumn.DataPropertyName = "Title"; + this.titleDataGridViewTextBoxColumn.HeaderText = "Title"; + this.titleDataGridViewTextBoxColumn.Name = "titleDataGridViewTextBoxColumn"; + // + // bs + // + this.bs.DataMember = "MCModel"; + this.bs.DataSource = this.ds1; + this.bs.Filter = "isnull(title,\'\') <> \'\'"; + this.bs.Sort = "idx"; + this.bs.CurrentChanged += new System.EventHandler(this.bs_CurrentChanged_1); + // + // ds1 + // + this.ds1.DataSetName = "DataSet1"; + this.ds1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(1249, 709); + this.tabControl1.TabIndex = 141; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.dvPosition); + this.tabPage1.Controls.Add(this.panel2); + this.tabPage1.Controls.Add(this.richTextBox1); + this.tabPage1.Controls.Add(this.bindingNavigator1); + this.tabPage1.Location = new System.Drawing.Point(4, 27); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(1241, 678); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Position"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // dvPosition + // + this.dvPosition.A_DelCurrentCell = true; + this.dvPosition.A_EnterToTab = true; + this.dvPosition.A_KoreanField = null; + this.dvPosition.A_UpperField = null; + this.dvPosition.A_ViewRownumOnHeader = true; + this.dvPosition.AllowUserToAddRows = false; + this.dvPosition.AllowUserToDeleteRows = false; + this.dvPosition.AllowUserToResizeColumns = false; + this.dvPosition.AllowUserToResizeRows = false; + this.dvPosition.AutoGenerateColumns = false; + this.dvPosition.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dvPosition.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dvPosition.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.MotIndex, + this.MotName, + this.posTitleDataGridViewTextBoxColumn1, + this.Category, + this.Description, + this.btPos, + this.btspeed, + this.btacc, + this.btdcc, + this.btGo, + this.btSet}); + this.dvPosition.DataSource = this.bsPos; + dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle8.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dvPosition.DefaultCellStyle = dataGridViewCellStyle8; + this.dvPosition.Dock = System.Windows.Forms.DockStyle.Fill; + this.dvPosition.Location = new System.Drawing.Point(3, 3); + this.dvPosition.Name = "dvPosition"; + dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle9.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle9.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle9.ForeColor = System.Drawing.Color.Black; + dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dvPosition.RowHeadersDefaultCellStyle = dataGridViewCellStyle9; + this.dvPosition.RowHeadersVisible = false; + this.dvPosition.RowTemplate.DefaultCellStyle.BackColor = System.Drawing.Color.White; + this.dvPosition.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.dvPosition.RowTemplate.DefaultCellStyle.ForeColor = System.Drawing.Color.Black; + this.dvPosition.RowTemplate.DefaultCellStyle.Padding = new System.Windows.Forms.Padding(2); + this.dvPosition.RowTemplate.Height = 50; + this.dvPosition.Size = new System.Drawing.Size(868, 572); + this.dvPosition.TabIndex = 140; + this.dvPosition.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.arDatagridView2_CellClick); + // + // MotIndex + // + this.MotIndex.DataPropertyName = "MotIndex"; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.MotIndex.DefaultCellStyle = dataGridViewCellStyle2; + this.MotIndex.HeaderText = "Axis"; + this.MotIndex.Name = "MotIndex"; + this.MotIndex.Width = 59; + // + // MotName + // + this.MotName.DataPropertyName = "MotName"; + this.MotName.HeaderText = "MotName"; + this.MotName.Name = "MotName"; + this.MotName.Width = 95; + // + // posTitleDataGridViewTextBoxColumn1 + // + this.posTitleDataGridViewTextBoxColumn1.DataPropertyName = "PosTitle"; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.posTitleDataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle3; + this.posTitleDataGridViewTextBoxColumn1.HeaderText = "Title"; + this.posTitleDataGridViewTextBoxColumn1.Name = "posTitleDataGridViewTextBoxColumn1"; + this.posTitleDataGridViewTextBoxColumn1.Width = 61; + // + // Category + // + this.Category.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Category.DataPropertyName = "Category"; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.Category.DefaultCellStyle = dataGridViewCellStyle4; + this.Category.HeaderText = "Category"; + this.Category.Name = "Category"; + this.Category.Width = 200; + // + // Description + // + this.Description.DataPropertyName = "Description"; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.Font = new System.Drawing.Font("맑은 고딕", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Description.DefaultCellStyle = dataGridViewCellStyle5; + this.Description.HeaderText = "Description"; + this.Description.Name = "Description"; + this.Description.Width = 103; + // + // btPos + // + this.btPos.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btPos.DataPropertyName = "Position"; + this.btPos.HeaderText = "Position"; + this.btPos.Name = "btPos"; + this.btPos.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btPos.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // btspeed + // + this.btspeed.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btspeed.DataPropertyName = "Speed"; + this.btspeed.HeaderText = "Speed"; + this.btspeed.Name = "btspeed"; + this.btspeed.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btspeed.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.btspeed.Width = 50; + // + // btacc + // + this.btacc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btacc.DataPropertyName = "SpeedAcc"; + this.btacc.HeaderText = "Acc"; + this.btacc.Name = "btacc"; + this.btacc.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btacc.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.btacc.Text = "Acc"; + this.btacc.Width = 50; + // + // btdcc + // + this.btdcc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.btdcc.DataPropertyName = "SpeedDcc"; + this.btdcc.HeaderText = "Dcc"; + this.btdcc.Name = "btdcc"; + this.btdcc.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.btdcc.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.btdcc.Text = "Dcc"; + this.btdcc.Width = 50; + // + // btGo + // + this.btGo.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.btGo.DefaultCellStyle = dataGridViewCellStyle6; + this.btGo.HeaderText = "Go"; + this.btGo.Name = "btGo"; + this.btGo.Text = "Go"; + this.btGo.Width = 50; + // + // btSet + // + this.btSet.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle7.BackColor = System.Drawing.Color.Blue; + this.btSet.DefaultCellStyle = dataGridViewCellStyle7; + this.btSet.HeaderText = "Set"; + this.btSet.Name = "btSet"; + this.btSet.Text = "Set"; + this.btSet.Width = 50; + // + // bsPos + // + this.bsPos.DataMember = "MCModel"; + this.bsPos.DataSource = this.ds1; + this.bsPos.Sort = "PosTitle,idx"; + this.bsPos.CurrentChanged += new System.EventHandler(this.bsPos_CurrentChanged); + // + // panel2 + // + this.panel2.Controls.Add(this.treeView1); + this.panel2.Controls.Add(this.toolStrip2); + this.panel2.Controls.Add(this.toolStrip1); + this.panel2.Controls.Add(this.listView1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Right; + this.panel2.Location = new System.Drawing.Point(871, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(367, 572); + this.panel2.TabIndex = 144; + // + // treeView1 + // + this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeView1.Location = new System.Drawing.Point(0, 188); + this.treeView1.Name = "treeView1"; + this.treeView1.Size = new System.Drawing.Size(367, 359); + this.treeView1.TabIndex = 145; + // + // toolStrip2 + // + this.toolStrip2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton4, + this.toolStripButton6, + this.toolStripButton7, + this.toolStripButton8}); + this.toolStrip2.Location = new System.Drawing.Point(0, 547); + this.toolStrip2.Name = "toolStrip2"; + this.toolStrip2.Size = new System.Drawing.Size(367, 25); + this.toolStrip2.TabIndex = 147; + this.toolStrip2.Text = "toolStrip2"; + // + // toolStripButton4 + // + this.toolStripButton4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton4.Image"))); + this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton4.Name = "toolStripButton4"; + this.toolStripButton4.Size = new System.Drawing.Size(51, 22); + this.toolStripButton4.Text = "Add"; + this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); + // + // toolStripButton6 + // + this.toolStripButton6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton6.Image"))); + this.toolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton6.Name = "toolStripButton6"; + this.toolStripButton6.Size = new System.Drawing.Size(51, 22); + this.toolStripButton6.Text = "Delete"; + this.toolStripButton6.Click += new System.EventHandler(this.toolStripButton6_Click); + // + // toolStripButton7 + // + this.toolStripButton7.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image"))); + this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton7.Name = "toolStripButton7"; + this.toolStripButton7.Size = new System.Drawing.Size(66, 22); + this.toolStripButton7.Text = "Refresh"; + this.toolStripButton7.Click += new System.EventHandler(this.toolStripButton7_Click); + // + // toolStripButton8 + // + this.toolStripButton8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton8.Image"))); + this.toolStripButton8.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton8.Name = "toolStripButton8"; + this.toolStripButton8.Size = new System.Drawing.Size(51, 22); + this.toolStripButton8.Text = "Edit"; + this.toolStripButton8.Click += new System.EventHandler(this.toolStripButton8_Click); + // + // toolStrip1 + // + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton1, + this.toolStripButton2, + this.toolStripButton3}); + this.toolStrip1.Location = new System.Drawing.Point(0, 163); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(367, 25); + this.toolStrip1.TabIndex = 146; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripButton1 + // + this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(51, 22); + this.toolStripButton1.Text = "Register"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click_1); + // + // toolStripButton2 + // + this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(51, 22); + this.toolStripButton2.Text = "Unregister"; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); + // + // toolStripButton3 + // + this.toolStripButton3.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image"))); + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(66, 22); + this.toolStripButton3.Text = "Refresh"; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // + // listView1 + // + this.listView1.Dock = System.Windows.Forms.DockStyle.Top; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(0, 0); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(367, 163); + this.listView1.TabIndex = 144; + this.listView1.UseCompatibleStateImageBehavior = false; + // + // richTextBox1 + // + this.richTextBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsPos, "Category", true)); + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.richTextBox1.Location = new System.Drawing.Point(3, 575); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(1235, 75); + this.richTextBox1.TabIndex = 142; + this.richTextBox1.Text = ""; + // + // bindingNavigator1 + // + this.bindingNavigator1.AddNewItem = null; + this.bindingNavigator1.BindingSource = this.bsPos; + this.bindingNavigator1.CountItem = this.bindingNavigatorCountItem; + this.bindingNavigator1.DeleteItem = null; + this.bindingNavigator1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bindingNavigator1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.toolStripButton5, + this.toolStripButton9, + this.toolStripSeparator1, + this.lbMotPos}); + this.bindingNavigator1.Location = new System.Drawing.Point(3, 650); + this.bindingNavigator1.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bindingNavigator1.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bindingNavigator1.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bindingNavigator1.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bindingNavigator1.Name = "bindingNavigator1"; + this.bindingNavigator1.PositionItem = this.bindingNavigatorPositionItem; + this.bindingNavigator1.Size = new System.Drawing.Size(1235, 25); + this.bindingNavigator1.TabIndex = 141; + this.bindingNavigator1.Text = "bindingNavigator1"; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.ForeColor = System.Drawing.Color.Black; + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total item count"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move to first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move to previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F); + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move to next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move to last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton5 + // + this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image"))); + this.toolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton5.Name = "toolStripButton5"; + this.toolStripButton5.Size = new System.Drawing.Size(75, 22); + this.toolStripButton5.Text = "Group Settings"; + this.toolStripButton5.Click += new System.EventHandler(this.toolStripButton5_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); + // + // lbMotPos + // + this.lbMotPos.Name = "lbMotPos"; + this.lbMotPos.Size = new System.Drawing.Size(17, 22); + this.lbMotPos.Text = "--"; + // + // dvMot + // + this.dvMot.A_DelCurrentCell = true; + this.dvMot.A_EnterToTab = true; + this.dvMot.A_KoreanField = null; + this.dvMot.A_UpperField = null; + this.dvMot.A_ViewRownumOnHeader = false; + this.dvMot.AllowUserToAddRows = false; + this.dvMot.AllowUserToDeleteRows = false; + this.dvMot.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dvMot.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dvMot.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dvc_axis, + this.Column10, + this.Column2, + this.Column3, + this.Column4, + this.Column5, + this.Column6, + this.Column7, + this.Column8, + this.Column9, + this.dvc_desc}); + dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle14.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle14.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle14.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle14.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle14.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dvMot.DefaultCellStyle = dataGridViewCellStyle14; + this.dvMot.Dock = System.Windows.Forms.DockStyle.Fill; + this.dvMot.Location = new System.Drawing.Point(3, 3); + this.dvMot.MultiSelect = false; + this.dvMot.Name = "dvMot"; + this.dvMot.ReadOnly = true; + this.dvMot.RowTemplate.Height = 23; + this.dvMot.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dvMot.Size = new System.Drawing.Size(997, 220); + this.dvMot.TabIndex = 36; + this.dvMot.SelectionChanged += new System.EventHandler(this.dvMot_SelectionChanged); + // + // dvc_axis + // + this.dvc_axis.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.dvc_axis.DefaultCellStyle = dataGridViewCellStyle10; + this.dvc_axis.HeaderText = "Axis"; + this.dvc_axis.Name = "dvc_axis"; + this.dvc_axis.ReadOnly = true; + this.dvc_axis.Width = 40; + // + // Column10 + // + this.Column10.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.Column10.DefaultCellStyle = dataGridViewCellStyle11; + this.Column10.HeaderText = "Name"; + this.Column10.Name = "Column10"; + this.Column10.ReadOnly = true; + this.Column10.Width = 180; + // + // Column2 + // + dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + this.Column2.DefaultCellStyle = dataGridViewCellStyle12; + this.Column2.HeaderText = "Cmd"; + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + // + // Column3 + // + dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + this.Column3.DefaultCellStyle = dataGridViewCellStyle13; + this.Column3.HeaderText = "Act"; + this.Column3.Name = "Column3"; + this.Column3.ReadOnly = true; + // + // Column4 + // + this.Column4.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column4.HeaderText = "Home"; + this.Column4.Name = "Column4"; + this.Column4.ReadOnly = true; + this.Column4.Width = 50; + // + // Column5 + // + this.Column5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column5.HeaderText = "-"; + this.Column5.Name = "Column5"; + this.Column5.ReadOnly = true; + this.Column5.Width = 50; + // + // Column6 + // + this.Column6.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column6.HeaderText = "+"; + this.Column6.Name = "Column6"; + this.Column6.ReadOnly = true; + this.Column6.Width = 50; + // + // Column7 + // + this.Column7.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column7.HeaderText = "Inp"; + this.Column7.Name = "Column7"; + this.Column7.ReadOnly = true; + this.Column7.Width = 50; + // + // Column8 + // + this.Column8.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column8.HeaderText = "Alm"; + this.Column8.Name = "Column8"; + this.Column8.ReadOnly = true; + this.Column8.Width = 50; + // + // Column9 + // + this.Column9.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Column9.HeaderText = "H.Set"; + this.Column9.Name = "Column9"; + this.Column9.ReadOnly = true; + this.Column9.Width = 50; + // + // dvc_desc + // + this.dvc_desc.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dvc_desc.HeaderText = "Description"; + this.dvc_desc.Name = "dvc_desc"; + this.dvc_desc.ReadOnly = true; + // + // tmDisplay + // + this.tmDisplay.Interval = 500; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // panLeft + // + this.panLeft.Controls.Add(this.dv); + this.panLeft.Controls.Add(this.arLabel18); + this.panLeft.Dock = System.Windows.Forms.DockStyle.Left; + this.panLeft.Location = new System.Drawing.Point(0, 0); + this.panLeft.Name = "panLeft"; + this.panLeft.Size = new System.Drawing.Size(238, 257); + this.panLeft.TabIndex = 3; + // + // arLabel18 + // + this.arLabel18.BackColor = System.Drawing.Color.Gray; + this.arLabel18.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.arLabel18.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel18.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel18.BorderColorOver = System.Drawing.Color.DodgerBlue; + this.arLabel18.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel18.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel18.Cursor = System.Windows.Forms.Cursors.Arrow; + this.arLabel18.Dock = System.Windows.Forms.DockStyle.Top; + this.arLabel18.Font = new System.Drawing.Font("Cambria", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.arLabel18.ForeColor = System.Drawing.Color.White; + this.arLabel18.GradientEnable = true; + this.arLabel18.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.arLabel18.GradientRepeatBG = false; + this.arLabel18.isButton = false; + this.arLabel18.Location = new System.Drawing.Point(0, 0); + this.arLabel18.Margin = new System.Windows.Forms.Padding(0); + this.arLabel18.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel18.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel18.msg = null; + this.arLabel18.Name = "arLabel18"; + this.arLabel18.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel18.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel18.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel18.ProgressEnable = false; + this.arLabel18.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel18.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel18.ProgressMax = 100F; + this.arLabel18.ProgressMin = 0F; + this.arLabel18.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel18.ProgressValue = 0F; + this.arLabel18.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel18.Sign = ""; + this.arLabel18.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel18.SignColor = System.Drawing.Color.Yellow; + this.arLabel18.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel18.Size = new System.Drawing.Size(238, 34); + this.arLabel18.TabIndex = 6; + this.arLabel18.Text = "--"; + this.arLabel18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel18.TextShadow = true; + this.arLabel18.TextVisible = true; + // + // panel6 + // + this.panel6.BackColor = System.Drawing.SystemColors.Control; + this.panel6.Controls.Add(this.panel3); + this.panel6.Controls.Add(this.panel1); + this.panel6.Controls.Add(this.splitH); + this.panel6.Controls.Add(this.panel9); + this.panel6.Controls.Add(this.panTopMenu); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.ForeColor = System.Drawing.SystemColors.ControlText; + this.panel6.Location = new System.Drawing.Point(0, 0); + this.panel6.Name = "panel6"; + this.panel6.Padding = new System.Windows.Forms.Padding(5); + this.panel6.Size = new System.Drawing.Size(1264, 1021); + this.panel6.TabIndex = 4; + // + // panel3 + // + this.panel3.Controls.Add(this.tabControl1); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(10, 262); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1249, 709); + this.panel3.TabIndex = 136; + // + // panel1 + // + this.panel1.Controls.Add(this.tabControl5); + this.panel1.Controls.Add(this.panLeft); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(10, 5); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1249, 257); + this.panel1.TabIndex = 137; + // + // tabControl5 + // + this.tabControl5.Controls.Add(this.tabPage5); + this.tabControl5.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl5.Location = new System.Drawing.Point(238, 0); + this.tabControl5.Name = "tabControl5"; + this.tabControl5.SelectedIndex = 0; + this.tabControl5.Size = new System.Drawing.Size(1011, 257); + this.tabControl5.TabIndex = 135; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.dvMot); + this.tabPage5.Location = new System.Drawing.Point(4, 27); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.Padding = new System.Windows.Forms.Padding(3); + this.tabPage5.Size = new System.Drawing.Size(1003, 226); + this.tabPage5.TabIndex = 1; + this.tabPage5.Text = "Motion Status"; + this.tabPage5.UseVisualStyleBackColor = true; + // + // splitH + // + this.splitH.Dock = System.Windows.Forms.DockStyle.Left; + this.splitH.Location = new System.Drawing.Point(5, 5); + this.splitH.Name = "splitH"; + this.splitH.Size = new System.Drawing.Size(5, 966); + this.splitH.TabIndex = 4; + // + // panel9 + // + this.panel9.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel9.Location = new System.Drawing.Point(5, 971); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(1254, 5); + this.panel9.TabIndex = 75; + // + // panTopMenu + // + this.panTopMenu.BackColor = System.Drawing.SystemColors.Control; + this.panTopMenu.Controls.Add(this.btSave); + this.panTopMenu.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panTopMenu.Location = new System.Drawing.Point(5, 976); + this.panTopMenu.Name = "panTopMenu"; + this.panTopMenu.Size = new System.Drawing.Size(1254, 40); + this.panTopMenu.TabIndex = 134; + // + // btSave + // + this.btSave.Dock = System.Windows.Forms.DockStyle.Right; + this.btSave.FlatAppearance.BorderSize = 0; + this.btSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btSave.Font = new System.Drawing.Font("맑은 고딕", 11.25F); + this.btSave.Image = ((System.Drawing.Image)(resources.GetObject("btSave.Image"))); + this.btSave.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btSave.Location = new System.Drawing.Point(1139, 0); + this.btSave.Name = "btSave"; + this.btSave.Size = new System.Drawing.Size(115, 40); + this.btSave.TabIndex = 19; + this.btSave.Text = "Save(&S)"; + this.btSave.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btSave.UseVisualStyleBackColor = true; + this.btSave.Click += new System.EventHandler(this.btSave_Click); + // + // toolStripButton9 + // + this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image"))); + this.toolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton9.Name = "toolStripButton9"; + this.toolStripButton9.Size = new System.Drawing.Size(111, 22); + this.toolStripButton9.Text = "Auto Adjust Column Width"; + this.toolStripButton9.Click += new System.EventHandler(this.toolStripButton9_Click); + // + // Model_Motion_Desc + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(1264, 1021); + this.Controls.Add(this.panel6); + this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ForeColor = System.Drawing.Color.White; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Model_Motion_Desc"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Motion Group Setting"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.Load += new System.EventHandler(this.@__Load); + ((System.ComponentModel.ISupportInitialize)(this.dv)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ds1)).EndInit(); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvPosition)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPos)).EndInit(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.toolStrip2.ResumeLayout(false); + this.toolStrip2.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).EndInit(); + this.bindingNavigator1.ResumeLayout(false); + this.bindingNavigator1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dvMot)).EndInit(); + this.panLeft.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.tabControl5.ResumeLayout(false); + this.tabPage5.ResumeLayout(false); + this.panTopMenu.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private DataSet1 ds1; + private System.Windows.Forms.DataGridView dv; + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.Panel panLeft; + private System.Windows.Forms.BindingSource bs; + private System.Windows.Forms.DataGridViewTextBoxColumn titleDataGridViewTextBoxColumn; + private arCtl.arLabel arLabel18; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Panel splitH; + private System.Windows.Forms.Panel panel9; + private System.Windows.Forms.BindingSource bsPos; + private arCtl.arDatagridView dvPosition; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.Panel panTopMenu; + private System.Windows.Forms.Button btSave; + private System.Windows.Forms.BindingNavigator bindingNavigator1; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private arCtl.arDatagridView dvMot; + private System.Windows.Forms.TabControl tabControl5; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_axis; + private System.Windows.Forms.DataGridViewTextBoxColumn Column10; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; + private System.Windows.Forms.DataGridViewTextBoxColumn Column6; + private System.Windows.Forms.DataGridViewTextBoxColumn Column7; + private System.Windows.Forms.DataGridViewTextBoxColumn Column8; + private System.Windows.Forms.DataGridViewTextBoxColumn Column9; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_desc; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ToolStripButton toolStripButton5; + private System.Windows.Forms.ToolStripLabel lbMotPos; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.TreeView treeView1; + private System.Windows.Forms.ToolStrip toolStrip2; + private System.Windows.Forms.ToolStripButton toolStripButton4; + private System.Windows.Forms.ToolStripButton toolStripButton6; + private System.Windows.Forms.ToolStripButton toolStripButton7; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripButton toolStripButton8; + private System.Windows.Forms.DataGridViewTextBoxColumn MotIndex; + private System.Windows.Forms.DataGridViewTextBoxColumn MotName; + private System.Windows.Forms.DataGridViewTextBoxColumn posTitleDataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn Category; + private System.Windows.Forms.DataGridViewTextBoxColumn Description; + private System.Windows.Forms.DataGridViewButtonColumn btPos; + private System.Windows.Forms.DataGridViewButtonColumn btspeed; + private System.Windows.Forms.DataGridViewButtonColumn btacc; + private System.Windows.Forms.DataGridViewButtonColumn btdcc; + private System.Windows.Forms.DataGridViewButtonColumn btGo; + private System.Windows.Forms.DataGridViewButtonColumn btSet; + private System.Windows.Forms.ToolStripButton toolStripButton9; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/Model_Motion_Desc.cs b/Handler/Project/Dialog/Model_Motion_Desc.cs new file mode 100644 index 0000000..c1eec81 --- /dev/null +++ b/Handler/Project/Dialog/Model_Motion_Desc.cs @@ -0,0 +1,894 @@ +#pragma warning disable IDE1006 // 명명 스타일 + +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; + +namespace Project.Dialog +{ + public partial class Model_Motion_Desc : Form + { + public string Value = string.Empty; + short axisIndex = 0; + eAxis axis = eAxis.Z_THETA;// + Color sbBackColor = Color.FromArgb(200, 200, 200); + DataSet1 ds; + + public Model_Motion_Desc(DataSet1 ds_) + { + InitializeComponent(); + + this.ds = ds_; + //this.bs.Filter = string.Empty; + //this.bsPos.Filter = string.Empty; + + + this.bs.DataSource = ds_; + this.bsPos.DataSource = ds_; + + //this.bs.DataMember = string.Empty; + //this.bsPos.DataMember = string.Empty; + + if (System.Diagnostics.Debugger.IsAttached == false) + { + // fb = new Dialog.fBlurPanel(); + //fb.Show(); + } + + this.KeyPreview = true; + this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); }; + this.StartPosition = FormStartPosition.CenterScreen; + this.FormClosed += __Closed; + + var axlist = Enum.GetNames(typeof(eAxis)); + var axvalues = Enum.GetValues(typeof(eAxis)); + + var preValueList = new List(); + + //모터설정값을 보고 해당 모터의 목록을 표시한다. + //사용하지 않는 축은 표시하지 않는다 + for (int i = 0; i < SETTING.System.MotaxisCount; i++) + { + var axis = (eAxis)i; + var axisname = (eAxisName)i; + var axTitle = axisname.ToString();// axis.ToString(); + + if (PUB.system_mot.UseAxis(i) == false) continue;// axTitle = "Disable"; + if (axTitle.Equals(i.ToString())) axTitle = "(No Name)"; + this.dvMot.Rows.Add( + new string[] { + i.ToString(), axTitle, string.Empty, string.Empty, string.Empty, + string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, + string.Empty + }); + } + + + } + + + private void __Load(object sender, EventArgs e) + { + this.Show(); + ////'Application.DoEvents(); + + //this.ds1.Clear(); + //this.ds1.MCModel.Merge(Pub.mdm.dataSet.MCModel); + //this.ds1.MCModel.AcceptChanges(); + //this.ds1.MCModel.TableNewRow += Model_TableNewRow; + + this.bs.Filter = "isnull(title,'') <> ''"; + this.bsPos.Filter = "isnull(title,'') = '' and isnull(motindex,-1) = -1"; + this.tmDisplay.Start(); + + //button7.Enabled = !Pub.mot.HasHomeSetOff; + //dispal current + if (PUB.Result.isSetmModel) + { + arLabel18.Text = PUB.Result.mModel.Title; + //find data + var datas = this.ds1.MCModel.Select("", this.bs.Sort); + for (int i = 0; i < datas.Length; i++) + { + if (datas[i]["Title"].ToString() == PUB.Result.mModel.Title) + { + this.bs.Position = i; + break; + } + } + } + else arLabel18.Text = "--"; + + if (this.ds1.MCModel.Rows.Count < 1) + { + var newdr = this.ds1.MCModel.NewMCModelRow(); + newdr.Title = "Default"; + newdr.pidx = -1; + newdr.PosIndex = -1; + newdr.idx = ds1.MCModel.Rows.Count + 1; + this.ds1.MCModel.AddMCModelRow(newdr); + } + + PUB.log.RaiseMsg += log_RaiseMsg; + refreshtreen(); + } + + + + private void __Closed(object sender, FormClosedEventArgs e) + { + //if (fb != null) fb.Dispose(); + this.tmDisplay.Enabled = false; + } + + void log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + + } + + + private void tmDisplay_Tick(object sender, EventArgs e) + { + this.Text = "MODEL(MOTION) SETTING"; + + if (PUB.mot.IsInit == false) + { + //if (groupBox3.Enabled == true) groupBox3.Enabled = false; + } + else + { + //if (groupBox3.Enabled == false) groupBox3.Enabled = true; + + //각축별 기본 상태를 표시해준다. + dvMot.SuspendLayout(); + for (int r = 0; r < dvMot.RowCount; r++) // 오류수정 2111221 + { + var row = this.dvMot.Rows[r]; + var axis = short.Parse(row.Cells[0].Value.ToString()); + row.Cells[0].Style.BackColor = PUB.mot.IsServOn(axis) ? Color.Lime : Color.Tomato; + row.Cells[2].Value = $"{PUB.mot.GetCmdPos(axis)}"; + row.Cells[3].Value = $"{PUB.mot.GetActPos(axis)}"; + row.Cells[4].Style.BackColor = PUB.mot.IsOrg(axis) ? Color.SkyBlue : Color.Gray; + row.Cells[5].Style.BackColor = PUB.mot.IsLimitN(axis) ? Color.Red : Color.Gray; + row.Cells[6].Style.BackColor = PUB.mot.IsLimitP(axis) ? Color.Red : Color.Gray; + row.Cells[7].Style.BackColor = PUB.mot.IsInp(axis) ? Color.SkyBlue : Color.Gray; + row.Cells[8].Style.BackColor = PUB.mot.IsServAlarm(axis) ? Color.Red : Color.Gray; + row.Cells[9].Style.BackColor = PUB.mot.IsHomeSet(axis) ? Color.Green : Color.Gray; + } + dvMot.ResumeLayout(); + } + // this.tblFG.Invalidate(); + } + + private void dv_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + + + /// + /// 상단목록에서 모션을 선택한 경우 + /// + /// + /// + private void MotAxisSelect(int axisindex) + { + + + RefreshMotorPosition(); + } + + private void bs_CurrentChanged_1(object sender, EventArgs e) + { + + //BindingData(); + } + void RefreshMotorPosition() + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + if (dvMot.SelectedCells.Count < 1) return; + var dr = drv.Row as DataSet1.MCModelRow; + + //var rowindex = dvMot.SelectedCells[0].RowIndex; + //var row = dvMot.Rows[rowindex]; + //var axisIndex = short.Parse(row.Cells[0].Value.ToString()); + //var axis = (eAxis)this.axisIndex; + //var axisTitle = row.Cells[1].Value.ToString(); + { + + + //위치정보 표시 + bsPos.Filter = string.Format("pidx={0} and motindex = {1}", dr.idx, this.axisIndex); + + ////(위치정보) 데이터수량이 맞지 않으면 재 생성한다 + //string[] list = null; + //Array val = null; + //Type axType = null; + //var axis = (eAxis)axisIndex; + + //if (axis == eAxis.X2_FRT || axis == eAxis.X3_RER) axType = typeof(eX2SHTLoc); + //else if (axis == eAxis.X1_TOP) axType = typeof(eX1TOPLoc); + //else if (axis == eAxis.Y1_PIK) axType = typeof(eY1PIKLoc); + //else if (axis == eAxis.Y2_PRECLEAN) axType = typeof(eY2BRSLoc); + //else if (axis == eAxis.Y3_LASER) axType = typeof(eY3LSRLoc); + //else if (axis == eAxis.Y4_VIS) axType = typeof(eY4VISLoc); //전용으로바꿔야함 + + //else if (axis == eAxis.Z1_PIK) axType = typeof(eZ1PIKLoc); + //else if (axis == eAxis.Z2_PRECLEAN) axType = typeof(eZ2BRSLoc); + //else if (axis == eAxis.Z3_LASER) axType = typeof(eZ3LSRLoc); + //else if (axis == eAxis.Z4_VISION) axType = typeof(eZ4VISLoc);//전용으로바꿔야함 + + + //else if (axis == eAxis.L_REAR || axis == eAxis.L_FRNT) axType = typeof(eLDLoc); + //else if (axis == eAxis.UR_NG || axis == eAxis.UR_OK || axis == eAxis.UF_NG || axis == eAxis.UF_OK) axType = typeof(eUDLoc); + + //if (axType == null) + //{ + // Util.MsgE("지정한 축에 대한 위치정보가 지정되지 않았습니다"); + // return; + //} + + + //list = Enum.GetNames(axType); + //val = Enum.GetValues(axType); + + //var sb = new System.Text.StringBuilder(); + //var cntI = 0; + //var cntE = 0; + //var cntD = 0; + + ////posidx == -1인 데이터는 모두 소거한다 + //var dellist = ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex && t.PosIndex == -1).ToList(); //메인목록은 남겨둔다 + //cntD += dellist.Count(); + //foreach (var item in dellist) + // item.Delete(); + //ds1.MCModel.AcceptChanges(); + + ////모든데이터의 체크상태를 off한다. + //var alllist = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex); + //foreach (var item in alllist) + // item.Check = false; + //ds1.MCModel.AcceptChanges(); + + //for (int i = 0; i < list.Length; i++) + //{ + // var arrTitle = list[i]; + // var vv = val.GetValue(i); + // var arrIndex = (byte)vv;// ((eAxis)(val.GetValue(i))); + // if (arrIndex < 50) continue; //여기는 예약된 위치값이므로 사용하지 않는다 + // var targetem = Enum.Parse(axType, vv.ToString()); + + // //이 값이 데이터가 없다면 추가하고, 있다면 이름을 검사해서 결과를 안내한다 + // var pDr = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.PosIndex == arrIndex && t.MotIndex == axisIndex).FirstOrDefault(); + // if (pDr == null) + // { + // //cntI += 1; + // //var newdr = this.ds1.MCModel.NewMCModelRow(); + + // //if (ds1.MCModel.Rows.Count == 0) newdr.idx = 1; + // //else newdr.idx = ds1.MCModel.Max(t => t.idx) + 1; + + // //newdr.pidx = dr.idx; + // //newdr.MotIndex = this.axisIndex; + // //newdr.PosIndex = (short)arrIndex; + // //newdr.PosTitle = arrTitle; + // //newdr.Position = 0.0; + // //newdr.Speed = 50; + // //newdr.SpeedAcc = 100; + // //newdr.Check = true; + // //newdr.Description = targetem.DescriptionAttr(); + // //newdr.Category = targetem.CategoryAttr(); + + // //this.ds1.MCModel.AddMCModelRow(newdr); + // //newdr.EndEdit(); + // //sb.AppendLine("항목 추가 : " + arrTitle); + // } + // else + // { + // //이름이 다르다면 추가해준다. + // //if (pDr.PosTitle != arrTitle) + // //{ + // // sb.AppendLine("(위치)항목 변경 : " + pDr.PosTitle + " => " + arrTitle); + // // cntE += 1; + // // pDr.PosTitle = arrTitle; + // //} + // ////pDr.Description = targetem.DescriptionAttr(); + // ////pDr.Category = targetem.CategoryAttr(); + // //pDr.EndEdit(); + + // pDr.Check = true; + // } + //} + + ////미사용개체 삭제한다 + + ////var NotUseList = this.ds1.MCModel.Where(t => t.pidx == dr.idx && t.MotIndex == this.axisIndex && t.Check == false).ToList(); + ////cntD += NotUseList.Count(); + ////foreach (var item in NotUseList) + //// item.Delete(); + //ds1.MCModel.AcceptChanges(); + + //if (cntI > 0) sb.AppendLine("추가수량 : " + cntI.ToString()); + //if (cntE > 0) sb.AppendLine("변경수량 : " + cntE.ToString()); + //if (cntD > 0) sb.AppendLine("삭제수량 : " + cntD.ToString()); + + ////최종 확정 + //this.ds1.MCModel.AcceptChanges(); + + //if (sb.Length > 0) + //{ + // Util.MsgI(sb.ToString()); + //} + } + } + + private void chkJogMoveForce_Click(object sender, EventArgs e) + { + + } + + private void btAdd_Click(object sender, EventArgs e) + { + var newdr = this.ds1.MCModel.NewMCModelRow();// this.bs.AddNew() as DataRowView; + newdr["Title"] = DateTime.Now.ToShortDateString(); + newdr["pidx"] = -1; + newdr.PosIndex = -1; + newdr["idx"] = this.ds1.MCModel.Rows.Count + 1; + this.ds1.MCModel.AddMCModelRow(newdr); + this.bs.Position = this.bs.Count - 1; + + //모터축을 자동 선택해줌 + //radClick_MotAxisSelect(this.flowLayoutPanel1.Controls[0], null); + } + + private void btDel_Click(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dlg = UTIL.MsgQ("Do you want to delete the currently selected data?"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + bs.RemoveCurrent(); + this.ds1.MCModel.AcceptChanges(); + } + + private void btSave_Click(object sender, EventArgs e) + { + //button - save + this.dv.Focus(); + this.Validate(); + this.bs.EndEdit(); + this.bsPos.EndEdit(); + this.Validate(); + + this.DialogResult = DialogResult.OK; + + } + + private void button2_Click(object sender, EventArgs e) + { + //select + this.Invalidate(); + this.bs.EndEdit(); + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + if (dr.Title == "") return; + this.Value = dr.Title; + DialogResult = System.Windows.Forms.DialogResult.OK; + } + + private void button6_Click(object sender, EventArgs e) + { + //적용 + + this.bs.EndEdit(); + this.bsPos.EndEdit(); + this.Validate(); + + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + + this.Value = dr.Title; + + PUB.Result.mModel.ReadValue(dr.Title, this.ds1.MCModel); + if (PUB.Result.mModel.isSet) + { + PUB.log.AddAT("Motion model selection completed: " + PUB.Result.mModel.Title); + } + else UTIL.MsgE("Apply failed\n\nTarget model name not found"); + } + + private void button4_Click(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + var dlg = UTIL.MsgQ(string.Format("Do you want to copy the following model information?\n\nModel name: {0}", dr.Title)); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + + var newdr = this.ds1.MCModel.NewMCModelRow(); + UTIL.CopyData(dr, newdr); + newdr.Title += "-copy-"; + newdr.idx = this.ds1.MCModel.OrderByDescending(t => t.idx).FirstOrDefault().idx + 1; + newdr.EndEdit(); + this.ds1.MCModel.AddMCModelRow(newdr); + if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1; + } + + private void arDatagridView2_CellClick(object sender, DataGridViewCellEventArgs e) + { + //position click + var dv = sender as DataGridView; + var col = this.dvPosition.Columns[e.ColumnIndex]; + var colName = col.Name.ToLower(); + if (colName == "btgo") + { + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("Motion homing not completed\nPlease run 'Device Initialization' from the main screen"); + return; + } + //현재값으로 모터를 이동 + //현재위치값으로 설정 + var cell = dv.Rows[e.RowIndex].Cells["btpos"]; + var value = (double)cell.Value; + var drv = this.bsPos.Current as DataRowView; + var drParent = drv.Row as DataSet1.MCModelRow; + + //일반 속도값을 찾는다 + //var speedDr = drParent.Speed;// this.ds1.MCModel.Where(t => t.pidx == drParent.idx && t.MotIndex == axisIndex && t.PosIndex == -1 && t.SpdIndex == (int)eAxisSpeed.Normal).FirstOrDefault(); + var speed = drParent.Speed;// speedDr.Speed;// (double)this.nudJogVel.Value; + var acc = drParent.SpeedAcc;// speedDr.SpeedAcc;// ; (double)nudAcc.Value; + + + var relative = false; + //if (ctl.motCommand == arFrame.Control.MotCommandButton.eCommand.RelativeMove) + // relative = true; + + var msg = string.Format("모션의 위치를 변경 하시겠습니까\n" + + "축 : {0}\n" + + "현재위치 : {1}\n" + + "대상위치 : {2}\n" + + "이동속도 : {3}(가속도:{4})\n" + + "이동 시 충돌 가능성이 있는지 반드시 확인 하세요", axis, PUB.mot.GetActPos(axisIndex), value, speed, acc); + + if (UTIL.MsgQ(msg) != System.Windows.Forms.DialogResult.Yes) return; + + var chkJogMoveForce = true; + if (!MOT.Move(axis, value, speed, acc, relative, !chkJogMoveForce, !chkJogMoveForce)) + PUB.log.AddE("MOT:MOVE_:" + axis.ToString() + ",Msg=" + PUB.mot.ErrorMessage); + + + + } + else if (colName == "btset") + { + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("Motion homing not completed\nPlease run 'Device Initialization' from the main screen"); + return; + } + + //현재위치값으로 설정 + var cell = dv.Rows[e.RowIndex].Cells["btpos"]; + var value = (double)cell.Value; + var nValue = Math.Round(PUB.mot.GetCmdPos(this.axisIndex), 4); //소수점4자리에서 반올림처리한다 210414 + + var msg1 = string.Format("모션의 설정값을 변경 하시겠습니까\n" + + "축 : {0}\n" + + "변경전 : {1}\n" + + "변경후 : {2}\n" + + "변경 후 '저장'을 눌러야 영구 기록 됩니다", this.axis, value, nValue); + + if (UTIL.MsgQ(msg1) != System.Windows.Forms.DialogResult.Yes) return; + cell.Value = nValue; + } + else if (colName == "btpos") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + var value = (double)cell.Value; + value = PUB.ChangeValuePopup(value, "위치 입력"); + cell.Value = value; + } + else if (colName == "btspeed") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + var value = (double)cell.Value; + value = PUB.ChangeValuePopup(value, "속도 입력"); + cell.Value = value; + } + else if (colName == "btacc") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + var value = (double)cell.Value; + value = PUB.ChangeValuePopup(value, "가속도 입력"); + cell.Value = value; + } + else if (colName == "btdcc") + { + //현재값 변경 팝업 + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + if (cell.Value.ToString().isEmpty()) cell.Value = "0"; + var value = (double)cell.Value; + value = PUB.ChangeValuePopup(value, "감속도 입력"); + cell.Value = value; + } + + } + + + private void toolStripButton1_Click(object sender, EventArgs e) + { + var dlg = UTIL.MsgQ("Do you want to batch change the speed of all movement coordinates?"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var value = PUB.ChangeValuePopup(100.0, "일괄 속도 변경"); + + for (int i = 0; i < this.bsPos.Count; i++) + { + this.bsPos.Position = i; + var drv = this.bsPos.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + dr.Speed = value; + dr.EndEdit(); + } + } + + private void toolStripButton2_Click_2(object sender, EventArgs e) + { + var dlg = UTIL.MsgQ("Do you want to batch change the acceleration/deceleration of all movement coordinates?"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var value = PUB.ChangeValuePopup(100.0, "일괄 가(감)속도 변경"); + + for (int i = 0; i < this.bsPos.Count; i++) + { + this.bsPos.Position = i; + var drv = this.bsPos.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + dr.SpeedAcc = value; + dr.EndEdit(); + } + } + + private void toolStripButton3_Click_1(object sender, EventArgs e) + { + var dlg = UTIL.MsgQ("Do you want to batch change the deceleration of all movement coordinates?"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + var value = PUB.ChangeValuePopup(0, "일괄 감속도 변경"); + + for (int i = 0; i < this.bsPos.Count; i++) + { + this.bsPos.Position = i; + var drv = this.bsPos.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + dr.SpeedDcc = value; + dr.EndEdit(); + } + } + + + private void dvMot_SelectionChanged(object sender, EventArgs e) + { + if (dvMot.SelectedRows.Count < 1) + { + Console.WriteLine("no selecte"); + this.axisIndex = -1; + this.axis = (eAxis)axisIndex; + } + else + { + var selrow = dvMot.SelectedRows[0]; + this.axisIndex = short.Parse(selrow.Cells["dvc_axis"].Value.ToString()); + this.axis = (eAxis)axisIndex; + MotAxisSelect(this.axisIndex); + Console.WriteLine($"select indx {axisIndex}"); + } + + + } + + + private void toolStripButton5_Click(object sender, EventArgs e) + { + this.Validate(); + this.bs.EndEdit(); + this.bsPos.EndEdit(); + + //using (var f = new Dialog.Motion_MoveToGroup(this.ds,arLabel18.Text)) + //{ + // if (f.ShowDialog() == DialogResult.OK) + // { + // this.bs.EndEdit(); + // this.bsPos.EndEdit(); + // } + //} + + } + + void refreshtreen() + { + //모든데이터를 가져와서 트리뷰를 처리한다. + + var cat = this.ds.MCModel.GroupBy(t => t.Category).ToList(); + var catorders = cat.OrderBy(t => t.Key).ToList(); + + //var cnt = 0; + this.treeView1.Nodes.Clear(); + foreach (var item in catorders) + { + if (item.Key.isEmpty()) continue; + var catenames = item.Key.Split(','); + foreach (var catename in catenames) + { + var grpname = catename.Split('|')[0]; + if (catename.Split('|').Length < 2) continue; + var itemname = catename.Split('|')[1]; + if (treeView1.Nodes.ContainsKey(grpname) == false) + { + var nd = treeView1.Nodes.Add(grpname, grpname); + nd.Nodes.Add(itemname); + } + else + { + if (itemname.StartsWith("F01"))// == "F01_FSOCKET_BTM") + { + + } + var nd = treeView1.Nodes[grpname]; + if (nd.Nodes.ContainsKey(itemname) == false) + { + var snd = nd.Nodes.Add(itemname, itemname); + if (itemname.StartsWith("R")) + snd.ForeColor = Color.Blue; + else if (itemname.StartsWith("T")) + snd.ForeColor = Color.Magenta; + } + else + { + var snd = nd.Nodes[itemname]; + if (itemname.StartsWith("R")) + snd.ForeColor = Color.Blue; + else if (itemname.StartsWith("T")) + snd.ForeColor = Color.Magenta; + } + } + } + + + } + + treeView1.ExpandAll(); + if (treeView1.Nodes.Count > 0) + treeView1.SelectedNode = this.treeView1.Nodes[0]; + + } + void refreshlist() + { + this.listView1.Clear(); + this.listView1.FullRowSelect = true; + this.listView1.View = View.Details; + this.listView1.Columns.Add("item"); + this.listView1.Columns[0].Width = (int)(this.listView1.Width - listView1.Width * 0.1f); + this.listView1.GridLines = true; + this.listView1.AllowDrop = true; + + + var drv = this.bsPos.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + if (dr.Category.isEmpty()) return; + + var catelist = dr.Category.Split(','); + List cats = new List(); + + + foreach (var cate in catelist) + { + if (cate.isEmpty()) continue; + if (cats.Contains(cate) == false) cats.Add(cate); + } + + foreach (var cate in cats.OrderBy(t=>t)) + { + if (this.listView1.Items.ContainsKey(cate) == false) + { + var lv = this.listView1.Items.Add(cate, cate, 0); + } + else + { + //이미 있다. + } + } + + + } + private void bsPos_CurrentChanged(object sender, EventArgs e) + { + //포지션데이터가 움직이면 처리한다. + refreshlist(); + } + + private void toolStripButton1_Click_1(object sender, EventArgs e) + { + //트립에서 선택된 아이템을 추가한다. + var tn = this.treeView1.SelectedNode; + if (tn == null) return; + if (tn.Level != 1) + { + if (tn.Nodes.Count < 1) + { + UTIL.MsgE("No sub items found"); + return; + } + + var dlg = UTIL.MsgQ($"Do you want to add all {tn.Nodes.Count} data items?"); + if (dlg != DialogResult.Yes) return; + var ucnt = 0; + foreach (TreeNode node in tn.Nodes) + { + var value = node.Parent.Text + "|" + node.Text; + if (this.listView1.Items.ContainsKey(value) == false) + { + this.listView1.Items.Add(value); + ucnt += 1; + } + } + UTIL.MsgI($"{ucnt} items have been added"); + //현재목록을 리스트로 만들고 업데이트한.ㄷ + var drv = this.bsPos.Current as DataRowView; + var dr = drv.Row as DataSet1.MCModelRow; + + List items = new List(); + + foreach (ListViewItem item in listView1.Items) + items.Add(item.SubItems[0].Text); + + dr.Category = string.Join(",", items); + dr.EndEdit(); + } + else + { + var value = tn.Parent.Text + "|" + tn.Text; + if (this.listView1.Items.ContainsKey(value) == false) + { + this.listView1.Items.Add(value); + //현재목록을 리스트로 만들고 업데이트한.ㄷ + var drv = this.bsPos.Current as DataRowView; + var dr = drv.Row as DataSet1.MCModelRow; + + List items = new List(); + + foreach (ListViewItem item in listView1.Items) + items.Add(item.SubItems[0].Text); + + dr.Category = string.Join(",", items); + dr.EndEdit(); + + } + else UTIL.MsgE("This item already exists."); + } + + + + } + + private void toolStripButton2_Click(object sender, EventArgs e) + { + //선택된 항목을 삭제한다. + if (this.listView1.FocusedItem == null) return; + this.listView1.Items.Remove(this.listView1.FocusedItem); + + //현재목록을 리스트로 만들고 업데이트한.ㄷ + var drv = this.bsPos.Current as DataRowView; + var dr = drv.Row as DataSet1.MCModelRow; + + List items = new List(); + + foreach (ListViewItem item in listView1.Items) + items.Add(item.SubItems[0].Text); + + dr.Category = string.Join(",", items); + dr.EndEdit(); + } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + refreshlist(); + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + //현재선택된 아이템의 데이터를 표시한다. + var tn = this.treeView1.SelectedNode; + if (tn == null) return; + if (tn.Level == 0) + { + bsPos.Filter = $"Category like '%{tn.Text}|%'"; + } + else + { + bsPos.Filter = $"Category like '%{tn.Parent.Text}|{tn.Text}%'"; + } + } + + private void toolStripButton6_Click(object sender, EventArgs e) + { + + } + + private void toolStripButton7_Click(object sender, EventArgs e) + { + refreshtreen(); + } + + private void toolStripButton8_Click(object sender, EventArgs e) + { + + var tn = treeView1.SelectedNode; + if (tn == null) return; + + var old = tn.Text.Trim(); + var f = new AR.Dialog.fInput("입력",tn.Text); + if (f.ShowDialog() != DialogResult.OK) return; + + if (f.ValueString.isEmpty()) return; + var targetidx = tn.Level; + + foreach (DataSet1.MCModelRow dr in this.ds.MCModel.Rows) + { + if (dr.RowState == DataRowState.Deleted || dr.RowState == DataRowState.Detached) continue; + + if (dr.Category.isEmpty()) continue; + + var cats = dr.Category.Split(','); + List items = new List(); + foreach (var cat in cats) + { + if (cat.isEmpty()) continue; + + var buffer = cat.Split('|'); + + if (targetidx == 0) + { + buffer[targetidx] = buffer[targetidx].Replace(old, f.ValueString); + } + else + { + //1번의 경우 변경을 하려면 0번이 일치해야한다. + if (buffer[0] == tn.Parent.Text) + { + buffer[targetidx] = buffer[targetidx].Replace(old, f.ValueString); + } + } + + items.Add(string.Join("|", buffer)); + } + + dr.Category = string.Join(",", items.ToArray()); + dr.EndEdit(); + } + + refreshtreen(); + } + + private void toolStripButton9_Click(object sender, EventArgs e) + { + dvPosition.AutoResizeColumns(); + } + } +} + diff --git a/Handler/Project/Dialog/Model_Motion_Desc.resx b/Handler/Project/Dialog/Model_Motion_Desc.resx new file mode 100644 index 0000000..88fac62 --- /dev/null +++ b/Handler/Project/Dialog/Model_Motion_Desc.resx @@ -0,0 +1,2179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 376, 17 + + + 101, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 17, 17 + + + 702, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 596, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 440, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 172, 17 + + + 279, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAwFJREFUWEft + ldtOE1EUhnkXfQyv9DVUhGJUiIlIENoarDUcDIkHqEZDh85AI+lwIyEQmWCiRfFAIARbUFIKRlCkHqAx + 0Qvpcv7pnrHAps6UmdaLLvIluzvsWV/W2oeKctgVnY0SmcF/XSJ3Z5CaCwRr/R0S3XCHr7LU5gLJE/E0 + l0nlowESLK9v0vtUuiCwFt8I+OUfliTNCqIKvMRWwDfi0ylrkk4I6m3dvQa/8V1LkqUQBKYlSyUITEmW + UhD8U7LUgiCv5P8gCGJTG9p9y7T+hhOC+5FPEBxI0K6LmpdHx7Lg1JPPhmBAGNUS6K2zCtYGHyjcPDqW + BYtNWfCglAUPiilB3gl0ktzcpgWLFWVBs/FmdZF6ojI1RNqpJuTVaJDbqe5eGymTs6UT/LSZIv9wgC5G + 2qg72kuDsSEaXVI0MO5S5y4MtNJluYteT68UJhhdLwx5Pkln+n0UeCaSsvyYlBU+Y8vj1D0h0tk+H/la + 7hangqhcbfgK9c0McqV49M3IVBP00vFg82Gmlg0nBNFWrXIckXyg5S7R84qpZcNuQRwI7Dm0jiexm+dr + L4wx1pwLt6Qrg5eOMT3792DrWEQ9EKEdEvsR/7JAGfVv4es7Y06tYkatYj/Ts7+CuErk+NAOkdwq6cx/ + fctWkDbW5+XYQ6qRPKtMz37B06KXRhKKkXBpM0mZTIZmN+aMOb1yiIUcOTC6NEZVvU2/mJ4zgkiiJ1z8 + ltDmITSXiuWVAyPq2lOC+yfTs38Pnh/o2NNiVBGhiyFy25qL1mLRwRYH1Seta2LvIdErieBVTufWU2Hb + 1esVmZ79grG1RaqPtHKvmcT35L6VA1hTG/alT/Q0H2V69gsirg3fKfCiFn67JM9LppYNJwTXt1JUF/Zp + zxdPhIek/m9VyL1Veb/xEFPLBgRzgaAd1N/sJpfg1Z6vfK/Ko+Q43Y4K29Uhz9ZJoekI0ypO4OHH24rn + CxI4obgjAcaYw55DW/dUrpiBt7Va9Ei4PnAJA3X8wRVyizsOhBEVFX8AAjiR3dGw+TcAAAAASUVORK5C + YII= + + + + 81 + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/Model_Operation.Designer.cs b/Handler/Project/Dialog/Model_Operation.Designer.cs new file mode 100644 index 0000000..412869b --- /dev/null +++ b/Handler/Project/Dialog/Model_Operation.Designer.cs @@ -0,0 +1,2035 @@ +namespace Project +{ + partial class Model_Operation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Model_Operation)); + this.dv = new arCtl.arDatagridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_title = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Code = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_bsave = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.ds1 = new Project.DataSet1(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.checkBox31 = new System.Windows.Forms.CheckBox(); + this.chkOwnZPL = new System.Windows.Forms.CheckBox(); + this.panel5 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label24 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label20 = new System.Windows.Forms.Label(); + this.tbAutoOutSec = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.chkDisablePartNoValue = new System.Windows.Forms.CheckBox(); + this.chkDisableBatchValue = new System.Windows.Forms.CheckBox(); + this.label19 = new System.Windows.Forms.Label(); + this.panel7 = new System.Windows.Forms.Panel(); + this.chkSIDCHK = new System.Windows.Forms.CheckBox(); + this.checkBox32 = new System.Windows.Forms.CheckBox(); + this.chkEnbCamera = new System.Windows.Forms.CheckBox(); + this.button1 = new System.Windows.Forms.Button(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.chkApplyWMSInfo = new System.Windows.Forms.CheckBox(); + this.chkApplySidInfo = new System.Windows.Forms.CheckBox(); + this.chkApplyJobInfo = new System.Windows.Forms.CheckBox(); + this.chkApplySIDConvData = new System.Windows.Forms.CheckBox(); + this.chkUserConfirm = new System.Windows.Forms.CheckBox(); + this.chkSIDConv = new System.Windows.Forms.CheckBox(); + this.chkQtyServer = new System.Windows.Forms.CheckBox(); + this.chkQtyMRQ = new System.Windows.Forms.CheckBox(); + this.chkNew = new System.Windows.Forms.CheckBox(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.GrpSidConvData = new System.Windows.Forms.GroupBox(); + this.chkSave2 = new System.Windows.Forms.CheckBox(); + this.checkBox34 = new System.Windows.Forms.CheckBox(); + this.checkBox35 = new System.Windows.Forms.CheckBox(); + this.checkBox30 = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.checkBox20 = new System.Windows.Forms.CheckBox(); + this.checkBox21 = new System.Windows.Forms.CheckBox(); + this.checkBox22 = new System.Windows.Forms.CheckBox(); + this.checkBox23 = new System.Windows.Forms.CheckBox(); + this.checkBox24 = new System.Windows.Forms.CheckBox(); + this.checkBox25 = new System.Windows.Forms.CheckBox(); + this.grpapplyjob = new System.Windows.Forms.GroupBox(); + this.checkBox29 = new System.Windows.Forms.CheckBox(); + this.checkBox18 = new System.Windows.Forms.CheckBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.checkBox10 = new System.Windows.Forms.CheckBox(); + this.checkBox9 = new System.Windows.Forms.CheckBox(); + this.checkBox6 = new System.Windows.Forms.CheckBox(); + this.checkBox7 = new System.Windows.Forms.CheckBox(); + this.checkBox8 = new System.Windows.Forms.CheckBox(); + this.checkBox5 = new System.Windows.Forms.CheckBox(); + this.checkBox4 = new System.Windows.Forms.CheckBox(); + this.grpApplySidinfo = new System.Windows.Forms.GroupBox(); + this.checkBox28 = new System.Windows.Forms.CheckBox(); + this.checkBox26 = new System.Windows.Forms.CheckBox(); + this.checkBox27 = new System.Windows.Forms.CheckBox(); + this.chkSave1 = new System.Windows.Forms.CheckBox(); + this.checkBox19 = new System.Windows.Forms.CheckBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.checkBox11 = new System.Windows.Forms.CheckBox(); + this.checkBox12 = new System.Windows.Forms.CheckBox(); + this.checkBox13 = new System.Windows.Forms.CheckBox(); + this.checkBox14 = new System.Windows.Forms.CheckBox(); + this.checkBox15 = new System.Windows.Forms.CheckBox(); + this.checkBox16 = new System.Windows.Forms.CheckBox(); + this.checkBox17 = new System.Windows.Forms.CheckBox(); + this.grpApplyWMSinfo = new System.Windows.Forms.GroupBox(); + this.checkBox36 = new System.Windows.Forms.CheckBox(); + this.checkBox38 = new System.Windows.Forms.CheckBox(); + this.label22 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.checkBox41 = new System.Windows.Forms.CheckBox(); + this.checkBox42 = new System.Windows.Forms.CheckBox(); + this.checkBox43 = new System.Windows.Forms.CheckBox(); + this.checkBox44 = new System.Windows.Forms.CheckBox(); + this.checkBox45 = new System.Windows.Forms.CheckBox(); + this.checkBox46 = new System.Windows.Forms.CheckBox(); + this.checkBox47 = new System.Windows.Forms.CheckBox(); + this.panel6 = new System.Windows.Forms.Panel(); + this.tbDefDate = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.tbDefVname = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.bCD_DMCheckBox = new System.Windows.Forms.CheckBox(); + this.bCD_QRCheckBox = new System.Windows.Forms.CheckBox(); + this.bCD_1DCheckBox = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.btConvOk = new System.Windows.Forms.Button(); + this.btConvOff = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.btAdd = new System.Windows.Forms.ToolStripButton(); + this.btDel = new System.Windows.Forms.ToolStripButton(); + this.btReName = new System.Windows.Forms.ToolStripButton(); + this.btSave = new System.Windows.Forms.ToolStripButton(); + this.btCopy = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton10 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.arLabel2 = new arCtl.arLabel(); + this.arLabel18 = new arCtl.arLabel(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox33 = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.dv)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ds1)).BeginInit(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel7.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.GrpSidConvData.SuspendLayout(); + this.grpapplyjob.SuspendLayout(); + this.grpApplySidinfo.SuspendLayout(); + this.grpApplyWMSinfo.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel2.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel3.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // dv + // + this.dv.A_DelCurrentCell = true; + this.dv.A_EnterToTab = true; + this.dv.A_KoreanField = null; + this.dv.A_UpperField = null; + this.dv.A_ViewRownumOnHeader = true; + this.dv.AllowUserToAddRows = false; + this.dv.AllowUserToDeleteRows = false; + this.dv.AutoGenerateColumns = false; + this.dv.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dv.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; + this.dv.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.dvc_title, + this.Code, + this.dvc_bsave}); + this.dv.DataSource = this.bs; + dataGridViewCellStyle20.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle20.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle20.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle20.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle20.Padding = new System.Windows.Forms.Padding(5); + dataGridViewCellStyle20.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle20.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle20.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv.DefaultCellStyle = dataGridViewCellStyle20; + this.dv.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv.Location = new System.Drawing.Point(0, 136); + this.dv.MultiSelect = false; + this.dv.Name = "dv"; + this.dv.RowHeadersVisible = false; + this.dv.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + this.dv.Size = new System.Drawing.Size(639, 555); + this.dv.TabIndex = 1; + this.dv.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.dv_DataError); + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; + this.Column1.DataPropertyName = "idx"; + dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.Column1.DefaultCellStyle = dataGridViewCellStyle16; + this.Column1.HeaderText = "*"; + this.Column1.Name = "Column1"; + this.Column1.Width = 50; + // + // dvc_title + // + this.dvc_title.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dvc_title.DataPropertyName = "Title"; + dataGridViewCellStyle17.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.dvc_title.DefaultCellStyle = dataGridViewCellStyle17; + this.dvc_title.HeaderText = "Description(Vendor-Customer)"; + this.dvc_title.Name = "dvc_title"; + this.dvc_title.ReadOnly = true; + // + // Code + // + this.Code.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.Code.DataPropertyName = "Code"; + dataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.Code.DefaultCellStyle = dataGridViewCellStyle18; + this.Code.HeaderText = "Customer Code"; + this.Code.Name = "Code"; + // + // dvc_bsave + // + this.dvc_bsave.DataPropertyName = "BSave"; + dataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.dvc_bsave.DefaultCellStyle = dataGridViewCellStyle19; + this.dvc_bsave.HeaderText = "BLoad"; + this.dvc_bsave.Name = "dvc_bsave"; + this.dvc_bsave.Width = 86; + // + // bs + // + this.bs.DataMember = "OPModel"; + this.bs.DataSource = this.ds1; + this.bs.CurrentChanged += new System.EventHandler(this.bs_CurrentChanged_1); + // + // ds1 + // + this.ds1.DataSetName = "DataSet1"; + this.ds1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // tmDisplay + // + this.tmDisplay.Interval = 500; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // checkBox31 + // + this.checkBox31.AutoSize = true; + this.checkBox31.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "IgnoreOtherBarcode", true)); + this.checkBox31.Dock = System.Windows.Forms.DockStyle.Left; + this.checkBox31.Location = new System.Drawing.Point(409, 0); + this.checkBox31.Name = "checkBox31"; + this.checkBox31.Size = new System.Drawing.Size(223, 34); + this.checkBox31.TabIndex = 8; + this.checkBox31.Text = "Exclude Undefined Barcodes"; + this.toolTip1.SetToolTip(this.checkBox31, "Excludes data not in barcode rules.."); + this.checkBox31.UseVisualStyleBackColor = true; + // + // chkOwnZPL + // + this.chkOwnZPL.AutoSize = true; + this.chkOwnZPL.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "bOwnZPL", true)); + this.chkOwnZPL.Dock = System.Windows.Forms.DockStyle.Right; + this.chkOwnZPL.Font = new System.Drawing.Font("맑은 고딕", 10.5F); + this.chkOwnZPL.Location = new System.Drawing.Point(494, 0); + this.chkOwnZPL.Name = "chkOwnZPL"; + this.chkOwnZPL.Size = new System.Drawing.Size(158, 38); + this.chkOwnZPL.TabIndex = 17; + this.chkOwnZPL.Text = "Individual Print Code"; + this.toolTip1.SetToolTip(this.chkOwnZPL, "Excludes data not in barcode rules.."); + this.chkOwnZPL.UseVisualStyleBackColor = true; + // + // panel5 + // + this.panel5.Controls.Add(this.panel4); + this.panel5.Controls.Add(this.arLabel18); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.Location = new System.Drawing.Point(1, 1); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(1368, 819); + this.panel5.TabIndex = 3; + // + // panel4 + // + this.panel4.Controls.Add(this.label24); + this.panel4.Controls.Add(this.dv); + this.panel4.Controls.Add(this.panel1); + this.panel4.Controls.Add(this.tableLayoutPanel1); + this.panel4.Controls.Add(this.panel3); + this.panel4.Controls.Add(this.toolStrip1); + this.panel4.Controls.Add(this.arLabel2); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(0, 53); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(1368, 766); + this.panel4.TabIndex = 3; + // + // label24 + // + this.label24.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label24.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label24.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label24.Location = new System.Drawing.Point(0, 671); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(639, 20); + this.label24.TabIndex = 33; + this.label24.Text = "BLoad Descriptoin , 1=QR+DM+PDF417, 2=1D, 3=QR, 4=DM, 5=PDF417"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.LightGray; + this.panel1.Controls.Add(this.panel8); + this.panel1.Controls.Add(this.panel7); + this.panel1.Controls.Add(this.tabControl1); + this.panel1.Controls.Add(this.panel6); + this.panel1.Controls.Add(this.panel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.panel1.Location = new System.Drawing.Point(639, 136); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(10); + this.panel1.Size = new System.Drawing.Size(729, 555); + this.panel1.TabIndex = 28; + // + // panel8 + // + this.panel8.BackColor = System.Drawing.Color.Gainsboro; + this.panel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel8.Controls.Add(this.label20); + this.panel8.Controls.Add(this.tbAutoOutSec); + this.panel8.Controls.Add(this.label21); + this.panel8.Controls.Add(this.chkDisablePartNoValue); + this.panel8.Controls.Add(this.chkDisableBatchValue); + this.panel8.Controls.Add(this.label19); + this.panel8.Dock = System.Windows.Forms.DockStyle.Top; + this.panel8.Location = new System.Drawing.Point(10, 122); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(709, 36); + this.panel8.TabIndex = 30; + // + // label20 + // + this.label20.Dock = System.Windows.Forms.DockStyle.Left; + this.label20.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label20.Location = new System.Drawing.Point(401, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(39, 34); + this.label20.TabIndex = 20; + this.label20.Text = "Sec"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // tbAutoOutSec + // + this.tbAutoOutSec.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbAutoOutSec.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "AutoOutConveyor", true)); + this.tbAutoOutSec.Dock = System.Windows.Forms.DockStyle.Left; + this.tbAutoOutSec.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbAutoOutSec.Location = new System.Drawing.Point(323, 0); + this.tbAutoOutSec.Name = "tbAutoOutSec"; + this.tbAutoOutSec.Size = new System.Drawing.Size(78, 34); + this.tbAutoOutSec.TabIndex = 19; + this.tbAutoOutSec.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label21 + // + this.label21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.label21.Dock = System.Windows.Forms.DockStyle.Left; + this.label21.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label21.Location = new System.Drawing.Point(229, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(94, 34); + this.label21.TabIndex = 18; + this.label21.Text = "Auto Out\r\nConveyor"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // chkDisablePartNoValue + // + this.chkDisablePartNoValue.AutoSize = true; + this.chkDisablePartNoValue.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "IgnorePartNo", true)); + this.chkDisablePartNoValue.Dock = System.Windows.Forms.DockStyle.Left; + this.chkDisablePartNoValue.Font = new System.Drawing.Font("맑은 고딕", 10.5F); + this.chkDisablePartNoValue.ForeColor = System.Drawing.Color.Red; + this.chkDisablePartNoValue.Location = new System.Drawing.Point(157, 0); + this.chkDisablePartNoValue.Name = "chkDisablePartNoValue"; + this.chkDisablePartNoValue.Size = new System.Drawing.Size(72, 34); + this.chkDisablePartNoValue.TabIndex = 15; + this.chkDisablePartNoValue.Tag = "0"; + this.chkDisablePartNoValue.Text = "PartNo"; + this.chkDisablePartNoValue.UseVisualStyleBackColor = true; + // + // chkDisableBatchValue + // + this.chkDisableBatchValue.AutoSize = true; + this.chkDisableBatchValue.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "IgnoreBatch", true)); + this.chkDisableBatchValue.Dock = System.Windows.Forms.DockStyle.Left; + this.chkDisableBatchValue.Font = new System.Drawing.Font("맑은 고딕", 10.5F); + this.chkDisableBatchValue.ForeColor = System.Drawing.Color.Red; + this.chkDisableBatchValue.Location = new System.Drawing.Point(94, 0); + this.chkDisableBatchValue.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); + this.chkDisableBatchValue.Name = "chkDisableBatchValue"; + this.chkDisableBatchValue.Size = new System.Drawing.Size(63, 34); + this.chkDisableBatchValue.TabIndex = 14; + this.chkDisableBatchValue.Tag = "0"; + this.chkDisableBatchValue.Text = "Batch"; + this.chkDisableBatchValue.UseVisualStyleBackColor = true; + // + // label19 + // + this.label19.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.label19.Dock = System.Windows.Forms.DockStyle.Left; + this.label19.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label19.Location = new System.Drawing.Point(0, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(94, 34); + this.label19.TabIndex = 16; + this.label19.Text = "Disable Value"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel7 + // + this.panel7.BackColor = System.Drawing.Color.Gainsboro; + this.panel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel7.Controls.Add(this.chkOwnZPL); + this.panel7.Controls.Add(this.chkSIDCHK); + this.panel7.Controls.Add(this.checkBox32); + this.panel7.Controls.Add(this.chkEnbCamera); + this.panel7.Controls.Add(this.button1); + this.panel7.Dock = System.Windows.Forms.DockStyle.Top; + this.panel7.Location = new System.Drawing.Point(10, 82); + this.panel7.Name = "panel7"; + this.panel7.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.panel7.Size = new System.Drawing.Size(709, 40); + this.panel7.TabIndex = 29; + // + // chkSIDCHK + // + this.chkSIDCHK.AutoSize = true; + this.chkSIDCHK.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "CheckSIDExsit", true)); + this.chkSIDCHK.Dock = System.Windows.Forms.DockStyle.Left; + this.chkSIDCHK.Font = new System.Drawing.Font("맑은 고딕", 10.5F); + this.chkSIDCHK.ForeColor = System.Drawing.Color.Red; + this.chkSIDCHK.Location = new System.Drawing.Point(292, 0); + this.chkSIDCHK.Name = "chkSIDCHK"; + this.chkSIDCHK.Size = new System.Drawing.Size(155, 38); + this.chkSIDCHK.TabIndex = 16; + this.chkSIDCHK.Tag = "0"; + this.chkSIDCHK.Text = "SID Existence Check"; + this.chkSIDCHK.UseVisualStyleBackColor = true; + // + // checkBox32 + // + this.checkBox32.AutoSize = true; + this.checkBox32.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "DisablePrinter", true)); + this.checkBox32.Dock = System.Windows.Forms.DockStyle.Left; + this.checkBox32.Font = new System.Drawing.Font("맑은 고딕", 10.5F); + this.checkBox32.ForeColor = System.Drawing.Color.Red; + this.checkBox32.Location = new System.Drawing.Point(148, 0); + this.checkBox32.Name = "checkBox32"; + this.checkBox32.Size = new System.Drawing.Size(144, 38); + this.checkBox32.TabIndex = 15; + this.checkBox32.Tag = "0"; + this.checkBox32.Text = "Do not use printer"; + this.checkBox32.UseVisualStyleBackColor = true; + this.checkBox32.CheckedChanged += new System.EventHandler(this.checkBox32_CheckedChanged); + // + // chkEnbCamera + // + this.chkEnbCamera.AutoSize = true; + this.chkEnbCamera.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "DisableCamera", true)); + this.chkEnbCamera.Dock = System.Windows.Forms.DockStyle.Left; + this.chkEnbCamera.Font = new System.Drawing.Font("맑은 고딕", 10.5F); + this.chkEnbCamera.ForeColor = System.Drawing.Color.Red; + this.chkEnbCamera.Location = new System.Drawing.Point(10, 0); + this.chkEnbCamera.Name = "chkEnbCamera"; + this.chkEnbCamera.Size = new System.Drawing.Size(138, 38); + this.chkEnbCamera.TabIndex = 14; + this.chkEnbCamera.Tag = "0"; + this.chkEnbCamera.Text = "Do not use vision"; + this.chkEnbCamera.UseVisualStyleBackColor = true; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.Location = new System.Drawing.Point(652, 0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(55, 38); + this.button1.TabIndex = 18; + this.button1.Text = "Edit"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tabControl1.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tabControl1.Location = new System.Drawing.Point(10, 169); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(709, 376); + this.tabControl1.TabIndex = 27; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.chkApplyWMSInfo); + this.tabPage1.Controls.Add(this.chkApplySidInfo); + this.tabPage1.Controls.Add(this.chkApplyJobInfo); + this.tabPage1.Controls.Add(this.chkApplySIDConvData); + this.tabPage1.Controls.Add(this.chkUserConfirm); + this.tabPage1.Controls.Add(this.chkSIDConv); + this.tabPage1.Controls.Add(this.chkQtyServer); + this.tabPage1.Controls.Add(this.chkQtyMRQ); + this.tabPage1.Controls.Add(this.chkNew); + this.tabPage1.Location = new System.Drawing.Point(4, 26); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(10); + this.tabPage1.Size = new System.Drawing.Size(701, 346); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Options"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // chkApplyWMSInfo + // + this.chkApplyWMSInfo.AutoSize = true; + this.chkApplyWMSInfo.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplyWMSInfo.ForeColor = System.Drawing.Color.Gray; + this.chkApplyWMSInfo.Location = new System.Drawing.Point(13, 298); + this.chkApplyWMSInfo.Name = "chkApplyWMSInfo"; + this.chkApplyWMSInfo.Size = new System.Drawing.Size(446, 25); + this.chkApplyWMSInfo.TabIndex = 34; + this.chkApplyWMSInfo.Tag = "8"; + this.chkApplyWMSInfo.Text = "Automatically record data using WMS information table"; + this.chkApplyWMSInfo.UseVisualStyleBackColor = true; + this.chkApplyWMSInfo.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkApplySidInfo + // + this.chkApplySidInfo.AutoSize = true; + this.chkApplySidInfo.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplySidInfo.ForeColor = System.Drawing.Color.Gray; + this.chkApplySidInfo.Location = new System.Drawing.Point(13, 226); + this.chkApplySidInfo.Name = "chkApplySidInfo"; + this.chkApplySidInfo.Size = new System.Drawing.Size(431, 25); + this.chkApplySidInfo.TabIndex = 33; + this.chkApplySidInfo.Tag = "6"; + this.chkApplySidInfo.Text = "Automatically record data using SID information table"; + this.chkApplySidInfo.UseVisualStyleBackColor = true; + this.chkApplySidInfo.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkApplyJobInfo + // + this.chkApplyJobInfo.AutoSize = true; + this.chkApplyJobInfo.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplyJobInfo.ForeColor = System.Drawing.Color.Gray; + this.chkApplyJobInfo.Location = new System.Drawing.Point(13, 190); + this.chkApplyJobInfo.Name = "chkApplyJobInfo"; + this.chkApplyJobInfo.Size = new System.Drawing.Size(424, 25); + this.chkApplyJobInfo.TabIndex = 32; + this.chkApplyJobInfo.Tag = "5"; + this.chkApplyJobInfo.Text = "Automatically record data using today\'s work history"; + this.chkApplyJobInfo.UseVisualStyleBackColor = true; + this.chkApplyJobInfo.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkApplySIDConvData + // + this.chkApplySIDConvData.AutoSize = true; + this.chkApplySIDConvData.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplySIDConvData.ForeColor = System.Drawing.Color.Gray; + this.chkApplySIDConvData.Location = new System.Drawing.Point(13, 262); + this.chkApplySIDConvData.Name = "chkApplySIDConvData"; + this.chkApplySIDConvData.Size = new System.Drawing.Size(426, 25); + this.chkApplySIDConvData.TabIndex = 31; + this.chkApplySIDConvData.Tag = "7"; + this.chkApplySIDConvData.Text = "Automatically record data using SID conversion table"; + this.chkApplySIDConvData.UseVisualStyleBackColor = true; + this.chkApplySIDConvData.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkUserConfirm + // + this.chkUserConfirm.AutoSize = true; + this.chkUserConfirm.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkUserConfirm.ForeColor = System.Drawing.Color.Gray; + this.chkUserConfirm.Location = new System.Drawing.Point(13, 11); + this.chkUserConfirm.Name = "chkUserConfirm"; + this.chkUserConfirm.Size = new System.Drawing.Size(316, 25); + this.chkUserConfirm.TabIndex = 13; + this.chkUserConfirm.Tag = "0"; + this.chkUserConfirm.Text = "User confirms (no automatic progress)"; + this.chkUserConfirm.UseVisualStyleBackColor = true; + this.chkUserConfirm.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkSIDConv + // + this.chkSIDConv.AutoSize = true; + this.chkSIDConv.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkSIDConv.ForeColor = System.Drawing.Color.Gray; + this.chkSIDConv.Location = new System.Drawing.Point(13, 154); + this.chkSIDConv.Name = "chkSIDConv"; + this.chkSIDConv.Size = new System.Drawing.Size(372, 25); + this.chkSIDConv.TabIndex = 28; + this.chkSIDConv.Tag = "4"; + this.chkSIDConv.Text = "Convert SID values using SID conversion table"; + this.chkSIDConv.UseVisualStyleBackColor = true; + this.chkSIDConv.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkQtyServer + // + this.chkQtyServer.AutoSize = true; + this.chkQtyServer.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkQtyServer.ForeColor = System.Drawing.Color.Gray; + this.chkQtyServer.Location = new System.Drawing.Point(13, 47); + this.chkQtyServer.Name = "chkQtyServer"; + this.chkQtyServer.Size = new System.Drawing.Size(307, 25); + this.chkQtyServer.TabIndex = 13; + this.chkQtyServer.Tag = "1"; + this.chkQtyServer.Text = "Use server quantity based on Reel ID"; + this.chkQtyServer.UseVisualStyleBackColor = true; + this.chkQtyServer.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkQtyMRQ + // + this.chkQtyMRQ.AutoSize = true; + this.chkQtyMRQ.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkQtyMRQ.ForeColor = System.Drawing.Color.Gray; + this.chkQtyMRQ.Location = new System.Drawing.Point(13, 118); + this.chkQtyMRQ.Name = "chkQtyMRQ"; + this.chkQtyMRQ.Size = new System.Drawing.Size(453, 25); + this.chkQtyMRQ.TabIndex = 27; + this.chkQtyMRQ.Tag = "3"; + this.chkQtyMRQ.Text = "Enter quantity directly (automatic progress if RQ is read)"; + this.chkQtyMRQ.UseVisualStyleBackColor = true; + this.chkQtyMRQ.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // chkNew + // + this.chkNew.AutoSize = true; + this.chkNew.Font = new System.Drawing.Font("맑은 고딕", 11F); + this.chkNew.ForeColor = System.Drawing.Color.Gray; + this.chkNew.Location = new System.Drawing.Point(13, 83); + this.chkNew.Name = "chkNew"; + this.chkNew.Size = new System.Drawing.Size(159, 24); + this.chkNew.TabIndex = 24; + this.chkNew.Tag = "2"; + this.chkNew.Text = "Create new Reel ID"; + this.chkNew.UseVisualStyleBackColor = true; + this.chkNew.CheckStateChanged += new System.EventHandler(this.chkApplySidInfo_CheckStateChanged); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.GrpSidConvData); + this.tabPage2.Controls.Add(this.grpapplyjob); + this.tabPage2.Controls.Add(this.grpApplySidinfo); + this.tabPage2.Controls.Add(this.grpApplyWMSinfo); + this.tabPage2.Location = new System.Drawing.Point(4, 26); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(10); + this.tabPage2.Size = new System.Drawing.Size(701, 346); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Option Data"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // GrpSidConvData + // + this.GrpSidConvData.Controls.Add(this.chkSave2); + this.GrpSidConvData.Controls.Add(this.checkBox34); + this.GrpSidConvData.Controls.Add(this.checkBox35); + this.GrpSidConvData.Controls.Add(this.checkBox30); + this.GrpSidConvData.Controls.Add(this.checkBox2); + this.GrpSidConvData.Controls.Add(this.label6); + this.GrpSidConvData.Controls.Add(this.label7); + this.GrpSidConvData.Controls.Add(this.checkBox3); + this.GrpSidConvData.Controls.Add(this.checkBox20); + this.GrpSidConvData.Controls.Add(this.checkBox21); + this.GrpSidConvData.Controls.Add(this.checkBox22); + this.GrpSidConvData.Controls.Add(this.checkBox23); + this.GrpSidConvData.Controls.Add(this.checkBox24); + this.GrpSidConvData.Controls.Add(this.checkBox25); + this.GrpSidConvData.Dock = System.Windows.Forms.DockStyle.Top; + this.GrpSidConvData.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.GrpSidConvData.Location = new System.Drawing.Point(10, 256); + this.GrpSidConvData.Name = "GrpSidConvData"; + this.GrpSidConvData.Size = new System.Drawing.Size(681, 82); + this.GrpSidConvData.TabIndex = 34; + this.GrpSidConvData.TabStop = false; + this.GrpSidConvData.Text = "SID Conversion Table Server Application"; + // + // chkSave2 + // + this.chkSave2.AutoSize = true; + this.chkSave2.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.chkSave2.ForeColor = System.Drawing.Color.Tomato; + this.chkSave2.Location = new System.Drawing.Point(407, 51); + this.chkSave2.Name = "chkSave2"; + this.chkSave2.Size = new System.Drawing.Size(216, 23); + this.chkSave2.TabIndex = 39; + this.chkSave2.Tag = "11"; + this.chkSave2.Text = "Record change information"; + this.chkSave2.UseVisualStyleBackColor = true; + // + // checkBox34 + // + this.checkBox34.AutoSize = true; + this.checkBox34.ForeColor = System.Drawing.Color.Green; + this.checkBox34.Location = new System.Drawing.Point(582, 25); + this.checkBox34.Name = "checkBox34"; + this.checkBox34.Size = new System.Drawing.Size(72, 23); + this.checkBox34.TabIndex = 38; + this.checkBox34.Tag = "10"; + this.checkBox34.Text = "Qty(M)"; + this.checkBox34.UseVisualStyleBackColor = true; + // + // checkBox35 + // + this.checkBox35.AutoSize = true; + this.checkBox35.ForeColor = System.Drawing.Color.Green; + this.checkBox35.Location = new System.Drawing.Point(517, 25); + this.checkBox35.Name = "checkBox35"; + this.checkBox35.Size = new System.Drawing.Size(63, 23); + this.checkBox35.TabIndex = 37; + this.checkBox35.Tag = "9"; + this.checkBox35.Text = "Batch"; + this.checkBox35.UseVisualStyleBackColor = true; + // + // checkBox30 + // + this.checkBox30.AutoSize = true; + this.checkBox30.ForeColor = System.Drawing.Color.Blue; + this.checkBox30.Location = new System.Drawing.Point(291, 50); + this.checkBox30.Name = "checkBox30"; + this.checkBox30.Size = new System.Drawing.Size(62, 23); + this.checkBox30.TabIndex = 32; + this.checkBox30.Tag = "8"; + this.checkBox30.Text = "VLOT"; + this.checkBox30.UseVisualStyleBackColor = true; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Location = new System.Drawing.Point(407, 25); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(111, 23); + this.checkBox2.TabIndex = 31; + this.checkBox2.Tag = "4"; + this.checkBox2.Text = "Print Position"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label6.Location = new System.Drawing.Point(6, 54); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(41, 15); + this.label6.TabIndex = 29; + this.label6.Text = "Query"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label7.Location = new System.Drawing.Point(7, 28); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(40, 15); + this.label7.TabIndex = 29; + this.label7.Text = "Apply"; + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Location = new System.Drawing.Point(291, 24); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(114, 23); + this.checkBox3.TabIndex = 28; + this.checkBox3.Tag = "3"; + this.checkBox3.Text = "Vender Name"; + this.checkBox3.UseVisualStyleBackColor = true; + // + // checkBox20 + // + this.checkBox20.AutoSize = true; + this.checkBox20.ForeColor = System.Drawing.Color.Blue; + this.checkBox20.Location = new System.Drawing.Point(236, 50); + this.checkBox20.Name = "checkBox20"; + this.checkBox20.Size = new System.Drawing.Size(50, 23); + this.checkBox20.TabIndex = 27; + this.checkBox20.Tag = "7"; + this.checkBox20.Text = "SID"; + this.checkBox20.UseVisualStyleBackColor = true; + // + // checkBox21 + // + this.checkBox21.AutoSize = true; + this.checkBox21.ForeColor = System.Drawing.Color.Blue; + this.checkBox21.Location = new System.Drawing.Point(141, 50); + this.checkBox21.Name = "checkBox21"; + this.checkBox21.Size = new System.Drawing.Size(93, 23); + this.checkBox21.TabIndex = 25; + this.checkBox21.Tag = "6"; + this.checkBox21.Text = "Cust Code"; + this.checkBox21.UseVisualStyleBackColor = true; + // + // checkBox22 + // + this.checkBox22.AutoSize = true; + this.checkBox22.ForeColor = System.Drawing.Color.Blue; + this.checkBox22.Location = new System.Drawing.Point(59, 50); + this.checkBox22.Name = "checkBox22"; + this.checkBox22.Size = new System.Drawing.Size(77, 23); + this.checkBox22.TabIndex = 25; + this.checkBox22.Tag = "5"; + this.checkBox22.Text = "Part No"; + this.checkBox22.UseVisualStyleBackColor = true; + // + // checkBox23 + // + this.checkBox23.AutoSize = true; + this.checkBox23.Location = new System.Drawing.Point(236, 24); + this.checkBox23.Name = "checkBox23"; + this.checkBox23.Size = new System.Drawing.Size(50, 23); + this.checkBox23.TabIndex = 26; + this.checkBox23.Tag = "2"; + this.checkBox23.Text = "SID"; + this.checkBox23.UseVisualStyleBackColor = true; + // + // checkBox24 + // + this.checkBox24.AutoSize = true; + this.checkBox24.Location = new System.Drawing.Point(141, 24); + this.checkBox24.Name = "checkBox24"; + this.checkBox24.Size = new System.Drawing.Size(93, 23); + this.checkBox24.TabIndex = 25; + this.checkBox24.Tag = "1"; + this.checkBox24.Text = "Cust Code"; + this.checkBox24.UseVisualStyleBackColor = true; + // + // checkBox25 + // + this.checkBox25.AutoSize = true; + this.checkBox25.Location = new System.Drawing.Point(59, 24); + this.checkBox25.Name = "checkBox25"; + this.checkBox25.Size = new System.Drawing.Size(77, 23); + this.checkBox25.TabIndex = 25; + this.checkBox25.Tag = "0"; + this.checkBox25.Text = "Part No"; + this.checkBox25.UseVisualStyleBackColor = true; + // + // grpapplyjob + // + this.grpapplyjob.Controls.Add(this.checkBox29); + this.grpapplyjob.Controls.Add(this.checkBox18); + this.grpapplyjob.Controls.Add(this.label3); + this.grpapplyjob.Controls.Add(this.label2); + this.grpapplyjob.Controls.Add(this.checkBox10); + this.grpapplyjob.Controls.Add(this.checkBox9); + this.grpapplyjob.Controls.Add(this.checkBox6); + this.grpapplyjob.Controls.Add(this.checkBox7); + this.grpapplyjob.Controls.Add(this.checkBox8); + this.grpapplyjob.Controls.Add(this.checkBox5); + this.grpapplyjob.Controls.Add(this.checkBox4); + this.grpapplyjob.Dock = System.Windows.Forms.DockStyle.Top; + this.grpapplyjob.Enabled = false; + this.grpapplyjob.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.grpapplyjob.Location = new System.Drawing.Point(10, 174); + this.grpapplyjob.Name = "grpapplyjob"; + this.grpapplyjob.Size = new System.Drawing.Size(681, 82); + this.grpapplyjob.TabIndex = 33; + this.grpapplyjob.TabStop = false; + this.grpapplyjob.Text = "Daily Work Application"; + // + // checkBox29 + // + this.checkBox29.AutoSize = true; + this.checkBox29.ForeColor = System.Drawing.Color.Blue; + this.checkBox29.Location = new System.Drawing.Point(291, 51); + this.checkBox29.Name = "checkBox29"; + this.checkBox29.Size = new System.Drawing.Size(62, 23); + this.checkBox29.TabIndex = 31; + this.checkBox29.Tag = "8"; + this.checkBox29.Text = "VLOT"; + this.checkBox29.UseVisualStyleBackColor = true; + // + // checkBox18 + // + this.checkBox18.AutoSize = true; + this.checkBox18.Location = new System.Drawing.Point(407, 24); + this.checkBox18.Name = "checkBox18"; + this.checkBox18.Size = new System.Drawing.Size(111, 23); + this.checkBox18.TabIndex = 30; + this.checkBox18.Tag = "4"; + this.checkBox18.Text = "Print Position"; + this.checkBox18.UseVisualStyleBackColor = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label3.Location = new System.Drawing.Point(6, 54); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 15); + this.label3.TabIndex = 29; + this.label3.Text = "Query"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label2.Location = new System.Drawing.Point(7, 28); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(40, 15); + this.label2.TabIndex = 29; + this.label2.Text = "Apply"; + // + // checkBox10 + // + this.checkBox10.AutoSize = true; + this.checkBox10.Location = new System.Drawing.Point(291, 24); + this.checkBox10.Name = "checkBox10"; + this.checkBox10.Size = new System.Drawing.Size(114, 23); + this.checkBox10.TabIndex = 28; + this.checkBox10.Tag = "3"; + this.checkBox10.Text = "Vender Name"; + this.checkBox10.UseVisualStyleBackColor = true; + // + // checkBox9 + // + this.checkBox9.AutoSize = true; + this.checkBox9.ForeColor = System.Drawing.Color.Blue; + this.checkBox9.Location = new System.Drawing.Point(236, 50); + this.checkBox9.Name = "checkBox9"; + this.checkBox9.Size = new System.Drawing.Size(50, 23); + this.checkBox9.TabIndex = 27; + this.checkBox9.Tag = "7"; + this.checkBox9.Text = "SID"; + this.checkBox9.UseVisualStyleBackColor = true; + // + // checkBox6 + // + this.checkBox6.AutoSize = true; + this.checkBox6.ForeColor = System.Drawing.Color.Blue; + this.checkBox6.Location = new System.Drawing.Point(141, 50); + this.checkBox6.Name = "checkBox6"; + this.checkBox6.Size = new System.Drawing.Size(93, 23); + this.checkBox6.TabIndex = 25; + this.checkBox6.Tag = "6"; + this.checkBox6.Text = "Cust Code"; + this.checkBox6.UseVisualStyleBackColor = true; + // + // checkBox7 + // + this.checkBox7.AutoSize = true; + this.checkBox7.ForeColor = System.Drawing.Color.Blue; + this.checkBox7.Location = new System.Drawing.Point(59, 50); + this.checkBox7.Name = "checkBox7"; + this.checkBox7.Size = new System.Drawing.Size(77, 23); + this.checkBox7.TabIndex = 25; + this.checkBox7.Tag = "5"; + this.checkBox7.Text = "Part No"; + this.checkBox7.UseVisualStyleBackColor = true; + // + // checkBox8 + // + this.checkBox8.AutoSize = true; + this.checkBox8.Location = new System.Drawing.Point(236, 24); + this.checkBox8.Name = "checkBox8"; + this.checkBox8.Size = new System.Drawing.Size(50, 23); + this.checkBox8.TabIndex = 26; + this.checkBox8.Tag = "2"; + this.checkBox8.Text = "SID"; + this.checkBox8.UseVisualStyleBackColor = true; + // + // checkBox5 + // + this.checkBox5.AutoSize = true; + this.checkBox5.Location = new System.Drawing.Point(141, 24); + this.checkBox5.Name = "checkBox5"; + this.checkBox5.Size = new System.Drawing.Size(93, 23); + this.checkBox5.TabIndex = 25; + this.checkBox5.Tag = "1"; + this.checkBox5.Text = "Cust Code"; + this.checkBox5.UseVisualStyleBackColor = true; + // + // checkBox4 + // + this.checkBox4.AutoSize = true; + this.checkBox4.Location = new System.Drawing.Point(59, 24); + this.checkBox4.Name = "checkBox4"; + this.checkBox4.Size = new System.Drawing.Size(77, 23); + this.checkBox4.TabIndex = 25; + this.checkBox4.Tag = "0"; + this.checkBox4.Text = "Part No"; + this.checkBox4.UseVisualStyleBackColor = true; + // + // grpApplySidinfo + // + this.grpApplySidinfo.Controls.Add(this.checkBox28); + this.grpApplySidinfo.Controls.Add(this.checkBox26); + this.grpApplySidinfo.Controls.Add(this.checkBox27); + this.grpApplySidinfo.Controls.Add(this.chkSave1); + this.grpApplySidinfo.Controls.Add(this.checkBox19); + this.grpApplySidinfo.Controls.Add(this.label4); + this.grpApplySidinfo.Controls.Add(this.label5); + this.grpApplySidinfo.Controls.Add(this.checkBox11); + this.grpApplySidinfo.Controls.Add(this.checkBox12); + this.grpApplySidinfo.Controls.Add(this.checkBox13); + this.grpApplySidinfo.Controls.Add(this.checkBox14); + this.grpApplySidinfo.Controls.Add(this.checkBox15); + this.grpApplySidinfo.Controls.Add(this.checkBox16); + this.grpApplySidinfo.Controls.Add(this.checkBox17); + this.grpApplySidinfo.Dock = System.Windows.Forms.DockStyle.Top; + this.grpApplySidinfo.Enabled = false; + this.grpApplySidinfo.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.grpApplySidinfo.Location = new System.Drawing.Point(10, 92); + this.grpApplySidinfo.Name = "grpApplySidinfo"; + this.grpApplySidinfo.Size = new System.Drawing.Size(681, 82); + this.grpApplySidinfo.TabIndex = 33; + this.grpApplySidinfo.TabStop = false; + this.grpApplySidinfo.Text = "SID Information Application"; + // + // checkBox28 + // + this.checkBox28.AutoSize = true; + this.checkBox28.ForeColor = System.Drawing.Color.Blue; + this.checkBox28.Location = new System.Drawing.Point(291, 51); + this.checkBox28.Name = "checkBox28"; + this.checkBox28.Size = new System.Drawing.Size(62, 23); + this.checkBox28.TabIndex = 37; + this.checkBox28.Tag = "11"; + this.checkBox28.Text = "VLOT"; + this.checkBox28.UseVisualStyleBackColor = true; + // + // checkBox26 + // + this.checkBox26.AutoSize = true; + this.checkBox26.ForeColor = System.Drawing.Color.Green; + this.checkBox26.Location = new System.Drawing.Point(582, 24); + this.checkBox26.Name = "checkBox26"; + this.checkBox26.Size = new System.Drawing.Size(72, 23); + this.checkBox26.TabIndex = 36; + this.checkBox26.Tag = "10"; + this.checkBox26.Text = "Qty(M)"; + this.checkBox26.UseVisualStyleBackColor = true; + // + // checkBox27 + // + this.checkBox27.AutoSize = true; + this.checkBox27.ForeColor = System.Drawing.Color.Green; + this.checkBox27.Location = new System.Drawing.Point(517, 24); + this.checkBox27.Name = "checkBox27"; + this.checkBox27.Size = new System.Drawing.Size(63, 23); + this.checkBox27.TabIndex = 35; + this.checkBox27.Tag = "9"; + this.checkBox27.Text = "Batch"; + this.checkBox27.UseVisualStyleBackColor = true; + // + // chkSave1 + // + this.chkSave1.AutoSize = true; + this.chkSave1.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.chkSave1.ForeColor = System.Drawing.Color.Tomato; + this.chkSave1.Location = new System.Drawing.Point(407, 50); + this.chkSave1.Name = "chkSave1"; + this.chkSave1.Size = new System.Drawing.Size(216, 23); + this.chkSave1.TabIndex = 33; + this.chkSave1.Tag = "8"; + this.chkSave1.Text = "Record change information"; + this.chkSave1.UseVisualStyleBackColor = true; + // + // checkBox19 + // + this.checkBox19.AutoSize = true; + this.checkBox19.Location = new System.Drawing.Point(407, 25); + this.checkBox19.Name = "checkBox19"; + this.checkBox19.Size = new System.Drawing.Size(111, 23); + this.checkBox19.TabIndex = 31; + this.checkBox19.Tag = "4"; + this.checkBox19.Text = "Print Position"; + this.checkBox19.UseVisualStyleBackColor = true; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label4.Location = new System.Drawing.Point(6, 54); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(41, 15); + this.label4.TabIndex = 29; + this.label4.Text = "Query"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label5.Location = new System.Drawing.Point(7, 28); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(40, 15); + this.label5.TabIndex = 29; + this.label5.Text = "Apply"; + // + // checkBox11 + // + this.checkBox11.AutoSize = true; + this.checkBox11.Location = new System.Drawing.Point(291, 24); + this.checkBox11.Name = "checkBox11"; + this.checkBox11.Size = new System.Drawing.Size(114, 23); + this.checkBox11.TabIndex = 28; + this.checkBox11.Tag = "3"; + this.checkBox11.Text = "Vender Name"; + this.checkBox11.UseVisualStyleBackColor = true; + // + // checkBox12 + // + this.checkBox12.AutoSize = true; + this.checkBox12.ForeColor = System.Drawing.Color.Blue; + this.checkBox12.Location = new System.Drawing.Point(236, 50); + this.checkBox12.Name = "checkBox12"; + this.checkBox12.Size = new System.Drawing.Size(50, 23); + this.checkBox12.TabIndex = 27; + this.checkBox12.Tag = "7"; + this.checkBox12.Text = "SID"; + this.checkBox12.UseVisualStyleBackColor = true; + // + // checkBox13 + // + this.checkBox13.AutoSize = true; + this.checkBox13.ForeColor = System.Drawing.Color.Blue; + this.checkBox13.Location = new System.Drawing.Point(141, 50); + this.checkBox13.Name = "checkBox13"; + this.checkBox13.Size = new System.Drawing.Size(93, 23); + this.checkBox13.TabIndex = 25; + this.checkBox13.Tag = "6"; + this.checkBox13.Text = "Cust Code"; + this.checkBox13.UseVisualStyleBackColor = true; + // + // checkBox14 + // + this.checkBox14.AutoSize = true; + this.checkBox14.ForeColor = System.Drawing.Color.Blue; + this.checkBox14.Location = new System.Drawing.Point(59, 50); + this.checkBox14.Name = "checkBox14"; + this.checkBox14.Size = new System.Drawing.Size(77, 23); + this.checkBox14.TabIndex = 25; + this.checkBox14.Tag = "5"; + this.checkBox14.Text = "Part No"; + this.checkBox14.UseVisualStyleBackColor = true; + // + // checkBox15 + // + this.checkBox15.AutoSize = true; + this.checkBox15.Location = new System.Drawing.Point(236, 24); + this.checkBox15.Name = "checkBox15"; + this.checkBox15.Size = new System.Drawing.Size(50, 23); + this.checkBox15.TabIndex = 26; + this.checkBox15.Tag = "2"; + this.checkBox15.Text = "SID"; + this.checkBox15.UseVisualStyleBackColor = true; + // + // checkBox16 + // + this.checkBox16.AutoSize = true; + this.checkBox16.Location = new System.Drawing.Point(141, 24); + this.checkBox16.Name = "checkBox16"; + this.checkBox16.Size = new System.Drawing.Size(93, 23); + this.checkBox16.TabIndex = 25; + this.checkBox16.Tag = "1"; + this.checkBox16.Text = "Cust Code"; + this.checkBox16.UseVisualStyleBackColor = true; + // + // checkBox17 + // + this.checkBox17.AutoSize = true; + this.checkBox17.Location = new System.Drawing.Point(59, 24); + this.checkBox17.Name = "checkBox17"; + this.checkBox17.Size = new System.Drawing.Size(77, 23); + this.checkBox17.TabIndex = 25; + this.checkBox17.Tag = "0"; + this.checkBox17.Text = "Part No"; + this.checkBox17.UseVisualStyleBackColor = true; + // + // grpApplyWMSinfo + // + this.grpApplyWMSinfo.Controls.Add(this.checkBox33); + this.grpApplyWMSinfo.Controls.Add(this.checkBox1); + this.grpApplyWMSinfo.Controls.Add(this.checkBox36); + this.grpApplyWMSinfo.Controls.Add(this.checkBox38); + this.grpApplyWMSinfo.Controls.Add(this.label22); + this.grpApplyWMSinfo.Controls.Add(this.label23); + this.grpApplyWMSinfo.Controls.Add(this.checkBox41); + this.grpApplyWMSinfo.Controls.Add(this.checkBox42); + this.grpApplyWMSinfo.Controls.Add(this.checkBox43); + this.grpApplyWMSinfo.Controls.Add(this.checkBox44); + this.grpApplyWMSinfo.Controls.Add(this.checkBox45); + this.grpApplyWMSinfo.Controls.Add(this.checkBox46); + this.grpApplyWMSinfo.Controls.Add(this.checkBox47); + this.grpApplyWMSinfo.Dock = System.Windows.Forms.DockStyle.Top; + this.grpApplyWMSinfo.Enabled = false; + this.grpApplyWMSinfo.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.grpApplyWMSinfo.Location = new System.Drawing.Point(10, 10); + this.grpApplyWMSinfo.Name = "grpApplyWMSinfo"; + this.grpApplyWMSinfo.Size = new System.Drawing.Size(681, 82); + this.grpApplyWMSinfo.TabIndex = 35; + this.grpApplyWMSinfo.TabStop = false; + this.grpApplyWMSinfo.Text = "WMS Information Application"; + // + // checkBox36 + // + this.checkBox36.AutoSize = true; + this.checkBox36.ForeColor = System.Drawing.Color.Blue; + this.checkBox36.Location = new System.Drawing.Point(291, 51); + this.checkBox36.Name = "checkBox36"; + this.checkBox36.Size = new System.Drawing.Size(62, 23); + this.checkBox36.TabIndex = 37; + this.checkBox36.Tag = "11"; + this.checkBox36.Text = "VLOT"; + this.checkBox36.UseVisualStyleBackColor = true; + // + // checkBox38 + // + this.checkBox38.AutoSize = true; + this.checkBox38.ForeColor = System.Drawing.Color.Green; + this.checkBox38.Location = new System.Drawing.Point(505, 24); + this.checkBox38.Name = "checkBox38"; + this.checkBox38.Size = new System.Drawing.Size(63, 23); + this.checkBox38.TabIndex = 35; + this.checkBox38.Tag = "9"; + this.checkBox38.Text = "Batch"; + this.checkBox38.UseVisualStyleBackColor = true; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label22.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label22.Location = new System.Drawing.Point(6, 54); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(41, 15); + this.label22.TabIndex = 29; + this.label22.Text = "Query"; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label23.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label23.Location = new System.Drawing.Point(7, 28); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(40, 15); + this.label23.TabIndex = 29; + this.label23.Text = "Apply"; + // + // checkBox41 + // + this.checkBox41.AutoSize = true; + this.checkBox41.Location = new System.Drawing.Point(291, 24); + this.checkBox41.Name = "checkBox41"; + this.checkBox41.Size = new System.Drawing.Size(114, 23); + this.checkBox41.TabIndex = 28; + this.checkBox41.Tag = "3"; + this.checkBox41.Text = "Vender Name"; + this.checkBox41.UseVisualStyleBackColor = true; + // + // checkBox42 + // + this.checkBox42.AutoSize = true; + this.checkBox42.ForeColor = System.Drawing.Color.Blue; + this.checkBox42.Location = new System.Drawing.Point(236, 50); + this.checkBox42.Name = "checkBox42"; + this.checkBox42.Size = new System.Drawing.Size(50, 23); + this.checkBox42.TabIndex = 27; + this.checkBox42.Tag = "7"; + this.checkBox42.Text = "SID"; + this.checkBox42.UseVisualStyleBackColor = true; + // + // checkBox43 + // + this.checkBox43.AutoSize = true; + this.checkBox43.ForeColor = System.Drawing.Color.Blue; + this.checkBox43.Location = new System.Drawing.Point(141, 50); + this.checkBox43.Name = "checkBox43"; + this.checkBox43.Size = new System.Drawing.Size(93, 23); + this.checkBox43.TabIndex = 25; + this.checkBox43.Tag = "6"; + this.checkBox43.Text = "Cust Code"; + this.checkBox43.UseVisualStyleBackColor = true; + // + // checkBox44 + // + this.checkBox44.AutoSize = true; + this.checkBox44.ForeColor = System.Drawing.Color.Blue; + this.checkBox44.Location = new System.Drawing.Point(59, 50); + this.checkBox44.Name = "checkBox44"; + this.checkBox44.Size = new System.Drawing.Size(77, 23); + this.checkBox44.TabIndex = 25; + this.checkBox44.Tag = "5"; + this.checkBox44.Text = "Part No"; + this.checkBox44.UseVisualStyleBackColor = true; + // + // checkBox45 + // + this.checkBox45.AutoSize = true; + this.checkBox45.Location = new System.Drawing.Point(236, 24); + this.checkBox45.Name = "checkBox45"; + this.checkBox45.Size = new System.Drawing.Size(50, 23); + this.checkBox45.TabIndex = 26; + this.checkBox45.Tag = "2"; + this.checkBox45.Text = "SID"; + this.checkBox45.UseVisualStyleBackColor = true; + // + // checkBox46 + // + this.checkBox46.AutoSize = true; + this.checkBox46.Location = new System.Drawing.Point(141, 24); + this.checkBox46.Name = "checkBox46"; + this.checkBox46.Size = new System.Drawing.Size(93, 23); + this.checkBox46.TabIndex = 25; + this.checkBox46.Tag = "1"; + this.checkBox46.Text = "Cust Code"; + this.checkBox46.UseVisualStyleBackColor = true; + // + // checkBox47 + // + this.checkBox47.AutoSize = true; + this.checkBox47.Location = new System.Drawing.Point(59, 24); + this.checkBox47.Name = "checkBox47"; + this.checkBox47.Size = new System.Drawing.Size(77, 23); + this.checkBox47.TabIndex = 25; + this.checkBox47.Tag = "0"; + this.checkBox47.Text = "Part No"; + this.checkBox47.UseVisualStyleBackColor = true; + // + // panel6 + // + this.panel6.BackColor = System.Drawing.Color.Gainsboro; + this.panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel6.Controls.Add(this.tbDefDate); + this.panel6.Controls.Add(this.label18); + this.panel6.Controls.Add(this.tbDefVname); + this.panel6.Controls.Add(this.label17); + this.panel6.Controls.Add(this.label16); + this.panel6.Dock = System.Windows.Forms.DockStyle.Top; + this.panel6.Location = new System.Drawing.Point(10, 46); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(709, 36); + this.panel6.TabIndex = 28; + // + // tbDefDate + // + this.tbDefDate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbDefDate.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Def_MFG", true)); + this.tbDefDate.Dock = System.Windows.Forms.DockStyle.Left; + this.tbDefDate.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbDefDate.Location = new System.Drawing.Point(418, 0); + this.tbDefDate.Name = "tbDefDate"; + this.tbDefDate.Size = new System.Drawing.Size(136, 34); + this.tbDefDate.TabIndex = 11; + this.tbDefDate.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label18 + // + this.label18.Dock = System.Windows.Forms.DockStyle.Left; + this.label18.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label18.Location = new System.Drawing.Point(324, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(94, 34); + this.label18.TabIndex = 10; + this.label18.Text = "MFG Date"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbDefVname + // + this.tbDefVname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbDefVname.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Def_VName", true)); + this.tbDefVname.Dock = System.Windows.Forms.DockStyle.Left; + this.tbDefVname.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbDefVname.Location = new System.Drawing.Point(188, 0); + this.tbDefVname.Name = "tbDefVname"; + this.tbDefVname.Size = new System.Drawing.Size(136, 34); + this.tbDefVname.TabIndex = 8; + this.tbDefVname.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label17 + // + this.label17.Dock = System.Windows.Forms.DockStyle.Left; + this.label17.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label17.Location = new System.Drawing.Point(94, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(94, 34); + this.label17.TabIndex = 9; + this.label17.Text = "V.Name"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label16 + // + this.label16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.label16.Dock = System.Windows.Forms.DockStyle.Left; + this.label16.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(94, 34); + this.label16.TabIndex = 7; + this.label16.Text = "Fixed Value"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.Gainsboro; + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.Controls.Add(this.checkBox31); + this.panel2.Controls.Add(this.bCD_DMCheckBox); + this.panel2.Controls.Add(this.bCD_QRCheckBox); + this.panel2.Controls.Add(this.bCD_1DCheckBox); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(10, 10); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(709, 36); + this.panel2.TabIndex = 6; + // + // bCD_DMCheckBox + // + this.bCD_DMCheckBox.AutoSize = true; + this.bCD_DMCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "BCD_DM", true)); + this.bCD_DMCheckBox.Dock = System.Windows.Forms.DockStyle.Left; + this.bCD_DMCheckBox.Location = new System.Drawing.Point(301, 0); + this.bCD_DMCheckBox.Name = "bCD_DMCheckBox"; + this.bCD_DMCheckBox.Size = new System.Drawing.Size(108, 34); + this.bCD_DMCheckBox.TabIndex = 5; + this.bCD_DMCheckBox.Text = "Data Matrix"; + this.bCD_DMCheckBox.UseVisualStyleBackColor = true; + // + // bCD_QRCheckBox + // + this.bCD_QRCheckBox.AutoSize = true; + this.bCD_QRCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "BCD_QR", true)); + this.bCD_QRCheckBox.Dock = System.Windows.Forms.DockStyle.Left; + this.bCD_QRCheckBox.Location = new System.Drawing.Point(211, 0); + this.bCD_QRCheckBox.Name = "bCD_QRCheckBox"; + this.bCD_QRCheckBox.Size = new System.Drawing.Size(90, 34); + this.bCD_QRCheckBox.TabIndex = 3; + this.bCD_QRCheckBox.Text = "QR Code"; + this.bCD_QRCheckBox.UseVisualStyleBackColor = true; + // + // bCD_1DCheckBox + // + this.bCD_1DCheckBox.AutoSize = true; + this.bCD_1DCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("CheckState", this.bs, "BCD_1D", true)); + this.bCD_1DCheckBox.Dock = System.Windows.Forms.DockStyle.Left; + this.bCD_1DCheckBox.Location = new System.Drawing.Point(94, 0); + this.bCD_1DCheckBox.Name = "bCD_1DCheckBox"; + this.bCD_1DCheckBox.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.bCD_1DCheckBox.Size = new System.Drawing.Size(117, 34); + this.bCD_1DCheckBox.TabIndex = 1; + this.bCD_1DCheckBox.Text = "1D Barcode"; + this.bCD_1DCheckBox.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(94, 34); + this.label1.TabIndex = 6; + this.label1.Text = "Allowed Barcodes"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.btConvOk, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.btConvOff, 1, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 36); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1368, 100); + this.tableLayoutPanel1.TabIndex = 31; + // + // btConvOk + // + this.btConvOk.Dock = System.Windows.Forms.DockStyle.Fill; + this.btConvOk.Font = new System.Drawing.Font("맑은 고딕", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btConvOk.Location = new System.Drawing.Point(3, 3); + this.btConvOk.Name = "btConvOk"; + this.btConvOk.Size = new System.Drawing.Size(678, 94); + this.btConvOk.TabIndex = 0; + this.btConvOk.Text = "Conveyor ON"; + this.btConvOk.UseVisualStyleBackColor = true; + this.btConvOk.Click += new System.EventHandler(this.btConvOk_Click); + // + // btConvOff + // + this.btConvOff.Dock = System.Windows.Forms.DockStyle.Fill; + this.btConvOff.Font = new System.Drawing.Font("맑은 고딕", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btConvOff.Location = new System.Drawing.Point(687, 3); + this.btConvOff.Name = "btConvOff"; + this.btConvOff.Size = new System.Drawing.Size(678, 94); + this.btConvOff.TabIndex = 0; + this.btConvOff.Text = "Conveyor OFF"; + this.btConvOff.UseVisualStyleBackColor = true; + this.btConvOff.Click += new System.EventHandler(this.btConvOff_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.label15); + this.panel3.Controls.Add(this.label14); + this.panel3.Controls.Add(this.label13); + this.panel3.Controls.Add(this.label12); + this.panel3.Controls.Add(this.label11); + this.panel3.Controls.Add(this.label10); + this.panel3.Controls.Add(this.label9); + this.panel3.Controls.Add(this.label8); + this.panel3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel3.Font = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.panel3.Location = new System.Drawing.Point(0, 691); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1368, 20); + this.panel3.TabIndex = 29; + // + // label15 + // + this.label15.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "vSIDConv", true)); + this.label15.Dock = System.Windows.Forms.DockStyle.Left; + this.label15.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label15.Location = new System.Drawing.Point(400, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(50, 20); + this.label15.TabIndex = 7; + this.label15.Text = "--"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.Dock = System.Windows.Forms.DockStyle.Left; + this.label14.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label14.Location = new System.Drawing.Point(300, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(100, 20); + this.label14.TabIndex = 6; + this.label14.Text = "INFO(CONV)"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label13 + // + this.label13.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "vJobInfo", true)); + this.label13.Dock = System.Windows.Forms.DockStyle.Left; + this.label13.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label13.Location = new System.Drawing.Point(250, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(50, 20); + this.label13.TabIndex = 5; + this.label13.Text = "--"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label12 + // + this.label12.Dock = System.Windows.Forms.DockStyle.Left; + this.label12.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label12.Location = new System.Drawing.Point(200, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(50, 20); + this.label12.TabIndex = 4; + this.label12.Text = "JOB"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "vSIDInfo", true)); + this.label11.Dock = System.Windows.Forms.DockStyle.Left; + this.label11.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label11.Location = new System.Drawing.Point(150, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(50, 20); + this.label11.TabIndex = 3; + this.label11.Text = "--"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.Dock = System.Windows.Forms.DockStyle.Left; + this.label10.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label10.Location = new System.Drawing.Point(100, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(50, 20); + this.label10.TabIndex = 2; + this.label10.Text = "INFO"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "vOption", true)); + this.label9.Dock = System.Windows.Forms.DockStyle.Left; + this.label9.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label9.Location = new System.Drawing.Point(50, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(50, 20); + this.label9.TabIndex = 1; + this.label9.Text = "--"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.Dock = System.Windows.Forms.DockStyle.Left; + this.label8.Font = new System.Drawing.Font("Consolas", 9.75F); + this.label8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.label8.Location = new System.Drawing.Point(0, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(50, 20); + this.label8.TabIndex = 0; + this.label8.Text = "OPT"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // toolStrip1 + // + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(48, 48); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btAdd, + this.btDel, + this.btReName, + this.btSave, + this.btCopy, + this.toolStripButton10, + this.toolStripSeparator1}); + this.toolStrip1.Location = new System.Drawing.Point(0, 711); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(1368, 55); + this.toolStrip1.TabIndex = 8; + this.toolStrip1.Text = "toolStrip1"; + // + // btAdd + // + this.btAdd.Image = global::Project.Properties.Resources.icons8_add_40; + this.btAdd.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btAdd.Name = "btAdd"; + this.btAdd.Size = new System.Drawing.Size(97, 52); + this.btAdd.Text = "Add(&A)"; + this.btAdd.Click += new System.EventHandler(this.toolStripButton4_Click); + // + // btDel + // + this.btDel.Image = global::Project.Properties.Resources.icons8_delete_40; + this.btDel.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btDel.Name = "btDel"; + this.btDel.Size = new System.Drawing.Size(108, 52); + this.btDel.Text = "Delete(&D)"; + this.btDel.Click += new System.EventHandler(this.toolStripButton5_Click); + // + // btReName + // + this.btReName.Image = ((System.Drawing.Image)(resources.GetObject("btReName.Image"))); + this.btReName.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btReName.Name = "btReName"; + this.btReName.Size = new System.Drawing.Size(104, 52); + this.btReName.Text = "ReName"; + this.btReName.Click += new System.EventHandler(this.btReName_Click); + // + // btSave + // + this.btSave.Image = ((System.Drawing.Image)(resources.GetObject("btSave.Image"))); + this.btSave.Name = "btSave"; + this.btSave.Size = new System.Drawing.Size(97, 52); + this.btSave.Text = "Save(&S)"; + this.btSave.Click += new System.EventHandler(this.toolStripButton9_Click); + // + // btCopy + // + this.btCopy.Image = ((System.Drawing.Image)(resources.GetObject("btCopy.Image"))); + this.btCopy.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btCopy.Name = "btCopy"; + this.btCopy.Size = new System.Drawing.Size(87, 52); + this.btCopy.Text = "Copy"; + this.btCopy.Click += new System.EventHandler(this.toolStripButton8_Click); + // + // toolStripButton10 + // + this.toolStripButton10.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton10.AutoSize = false; + this.toolStripButton10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.toolStripButton10.ForeColor = System.Drawing.Color.White; + this.toolStripButton10.Image = global::Project.Properties.Resources.icons8_selection_40; + this.toolStripButton10.Name = "toolStripButton10"; + this.toolStripButton10.Size = new System.Drawing.Size(215, 44); + this.toolStripButton10.Text = "Select this model"; + this.toolStripButton10.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.toolStripButton10.Click += new System.EventHandler(this.toolStripButton10_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 55); + // + // arLabel2 + // + this.arLabel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(251)))), ((int)(((byte)(251))))); + this.arLabel2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242))))); + this.arLabel2.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(192)))), ((int)(((byte)(194))))); + this.arLabel2.BorderColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(192)))), ((int)(((byte)(194))))); + this.arLabel2.BorderSize = new System.Windows.Forms.Padding(1); + this.arLabel2.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel2.Cursor = System.Windows.Forms.Cursors.Arrow; + this.arLabel2.Dock = System.Windows.Forms.DockStyle.Top; + this.arLabel2.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(85)))), ((int)(((byte)(85))))); + this.arLabel2.GradientEnable = true; + this.arLabel2.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel2.GradientRepeatBG = false; + this.arLabel2.isButton = false; + this.arLabel2.Location = new System.Drawing.Point(0, 0); + this.arLabel2.Margin = new System.Windows.Forms.Padding(0); + this.arLabel2.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel2.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel2.msg = null; + this.arLabel2.Name = "arLabel2"; + this.arLabel2.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel2.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel2.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel2.ProgressEnable = false; + this.arLabel2.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel2.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel2.ProgressMax = 100F; + this.arLabel2.ProgressMin = 0F; + this.arLabel2.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel2.ProgressValue = 0F; + this.arLabel2.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.arLabel2.Sign = ""; + this.arLabel2.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel2.SignColor = System.Drawing.Color.Yellow; + this.arLabel2.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel2.Size = new System.Drawing.Size(1368, 36); + this.arLabel2.TabIndex = 7; + this.arLabel2.Text = "Description"; + this.arLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel2.TextShadow = true; + this.arLabel2.TextVisible = true; + // + // arLabel18 + // + this.arLabel18.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(231)))), ((int)(((byte)(229)))), ((int)(((byte)(231))))); + this.arLabel18.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(209)))), ((int)(((byte)(207)))), ((int)(((byte)(209))))); + this.arLabel18.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel18.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(192)))), ((int)(((byte)(194))))); + this.arLabel18.BorderColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(194)))), ((int)(((byte)(192)))), ((int)(((byte)(194))))); + this.arLabel18.BorderSize = new System.Windows.Forms.Padding(1); + this.arLabel18.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel18.Cursor = System.Windows.Forms.Cursors.Arrow; + this.arLabel18.Dock = System.Windows.Forms.DockStyle.Top; + this.arLabel18.Font = new System.Drawing.Font("Cambria", 21.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel18.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(85)))), ((int)(((byte)(85)))), ((int)(((byte)(85))))); + this.arLabel18.GradientEnable = true; + this.arLabel18.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel18.GradientRepeatBG = false; + this.arLabel18.isButton = false; + this.arLabel18.Location = new System.Drawing.Point(0, 0); + this.arLabel18.Margin = new System.Windows.Forms.Padding(0); + this.arLabel18.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel18.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel18.msg = null; + this.arLabel18.Name = "arLabel18"; + this.arLabel18.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel18.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel18.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel18.ProgressEnable = false; + this.arLabel18.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel18.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel18.ProgressMax = 100F; + this.arLabel18.ProgressMin = 0F; + this.arLabel18.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel18.ProgressValue = 0F; + this.arLabel18.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.arLabel18.Sign = ""; + this.arLabel18.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel18.SignColor = System.Drawing.Color.Yellow; + this.arLabel18.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel18.Size = new System.Drawing.Size(1368, 53); + this.arLabel18.TabIndex = 5; + this.arLabel18.Text = "--"; + this.arLabel18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel18.TextShadow = true; + this.arLabel18.TextVisible = true; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.ForeColor = System.Drawing.Color.Blue; + this.checkBox1.Location = new System.Drawing.Point(359, 51); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(92, 23); + this.checkBox1.TabIndex = 38; + this.checkBox1.Tag = "12"; + this.checkBox1.Text = "MFG Date"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // checkBox33 + // + this.checkBox33.AutoSize = true; + this.checkBox33.ForeColor = System.Drawing.SystemColors.ControlText; + this.checkBox33.Location = new System.Drawing.Point(407, 24); + this.checkBox33.Name = "checkBox33"; + this.checkBox33.Size = new System.Drawing.Size(92, 23); + this.checkBox33.TabIndex = 39; + this.checkBox33.Tag = "13"; + this.checkBox33.Text = "MFG Date"; + this.checkBox33.UseVisualStyleBackColor = true; + // + // Model_Operation + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(1370, 821); + this.Controls.Add(this.panel5); + this.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Model_Operation"; + this.Padding = new System.Windows.Forms.Padding(1); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Model Selection"; + this.Load += new System.EventHandler(this.@__Load); + ((System.ComponentModel.ISupportInitialize)(this.dv)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ds1)).EndInit(); + this.panel5.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.GrpSidConvData.ResumeLayout(false); + this.GrpSidConvData.PerformLayout(); + this.grpapplyjob.ResumeLayout(false); + this.grpapplyjob.PerformLayout(); + this.grpApplySidinfo.ResumeLayout(false); + this.grpApplySidinfo.PerformLayout(); + this.grpApplyWMSinfo.ResumeLayout(false); + this.grpApplyWMSinfo.PerformLayout(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private DataSet1 ds1; + private arCtl.arDatagridView dv; + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.BindingSource bs; + private arCtl.arLabel arLabel18; + private System.Windows.Forms.Panel panel4; + private arCtl.arLabel arLabel2; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton btAdd; + private System.Windows.Forms.ToolStripButton btDel; + private System.Windows.Forms.ToolStripButton btCopy; + private System.Windows.Forms.ToolStripButton toolStripButton10; + private System.Windows.Forms.ToolStripButton btSave; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.CheckBox chkApplySidInfo; + private System.Windows.Forms.CheckBox chkApplyJobInfo; + private System.Windows.Forms.CheckBox chkApplySIDConvData; + private System.Windows.Forms.CheckBox chkUserConfirm; + private System.Windows.Forms.CheckBox chkSIDConv; + private System.Windows.Forms.CheckBox chkQtyServer; + private System.Windows.Forms.CheckBox chkQtyMRQ; + private System.Windows.Forms.CheckBox chkNew; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.GroupBox GrpSidConvData; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.CheckBox checkBox20; + private System.Windows.Forms.CheckBox checkBox21; + private System.Windows.Forms.CheckBox checkBox22; + private System.Windows.Forms.CheckBox checkBox23; + private System.Windows.Forms.CheckBox checkBox24; + private System.Windows.Forms.CheckBox checkBox25; + private System.Windows.Forms.GroupBox grpapplyjob; + private System.Windows.Forms.CheckBox checkBox18; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.CheckBox checkBox10; + private System.Windows.Forms.CheckBox checkBox9; + private System.Windows.Forms.CheckBox checkBox6; + private System.Windows.Forms.CheckBox checkBox7; + private System.Windows.Forms.CheckBox checkBox8; + private System.Windows.Forms.CheckBox checkBox5; + private System.Windows.Forms.CheckBox checkBox4; + private System.Windows.Forms.GroupBox grpApplySidinfo; + private System.Windows.Forms.CheckBox checkBox19; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.CheckBox checkBox11; + private System.Windows.Forms.CheckBox checkBox12; + private System.Windows.Forms.CheckBox checkBox13; + private System.Windows.Forms.CheckBox checkBox14; + private System.Windows.Forms.CheckBox checkBox15; + private System.Windows.Forms.CheckBox checkBox16; + private System.Windows.Forms.CheckBox checkBox17; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.CheckBox bCD_DMCheckBox; + private System.Windows.Forms.CheckBox bCD_QRCheckBox; + private System.Windows.Forms.CheckBox bCD_1DCheckBox; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.CheckBox chkSave1; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.TextBox tbDefVname; + private System.Windows.Forms.TextBox tbDefDate; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.CheckBox checkBox26; + private System.Windows.Forms.CheckBox checkBox27; + private System.Windows.Forms.CheckBox checkBox28; + private System.Windows.Forms.CheckBox checkBox30; + private System.Windows.Forms.CheckBox checkBox29; + private System.Windows.Forms.CheckBox checkBox31; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button btConvOk; + private System.Windows.Forms.Button btConvOff; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.CheckBox chkEnbCamera; + private System.Windows.Forms.CheckBox checkBox32; + private System.Windows.Forms.CheckBox chkSIDCHK; + private System.Windows.Forms.CheckBox checkBox34; + private System.Windows.Forms.CheckBox checkBox35; + private System.Windows.Forms.CheckBox chkSave2; + private System.Windows.Forms.CheckBox chkOwnZPL; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.CheckBox chkDisablePartNoValue; + private System.Windows.Forms.CheckBox chkDisableBatchValue; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tbAutoOutSec; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.CheckBox chkApplyWMSInfo; + private System.Windows.Forms.GroupBox grpApplyWMSinfo; + private System.Windows.Forms.CheckBox checkBox36; + private System.Windows.Forms.CheckBox checkBox38; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.CheckBox checkBox41; + private System.Windows.Forms.CheckBox checkBox42; + private System.Windows.Forms.CheckBox checkBox43; + private System.Windows.Forms.CheckBox checkBox44; + private System.Windows.Forms.CheckBox checkBox45; + private System.Windows.Forms.CheckBox checkBox46; + private System.Windows.Forms.CheckBox checkBox47; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_title; + private System.Windows.Forms.DataGridViewTextBoxColumn Code; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_bsave; + private System.Windows.Forms.ToolStripButton btReName; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox33; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/Model_Operation.cs b/Handler/Project/Dialog/Model_Operation.cs new file mode 100644 index 0000000..7286a97 --- /dev/null +++ b/Handler/Project/Dialog/Model_Operation.cs @@ -0,0 +1,680 @@ +using AR; +using Project.Dialog; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Web; +using System.Windows.Forms; + +namespace Project +{ + public partial class Model_Operation : Form + { + + public string Value = string.Empty; + public Model_Operation() + { + InitializeComponent(); + this.KeyPreview = true; + this.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Escape) this.Close(); }; + this.StartPosition = FormStartPosition.CenterScreen; + this.FormClosed += __Closed; + this.FormClosing += FModelV_FormClosing; + this.dv.CellContentClick += dv_CellContentClick; + //if (COMM.SETTING.Data.FullScreen) this.WindowState = FormWindowState.Maximized; + //this.WindowState = FormWindowState.Normal; + dvc_bsave.HeaderText = $"BLoad\n(1~8)"; + this.panel3.Visible = PUB.UserAdmin; + } + + private void FModelV_FormClosing(object sender, FormClosingEventArgs e) + { + //Pub.sm.setNewStep(StateMachine.eSystemStep.IDLE); + if (hasChanged()) + { + var dlg = UTIL.MsgQ("There are unsaved changes.\n" + + "If you proceed, the changed data will be lost\n" + + "Do you want to proceed?"); + + if (dlg != DialogResult.Yes) + { + e.Cancel = true; + return; + } + } + } + + private void __Closed(object sender, FormClosedEventArgs e) + { + + this.ds1.OPModel.TableNewRow -= Model_TableNewRow; + } + + private void __Load(object sender, EventArgs e) + { + this.ds1.Clear(); + this.ds1.OPModel.Merge(PUB.mdm.dataSet.OPModel); + this.ds1.OPModel.TableNewRow += Model_TableNewRow; + this.tmDisplay.Start(); + + //var MotList = PUB.mdm.dataSet.MCModel.GroupBy(t => t.Title).Select(t => t.Key).ToList(); + //comboBox1.Items.AddRange(MotList.ToArray()); + + if (this.ds1.OPModel.Rows.Count < 1) + { + var newdr = this.ds1.OPModel.NewOPModelRow(); + newdr.Title = "New Model"; + this.ds1.OPModel.AddOPModelRow(newdr); + UTIL.MsgI("New model information has been added.\n\nThis is the initial setup, so please check each status value."); + } + + //dispal current + if (PUB.Result.isSetvModel) + { + arLabel18.Text = PUB.Result.vModel.Title; + //find data + var datas = this.ds1.OPModel.Select("", this.bs.Sort); + for (int i = 0; i < datas.Length; i++) + { + if (datas[i]["Title"].ToString() == PUB.Result.vModel.Title) + { + this.bs.Position = i; + break; + } + } + } + else arLabel18.Text = "--"; + //chekauth(false); + + //checkBox1.Enabled = checkBox4.Checked; + //checkBox2.Enabled = checkBox4.Checked; + //checkBox3.Enabled = checkBox4.Checked; + + if (PUB.UserAdmin == false) + { + //오퍼레이터는 다 못한다 + dv.EditMode = DataGridViewEditMode.EditProgrammatically; + this.btAdd.Visible = false; + this.btSave.Visible = false; + this.btCopy.Visible = false; + this.toolStripSeparator1.Visible = false; + this.btDel.Visible = false; + } + + if (PUB.sm.Step != eSMStep.IDLE) + { + btDel.Enabled = false; + //btCopy.Enabled = false; + toolStripButton10.Visible = false; + //Util.MsgE("삭제/복사 작업은 대기 상태일때 가능 합니다"); + } + + //assig check events + foreach (var c in tabPage1.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Click += Chk_Option_Check; + } + foreach (var c in grpApplyWMSinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Click += Chk_WMSinfo_Check; + } + foreach (var c in grpApplySidinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Click += Chk_Sidinfo_Check; + } + foreach (var c in grpapplyjob.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Click += Chk_JobInfo_Check; + } + foreach (var c in GrpSidConvData.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Click += Chk_SIDConvData_Check; + } + } + + private void Chk_Option_Check(object sender, EventArgs e) + { + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + var chk = sender as CheckBox; + dr.vOption = UTIL.SetBitState(dr.vOption, int.Parse(chk.Tag.ToString()), chk.Checked); + dr.EndEdit(); + + bs_CurrentChanged_1(null, null); + } + private void Chk_WMSinfo_Check(object sender, EventArgs e) + { + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + var chk = sender as CheckBox; + dr.vWMSInfo = UTIL.SetBitState(dr.vWMSInfo, int.Parse(chk.Tag.ToString()), chk.Checked); + dr.EndEdit(); + + bs_CurrentChanged_1(null, null); + } + private void Chk_Sidinfo_Check(object sender, EventArgs e) + { + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + var chk = sender as CheckBox; + dr.vSIDInfo = UTIL.SetBitState(dr.vSIDInfo, int.Parse(chk.Tag.ToString()), chk.Checked); + dr.EndEdit(); + + bs_CurrentChanged_1(null, null); + } + private void Chk_JobInfo_Check(object sender, EventArgs e) + { + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + var chk = sender as CheckBox; + dr.vJobInfo = UTIL.SetBitState(dr.vJobInfo, int.Parse(chk.Tag.ToString()), chk.Checked); + dr.EndEdit(); + + bs_CurrentChanged_1(null, null); + } + private void Chk_SIDConvData_Check(object sender, EventArgs e) + { + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + var chk = sender as CheckBox; + dr.vSIDConv = UTIL.SetBitState(dr.vSIDConv, int.Parse(chk.Tag.ToString()), chk.Checked); + dr.EndEdit(); + + bs_CurrentChanged_1(null, null); + } + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + + private void LbTitle_DoubleClick(object sender, EventArgs e) + { + if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal; + else this.WindowState = FormWindowState.Maximized; + } + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + + void EntertoTab(Control ctl) + { + if (ctl.HasChildren) + { + foreach (var item in ctl.Controls) + { + if (item.GetType() == typeof(TextBox)) + { + var tb = item as TextBox; + tb.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Enter) SendKeys.Send("{TAB}"); + }; + } + } + } + } + + void Model_TableNewRow(object sender, DataTableNewRowEventArgs e) + { + + e.Row["Title"] = DateTime.Now.ToString("yyMMddHHmmss"); + e.Row["BCD_1D"] = true; + e.Row["BCD_QR"] = false; + e.Row["BCD_DM"] = true; + //e.Row["guid"] = Guid.NewGuid().ToString(); + //e.Row["MotionModel"] = "Default"; + // e.Row["RowCount"] = 5; + // e.Row["ColCount"] = 0; + // e.Row["Light"] = 50; + } + + + private void bs_CurrentChanged(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.MCModelRow; + } + + private void tmDisplay_Tick(object sender, EventArgs e) + { + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + btConvOk.BackColor = Color.Lime; + btConvOff.BackColor = Color.White; + } + else + { + btConvOk.BackColor = Color.White; + btConvOff.BackColor = Color.Lime; + } + + } + + + private void dv_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + + + Boolean hasChanged() + { + this.Validate(); + this.bs.EndEdit(); + var chg = this.ds1.OPModel.GetChanges(); + if (chg == null || chg.Rows.Count < 1) return false; + return true; + } + void selectModel() + { + //select + this.Invalidate(); + this.bs.EndEdit(); + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + if (dr.Title == "") return; + this.Value = dr.Title; + SETTING.User.useConv = VAR.BOOL[eVarBool.Use_Conveyor]; + SETTING.User.Save(); + DialogResult = System.Windows.Forms.DialogResult.OK; + } + + private void toolStripButton2_Click_1(object sender, EventArgs e) + { + //iocontrol + var f = new Dialog.Quick_Control(); + f.TopMost = true; + f.Opacity = 0.95; + f.Show(); + } + + + + void dv_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + if (this.dv.Columns[e.ColumnIndex].DataPropertyName.ToLower() == "spn") + { + + } + } + + private void tbClose_Click(object sender, EventArgs e) + { + this.Close(); + } + + + private void textBox1_TextChanged(object sender, EventArgs e) + { + var tb = sender as TextBox; + var str = tb.Text.Trim(); + if (str.isEmpty()) str = "0"; + var c = Color.FromArgb(int.Parse(str)); + if (str.Equals("0") == false) tb.BackColor = c; + else tb.BackColor = Color.Black; + } + + + + private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) + { + + } + + private void toolStripButton5_Click(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dlg = UTIL.MsgQ("Do you want to delete the currently selected data?"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + bs.RemoveCurrent(); + //this.ds1.Model.AcceptChanges(); + } + + private void toolStripButton8_Click(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + + //button - save + this.Validate(); + this.bs.EndEdit(); + + if (hasChanged() == true) + { + UTIL.MsgE("Need save"); + return; + } + + if (PUB.PasswordCheck() == false) + { + UTIL.MsgE("Password incorrect"); + return; + } + + var dr = drv.Row as DataSet1.OPModelRow; + var oldname = dr.Title; + var newname = UTIL.InputBox("input new name", dr.Title); + + if (newname.Item1 == false) return; + + if(dr.Title.Equals(newname.Item2)) + { + UTIL.MsgE("Same Data"); + return; + } + + + + + var dlg = UTIL.MsgQ(string.Format("Do you want to copy the following model information?\n\nNew Model Name : {0}", newname.Item2)); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + + var newdr = this.ds1.OPModel.NewOPModelRow(); + UTIL.CopyData(dr, newdr); + newdr.Title = newname.Item2; + newdr.idx = this.ds1.OPModel.OrderByDescending(t => t.idx).FirstOrDefault().idx + 1; + newdr.EndEdit(); + this.ds1.OPModel.AddOPModelRow(newdr); + if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1; + + PUB.mdm.dataSet.OPModel.Clear(); + PUB.mdm.dataSet.OPModel.Merge(this.ds1.OPModel); + PUB.mdm.dataSet.AcceptChanges(); + PUB.mdm.SaveModelV(); + + //copy regex + var cnt = DB.CopyRegEx(oldname,newname.Item2); + PUB.log.AddAT($"model copy(regex : {cnt})"); + } + + + private void toolStripButton4_Click(object sender, EventArgs e) + { + var f = new AR.Dialog.fTouchKeyFull("Please enter model name", DateTime.Now.ToString("yyyyMMddHHmmss")); + if (f.ShowDialog() == DialogResult.OK) + { + var newdr = this.ds1.OPModel.NewOPModelRow(); + newdr.Title = f.tbInput.Text.Trim(); + newdr.Motion = "Default"; + this.ds1.OPModel.AddOPModelRow(newdr); + if (this.bs.Count > 0) this.bs.Position = this.bs.Count - 1; + } + } + + private void bs_CurrentChanged_1(object sender, EventArgs e) + { + //값이바뀌면 허용 바코드 목록을 업데이트 해준다. + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + + if (dr.IsbOwnZPLNull()) + { + dr.bOwnZPL = false; + dr.EndEdit(); + } + + //this.tabControl1.Visible = !dr.Title.StartsWith("101"); + //this.panel6.Visible = !dr.Title.StartsWith("101"); + // this.panel7.Visible = !dr.Title.StartsWith("101"); + + //update checkbox + foreach (var c in tabPage1.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + var val = UTIL.GetBitState(dr.vOption, int.Parse(chk.Tag.ToString())); + if (chk.Checked != val) chk.Checked = val; + } + foreach (var c in grpApplyWMSinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + var val = UTIL.GetBitState(dr.vWMSInfo, int.Parse(chk.Tag.ToString())); + if (chk.Checked != val) chk.Checked = val; + } + foreach (var c in grpApplySidinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + var val = UTIL.GetBitState(dr.vSIDInfo, int.Parse(chk.Tag.ToString())); + if (chk.Checked != val) chk.Checked = val; + } + foreach (var c in grpapplyjob.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + var val = UTIL.GetBitState(dr.vJobInfo, int.Parse(chk.Tag.ToString())); + if (chk.Checked != val) chk.Checked = val; + } + foreach (var c in GrpSidConvData.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + var val = UTIL.GetBitState(dr.vSIDConv, int.Parse(chk.Tag.ToString())); + if (chk.Checked != val) chk.Checked = val; + } + + } + + + private void toolStripButton9_Click(object sender, EventArgs e) + { + //button - save + this.Validate(); + this.bs.EndEdit(); + + if (hasChanged() == false) + { + PUB.log.Add("Model save: No changes to save"); + return; + } + + if (PUB.PasswordCheck() == false) + { + UTIL.MsgE("Password incorrect"); + return; + } + + + //z position 영역을 문자로 변환한다. + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + dr.EndEdit(); + this.ds1.AcceptChanges(); + + + PUB.mdm.dataSet.OPModel.Clear(); + PUB.mdm.dataSet.OPModel.Merge(this.ds1.OPModel); + PUB.mdm.dataSet.AcceptChanges(); + PUB.mdm.SaveModelV(); + } + + private void toolStripButton10_Click(object sender, EventArgs e) + { + if (PUB.sm.Step == eSMStep.RUN || PUB.sm.Step == eSMStep.WAITSTART || PUB.sm.Step == eSMStep.PAUSE) + { + UTIL.MsgE("Cannot change model while system is currently running (waiting)"); + return; + } + + if (hasChanged()) + { + var dlg = UTIL.MsgQ("There are unsaved changes.\n" + + "If you proceed, the changed data will be lost\n" + + "Do you want to proceed?"); + if (dlg != DialogResult.Yes) return; + } + selectModel(); + } + + private void chkApplySidInfo_CheckStateChanged(object sender, EventArgs e) + { + var chk = sender as CheckBox; + chk.ForeColor = chk.Checked ? Color.Blue : Color.Gray; + + if (chk.Name.Equals(chkApplyJobInfo.Name)) + { + grpapplyjob.Enabled = chk.Checked; + } + if (chk.Name.Equals(chkApplyWMSInfo.Name)) + { + grpApplyWMSinfo.Enabled = chk.Checked; + } + if (chk.Name.Equals(chkApplySidInfo.Name)) + { + grpApplySidinfo.Enabled = chk.Checked; + } + if (chk.Name.Equals(chkApplySIDConvData.Name)) + { + GrpSidConvData.Enabled = chk.Checked; + } + + } + + private void btConvOk_Click(object sender, EventArgs e) + { + VAR.BOOL[eVarBool.Use_Conveyor] = true; + } + + private void btConvOff_Click(object sender, EventArgs e) + { + VAR.BOOL[eVarBool.Use_Conveyor] = false; + } + + private void tbBypassSID_TextChanged(object sender, EventArgs e) + { + var tb = sender as TextBox; + tb.BackColor = tb.TextLength > 0 ? Color.Gold : Color.WhiteSmoke; + } + + private void checkBox32_CheckedChanged(object sender, EventArgs e) + { + + } + + private void button1_Click(object sender, EventArgs e) + { + var drv = bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + + if (chkOwnZPL.Checked == false) + { + UTIL.MsgE("Individual print code is disabled, so it will not be applied"); + } + + var idx = dr.idx; + var fn = UTIL.MakePath("Model", idx.ToString(), "zpl.txt"); + var fnBase = UTIL.MakePath("Data","zpl.txt"); + if (System.IO.File.Exists(fnBase) && System.IO.File.Exists(fn) == false) + { + UTIL.MsgI("Dedicated output file (ZPL.TXT) does not exist, copying from default"); + var fi = new System.IO.FileInfo(fn); + if (fi.Directory.Exists == false) fi.Directory.Create(); + System.IO.File.Copy(fnBase, fn, true); + } + using (var f = new fZPLEditor(fn)) + { + f.ShowDialog(); + } + } + + private void btReName_Click(object sender, EventArgs e) + { + //button - save + this.Validate(); + this.bs.EndEdit(); + + if (hasChanged() == true) + { + UTIL.MsgE("Need save"); + return; + } + + if (PUB.PasswordCheck() == false) + { + UTIL.MsgE("Password incorrect"); + return; + } + + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.OPModelRow; + var beforename = dr.Title; + var dlg = UTIL.InputBox("Change Model ?Name", dr.Title); + if (dlg.Item1 == false) return; + if(beforename.Equals(dlg.Item2)) + { + UTIL.MsgE("Same data"); + return; + } + if (UTIL.MsgQ($"Change model name\nBefore:{beforename},After:{dlg.Item2}") != DialogResult.Yes) + return; + + dr.Title = dlg.Item2; + dr.EndEdit(); + + //update regexname + DB.ChangeRegExName(beforename, dlg.Item2); + + PUB.mdm.dataSet.OPModel.Clear(); + PUB.mdm.dataSet.OPModel.Merge(this.ds1.OPModel); + PUB.mdm.dataSet.AcceptChanges(); + PUB.mdm.SaveModelV(); + + } + } +} + diff --git a/Handler/Project/Dialog/Model_Operation.resx b/Handler/Project/Dialog/Model_Operation.resx new file mode 100644 index 0000000..842049b --- /dev/null +++ b/Handler/Project/Dialog/Model_Operation.resx @@ -0,0 +1,1972 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + 292, 17 + + + 17, 17 + + + 17, 17 + + + 88, 17 + + + 195, 17 + + + 356, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAwFJREFUWEft + ldtOE1EUhnkXfQyv9DVUhGJUiIlIENoarDUcDIkHqEZDh85AI+lwIyEQmWCiRfFAIARbUFIKRlCkHqAx + 0Qvpcv7pnrHAps6UmdaLLvIluzvsWV/W2oeKctgVnY0SmcF/XSJ3Z5CaCwRr/R0S3XCHr7LU5gLJE/E0 + l0nlowESLK9v0vtUuiCwFt8I+OUfliTNCqIKvMRWwDfi0ylrkk4I6m3dvQa/8V1LkqUQBKYlSyUITEmW + UhD8U7LUgiCv5P8gCGJTG9p9y7T+hhOC+5FPEBxI0K6LmpdHx7Lg1JPPhmBAGNUS6K2zCtYGHyjcPDqW + BYtNWfCglAUPiilB3gl0ktzcpgWLFWVBs/FmdZF6ojI1RNqpJuTVaJDbqe5eGymTs6UT/LSZIv9wgC5G + 2qg72kuDsSEaXVI0MO5S5y4MtNJluYteT68UJhhdLwx5Pkln+n0UeCaSsvyYlBU+Y8vj1D0h0tk+H/la + 7hangqhcbfgK9c0McqV49M3IVBP00vFg82Gmlg0nBNFWrXIckXyg5S7R84qpZcNuQRwI7Dm0jiexm+dr + L4wx1pwLt6Qrg5eOMT3792DrWEQ9EKEdEvsR/7JAGfVv4es7Y06tYkatYj/Ts7+CuErk+NAOkdwq6cx/ + fctWkDbW5+XYQ6qRPKtMz37B06KXRhKKkXBpM0mZTIZmN+aMOb1yiIUcOTC6NEZVvU2/mJ4zgkiiJ1z8 + ltDmITSXiuWVAyPq2lOC+yfTs38Pnh/o2NNiVBGhiyFy25qL1mLRwRYH1Seta2LvIdErieBVTufWU2Hb + 1esVmZ79grG1RaqPtHKvmcT35L6VA1hTG/alT/Q0H2V69gsirg3fKfCiFn67JM9LppYNJwTXt1JUF/Zp + zxdPhIek/m9VyL1Veb/xEFPLBgRzgaAd1N/sJpfg1Z6vfK/Ko+Q43Y4K29Uhz9ZJoekI0ypO4OHH24rn + CxI4obgjAcaYw55DW/dUrpiBt7Va9Ei4PnAJA3X8wRVyizsOhBEVFX8AAjiR3dGw+TcAAAAASUVORK5C + YII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD0SURBVFhH7dAxCsJAEAXQ3E4EbbXRCyieIa0Qe1s9gK1X + 0IBiEdIJlra2aXbNwNjIJpvkz1rE+fC7nZnHRr3NYH2yaEeb9MLr5EMHHi/TuTQ/jWMzTs4pr5SNBPCQ + F3ZSIodJeuW1cpEAHu8mHFIK2AhJj9Eud5kTUlWa+QC9SHqMhObn25td7XMnxtVvYC1SApg9CzsrkYuG + P+kCViIlgHS0DZJmfGWeHJDa9ierGgxIlUAGBVJRZHAgFUGKA311IepKM8zDgb4oEI0C0SgQjQLRKBCN + AtEoEI0C0SgQDe3vUub9BsinukWBfwEMXT7Vt0TRGzQpgoVWIrfBAAAAAElFTkSuQmCC + + + + 72 + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/Motion_MoveToGroup.Designer.cs b/Handler/Project/Dialog/Motion_MoveToGroup.Designer.cs new file mode 100644 index 0000000..39ce254 --- /dev/null +++ b/Handler/Project/Dialog/Motion_MoveToGroup.Designer.cs @@ -0,0 +1,1179 @@ +namespace Project.Dialog +{ + partial class Motion_MoveToGroup + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Motion_MoveToGroup)); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.btMove = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.lbMotPos = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.btSet = new System.Windows.Forms.ToolStripButton(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.button3 = new System.Windows.Forms.Button(); + this.button15 = new System.Windows.Forms.Button(); + this.button14 = new System.Windows.Forms.Button(); + this.button18 = new System.Windows.Forms.Button(); + this.button17 = new System.Windows.Forms.Button(); + this.button12 = new System.Windows.Forms.Button(); + this.button11 = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button13 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); + this.button16 = new System.Windows.Forms.Button(); + this.btAllZSafe = new System.Windows.Forms.Button(); + this.panel11 = new System.Windows.Forms.Panel(); + this.nudJogVel = new arFrame.Control.MotValueNumericUpDown(); + this.button25 = new System.Windows.Forms.Button(); + this.button24 = new System.Windows.Forms.Button(); + this.button23 = new System.Windows.Forms.Button(); + this.button22 = new System.Windows.Forms.Button(); + this.button21 = new System.Windows.Forms.Button(); + this.button20 = new System.Windows.Forms.Button(); + this.button19 = new System.Windows.Forms.Button(); + this.linkLabel8 = new arFrame.Control.MotLinkLabel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.lbX = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel5 = new System.Windows.Forms.ToolStripStatusLabel(); + this.lbY = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); + this.lbZ = new System.Windows.Forms.ToolStripStatusLabel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.button30 = new System.Windows.Forms.Button(); + this.btXNeg = new arFrame.Control.MotCommandButton(); + this.btJogStop = new arFrame.Control.MotCommandButton(); + this.btYPos = new arFrame.Control.MotCommandButton(); + this.btYNeg = new arFrame.Control.MotCommandButton(); + this.btXPos = new arFrame.Control.MotCommandButton(); + this.btZNeg = new arFrame.Control.MotCommandButton(); + this.motCommandButton1 = new arFrame.Control.MotCommandButton(); + this.btZPos = new arFrame.Control.MotCommandButton(); + this.button28 = new System.Windows.Forms.Button(); + this.button29 = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.button31 = new System.Windows.Forms.Button(); + this.tvFront = new System.Windows.Forms.TreeView(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.tvOther2 = new System.Windows.Forms.TreeView(); + this.tvOther = new System.Windows.Forms.TreeView(); + this.tvRear = new System.Windows.Forms.TreeView(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.toolStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.panel11.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudJogVel)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel3.SuspendLayout(); + this.tableLayoutPanel4.SuspendLayout(); + this.SuspendLayout(); + // + // toolStrip1 + // + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton1, + this.btMove, + this.toolStripSeparator1, + this.toolStripButton2, + this.toolStripButton3, + this.toolStripButton4, + this.toolStripSeparator2, + this.lbMotPos, + this.toolStripSeparator3, + this.btSet}); + this.toolStrip1.Location = new System.Drawing.Point(0, 922); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(1264, 39); + this.toolStrip1.TabIndex = 1; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripButton1 + // + this.toolStripButton1.Image = global::Project.Properties.Resources.icons8_repeat_40; + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(91, 36); + this.toolStripButton1.Text = "Refresh"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // btMove + // + this.btMove.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btMove.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btMove.Image = global::Project.Properties.Resources.icons8_move_right_40; + this.btMove.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btMove.Name = "btMove"; + this.btMove.Size = new System.Drawing.Size(231, 36); + this.btMove.Text = "Move motion to selected coordinate"; + this.btMove.Click += new System.EventHandler(this.toolStripButton2_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 39); + // + // toolStripButton2 + // + this.toolStripButton2.Image = global::Project.Properties.Resources.Motor; + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(95, 36); + this.toolStripButton2.Text = "Motion Control"; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click_1); + // + // toolStripButton3 + // + this.toolStripButton3.Image = global::Project.Properties.Resources.icons8_input_40; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(88, 36); + this.toolStripButton3.Text = "I/O Control"; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // + // toolStripButton4 + // + this.toolStripButton4.Image = global::Project.Properties.Resources.icons8_object_40; + this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton4.Name = "toolStripButton4"; + this.toolStripButton4.Size = new System.Drawing.Size(67, 36); + this.toolStripButton4.Text = "Function"; + this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 39); + // + // lbMotPos + // + this.lbMotPos.Name = "lbMotPos"; + this.lbMotPos.Size = new System.Drawing.Size(95, 36); + this.lbMotPos.Text = "{Motor Position}"; + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(6, 39); + // + // btSet + // + this.btSet.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btSet.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btSet.Image = global::Project.Properties.Resources.icons8_save_to_grid_40; + this.btSet.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btSet.Name = "btSet"; + this.btSet.Size = new System.Drawing.Size(171, 36); + this.btSet.Text = "Save as current command coordinate"; + this.btSet.Click += new System.EventHandler(this.btSet_Click); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.panel1.Controls.Add(this.tableLayoutPanel3); + this.panel1.Controls.Add(this.panel11); + this.panel1.Controls.Add(this.statusStrip1); + this.panel1.Controls.Add(this.tableLayoutPanel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.panel1.Location = new System.Drawing.Point(743, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(521, 922); + this.panel1.TabIndex = 1; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 6; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel3.Controls.Add(this.button3, 0, 2); + this.tableLayoutPanel3.Controls.Add(this.button15, 5, 0); + this.tableLayoutPanel3.Controls.Add(this.button14, 5, 1); + this.tableLayoutPanel3.Controls.Add(this.button18, 4, 0); + this.tableLayoutPanel3.Controls.Add(this.button17, 4, 1); + this.tableLayoutPanel3.Controls.Add(this.button12, 3, 0); + this.tableLayoutPanel3.Controls.Add(this.button11, 3, 1); + this.tableLayoutPanel3.Controls.Add(this.button9, 2, 0); + this.tableLayoutPanel3.Controls.Add(this.button8, 2, 1); + this.tableLayoutPanel3.Controls.Add(this.button6, 1, 0); + this.tableLayoutPanel3.Controls.Add(this.button5, 1, 1); + this.tableLayoutPanel3.Controls.Add(this.button1, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.button2, 0, 1); + this.tableLayoutPanel3.Controls.Add(this.button13, 5, 2); + this.tableLayoutPanel3.Controls.Add(this.button4, 1, 2); + this.tableLayoutPanel3.Controls.Add(this.button7, 2, 2); + this.tableLayoutPanel3.Controls.Add(this.button10, 3, 2); + this.tableLayoutPanel3.Controls.Add(this.button16, 4, 2); + this.tableLayoutPanel3.Controls.Add(this.btAllZSafe, 0, 3); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 435); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 4; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(521, 462); + this.tableLayoutPanel3.TabIndex = 83; + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Fill; + this.button3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button3.Location = new System.Drawing.Point(3, 233); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(80, 109); + this.button3.TabIndex = 67; + this.button3.Text = "Z-ZERO"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button1_Click); + // + // button15 + // + this.button15.Dock = System.Windows.Forms.DockStyle.Fill; + this.button15.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button15.ForeColor = System.Drawing.Color.Red; + this.button15.Location = new System.Drawing.Point(433, 3); + this.button15.Name = "button15"; + this.button15.Size = new System.Drawing.Size(85, 109); + this.button15.TabIndex = 80; + this.button15.Text = "X : +1mm"; + this.button15.UseVisualStyleBackColor = true; + this.button15.Click += new System.EventHandler(this.button13_Click); + // + // button14 + // + this.button14.Dock = System.Windows.Forms.DockStyle.Fill; + this.button14.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button14.ForeColor = System.Drawing.Color.Red; + this.button14.Location = new System.Drawing.Point(433, 118); + this.button14.Name = "button14"; + this.button14.Size = new System.Drawing.Size(85, 109); + this.button14.TabIndex = 81; + this.button14.Text = "Y : +1mm"; + this.button14.UseVisualStyleBackColor = true; + this.button14.Click += new System.EventHandler(this.button13_Click); + // + // button18 + // + this.button18.Dock = System.Windows.Forms.DockStyle.Fill; + this.button18.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button18.ForeColor = System.Drawing.Color.Red; + this.button18.Location = new System.Drawing.Point(347, 3); + this.button18.Name = "button18"; + this.button18.Size = new System.Drawing.Size(80, 109); + this.button18.TabIndex = 77; + this.button18.Text = "X : +0.1mm"; + this.button18.UseVisualStyleBackColor = true; + this.button18.Click += new System.EventHandler(this.button13_Click); + // + // button17 + // + this.button17.Dock = System.Windows.Forms.DockStyle.Fill; + this.button17.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button17.ForeColor = System.Drawing.Color.Red; + this.button17.Location = new System.Drawing.Point(347, 118); + this.button17.Name = "button17"; + this.button17.Size = new System.Drawing.Size(80, 109); + this.button17.TabIndex = 78; + this.button17.Text = "Y : +0.1mm"; + this.button17.UseVisualStyleBackColor = true; + this.button17.Click += new System.EventHandler(this.button13_Click); + // + // button12 + // + this.button12.Dock = System.Windows.Forms.DockStyle.Fill; + this.button12.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button12.ForeColor = System.Drawing.Color.Blue; + this.button12.Location = new System.Drawing.Point(261, 3); + this.button12.Name = "button12"; + this.button12.Size = new System.Drawing.Size(80, 109); + this.button12.TabIndex = 74; + this.button12.Text = "X : -0.1mm"; + this.button12.UseVisualStyleBackColor = true; + this.button12.Click += new System.EventHandler(this.button13_Click); + // + // button11 + // + this.button11.Dock = System.Windows.Forms.DockStyle.Fill; + this.button11.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button11.ForeColor = System.Drawing.Color.Blue; + this.button11.Location = new System.Drawing.Point(261, 118); + this.button11.Name = "button11"; + this.button11.Size = new System.Drawing.Size(80, 109); + this.button11.TabIndex = 75; + this.button11.Text = "Y : -0.1mm"; + this.button11.UseVisualStyleBackColor = true; + this.button11.Click += new System.EventHandler(this.button13_Click); + // + // button9 + // + this.button9.Dock = System.Windows.Forms.DockStyle.Fill; + this.button9.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button9.ForeColor = System.Drawing.Color.Blue; + this.button9.Location = new System.Drawing.Point(175, 3); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(80, 109); + this.button9.TabIndex = 71; + this.button9.Text = "X : -1mm"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button13_Click); + // + // button8 + // + this.button8.Dock = System.Windows.Forms.DockStyle.Fill; + this.button8.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button8.ForeColor = System.Drawing.Color.Blue; + this.button8.Location = new System.Drawing.Point(175, 118); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(80, 109); + this.button8.TabIndex = 72; + this.button8.Text = "Y : -1mm"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button13_Click); + // + // button6 + // + this.button6.Dock = System.Windows.Forms.DockStyle.Fill; + this.button6.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button6.Location = new System.Drawing.Point(89, 3); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(80, 109); + this.button6.TabIndex = 68; + this.button6.Text = "X-MOVE"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button1_Click); + // + // button5 + // + this.button5.Dock = System.Windows.Forms.DockStyle.Fill; + this.button5.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button5.Location = new System.Drawing.Point(89, 118); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(80, 109); + this.button5.TabIndex = 69; + this.button5.Text = "Y-MOVE"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button1_Click); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(3, 3); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(80, 109); + this.button1.TabIndex = 65; + this.button1.Text = "X-ZERO"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Fill; + this.button2.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button2.Location = new System.Drawing.Point(3, 118); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(80, 109); + this.button2.TabIndex = 66; + this.button2.Text = "Y-ZERO"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button1_Click); + // + // button13 + // + this.button13.Dock = System.Windows.Forms.DockStyle.Fill; + this.button13.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button13.ForeColor = System.Drawing.Color.Red; + this.button13.Location = new System.Drawing.Point(433, 233); + this.button13.Name = "button13"; + this.button13.Size = new System.Drawing.Size(85, 109); + this.button13.TabIndex = 82; + this.button13.Text = "Z : +1mm"; + this.button13.UseVisualStyleBackColor = true; + this.button13.Click += new System.EventHandler(this.button13_Click); + // + // button4 + // + this.button4.Dock = System.Windows.Forms.DockStyle.Fill; + this.button4.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button4.Location = new System.Drawing.Point(89, 233); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(80, 109); + this.button4.TabIndex = 70; + this.button4.Text = "Z-MOVE"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button1_Click); + // + // button7 + // + this.button7.Dock = System.Windows.Forms.DockStyle.Fill; + this.button7.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button7.ForeColor = System.Drawing.Color.Blue; + this.button7.Location = new System.Drawing.Point(175, 233); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(80, 109); + this.button7.TabIndex = 73; + this.button7.Text = "Z : -1mm"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button13_Click); + // + // button10 + // + this.button10.Dock = System.Windows.Forms.DockStyle.Fill; + this.button10.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button10.ForeColor = System.Drawing.Color.Blue; + this.button10.Location = new System.Drawing.Point(261, 233); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(80, 109); + this.button10.TabIndex = 76; + this.button10.Text = "Z : -0.1mm"; + this.button10.UseVisualStyleBackColor = true; + this.button10.Click += new System.EventHandler(this.button13_Click); + // + // button16 + // + this.button16.Dock = System.Windows.Forms.DockStyle.Fill; + this.button16.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button16.ForeColor = System.Drawing.Color.Red; + this.button16.Location = new System.Drawing.Point(347, 233); + this.button16.Name = "button16"; + this.button16.Size = new System.Drawing.Size(80, 109); + this.button16.TabIndex = 79; + this.button16.Text = "Z : +0.1mm"; + this.button16.UseVisualStyleBackColor = true; + this.button16.Click += new System.EventHandler(this.button13_Click); + // + // btAllZSafe + // + this.btAllZSafe.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.tableLayoutPanel3.SetColumnSpan(this.btAllZSafe, 3); + this.btAllZSafe.Dock = System.Windows.Forms.DockStyle.Fill; + this.btAllZSafe.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold); + this.btAllZSafe.ForeColor = System.Drawing.Color.White; + this.btAllZSafe.Location = new System.Drawing.Point(3, 348); + this.btAllZSafe.Name = "btAllZSafe"; + this.btAllZSafe.Size = new System.Drawing.Size(252, 111); + this.btAllZSafe.TabIndex = 83; + this.btAllZSafe.Text = "All Z Axis to Safe Position"; + this.btAllZSafe.UseVisualStyleBackColor = false; + this.btAllZSafe.Click += new System.EventHandler(this.btAllZSafe_Click); + // + // panel11 + // + this.panel11.Controls.Add(this.nudJogVel); + this.panel11.Controls.Add(this.button25); + this.panel11.Controls.Add(this.button24); + this.panel11.Controls.Add(this.button23); + this.panel11.Controls.Add(this.button22); + this.panel11.Controls.Add(this.button21); + this.panel11.Controls.Add(this.button20); + this.panel11.Controls.Add(this.button19); + this.panel11.Controls.Add(this.linkLabel8); + this.panel11.Dock = System.Windows.Forms.DockStyle.Top; + this.panel11.Font = new System.Drawing.Font("굴림", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.panel11.Location = new System.Drawing.Point(0, 396); + this.panel11.Name = "panel11"; + this.panel11.Padding = new System.Windows.Forms.Padding(2); + this.panel11.Size = new System.Drawing.Size(521, 39); + this.panel11.TabIndex = 64; + // + // nudJogVel + // + this.nudJogVel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.nudJogVel.DecimalPlaces = 2; + this.nudJogVel.Dock = System.Windows.Forms.DockStyle.Fill; + this.nudJogVel.Font = new System.Drawing.Font("굴림", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.nudJogVel.Location = new System.Drawing.Point(63, 2); + this.nudJogVel.Maximum = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this.nudJogVel.MotionIndex = -1; + this.nudJogVel.Name = "nudJogVel"; + this.nudJogVel.Size = new System.Drawing.Size(106, 34); + this.nudJogVel.TabIndex = 0; + this.nudJogVel.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudJogVel.Value = new decimal(new int[] { + 20, + 0, + 0, + 0}); + // + // button25 + // + this.button25.Dock = System.Windows.Forms.DockStyle.Right; + this.button25.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button25.Location = new System.Drawing.Point(169, 2); + this.button25.Name = "button25"; + this.button25.Size = new System.Drawing.Size(50, 35); + this.button25.TabIndex = 48; + this.button25.Text = "2"; + this.button25.UseVisualStyleBackColor = true; + this.button25.Click += new System.EventHandler(this.button25_Click); + // + // button24 + // + this.button24.Dock = System.Windows.Forms.DockStyle.Right; + this.button24.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button24.Location = new System.Drawing.Point(219, 2); + this.button24.Name = "button24"; + this.button24.Size = new System.Drawing.Size(50, 35); + this.button24.TabIndex = 47; + this.button24.Text = "5"; + this.button24.UseVisualStyleBackColor = true; + this.button24.Click += new System.EventHandler(this.button25_Click); + // + // button23 + // + this.button23.Dock = System.Windows.Forms.DockStyle.Right; + this.button23.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button23.Location = new System.Drawing.Point(269, 2); + this.button23.Name = "button23"; + this.button23.Size = new System.Drawing.Size(50, 35); + this.button23.TabIndex = 46; + this.button23.Text = "10"; + this.button23.UseVisualStyleBackColor = true; + this.button23.Click += new System.EventHandler(this.button25_Click); + // + // button22 + // + this.button22.Dock = System.Windows.Forms.DockStyle.Right; + this.button22.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button22.Location = new System.Drawing.Point(319, 2); + this.button22.Name = "button22"; + this.button22.Size = new System.Drawing.Size(50, 35); + this.button22.TabIndex = 45; + this.button22.Text = "20"; + this.button22.UseVisualStyleBackColor = true; + this.button22.Click += new System.EventHandler(this.button25_Click); + // + // button21 + // + this.button21.Dock = System.Windows.Forms.DockStyle.Right; + this.button21.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button21.Location = new System.Drawing.Point(369, 2); + this.button21.Name = "button21"; + this.button21.Size = new System.Drawing.Size(50, 35); + this.button21.TabIndex = 44; + this.button21.Text = "50"; + this.button21.UseVisualStyleBackColor = true; + this.button21.Click += new System.EventHandler(this.button25_Click); + // + // button20 + // + this.button20.Dock = System.Windows.Forms.DockStyle.Right; + this.button20.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button20.Location = new System.Drawing.Point(419, 2); + this.button20.Name = "button20"; + this.button20.Size = new System.Drawing.Size(50, 35); + this.button20.TabIndex = 43; + this.button20.Text = "100"; + this.button20.UseVisualStyleBackColor = true; + this.button20.Click += new System.EventHandler(this.button25_Click); + // + // button19 + // + this.button19.Dock = System.Windows.Forms.DockStyle.Right; + this.button19.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button19.Location = new System.Drawing.Point(469, 2); + this.button19.Name = "button19"; + this.button19.Size = new System.Drawing.Size(50, 35); + this.button19.TabIndex = 42; + this.button19.Text = "150"; + this.button19.UseVisualStyleBackColor = true; + this.button19.Click += new System.EventHandler(this.button25_Click); + // + // linkLabel8 + // + this.linkLabel8.Dock = System.Windows.Forms.DockStyle.Left; + this.linkLabel8.Font = new System.Drawing.Font("맑은 고딕", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel8.LinkColor = System.Drawing.Color.Blue; + this.linkLabel8.Location = new System.Drawing.Point(2, 2); + this.linkLabel8.motValueControl = this.nudJogVel; + this.linkLabel8.Name = "linkLabel8"; + this.linkLabel8.Size = new System.Drawing.Size(61, 35); + this.linkLabel8.TabIndex = 41; + this.linkLabel8.TabStop = true; + this.linkLabel8.Text = "Speed"; + this.linkLabel8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1, + this.lbX, + this.toolStripStatusLabel5, + this.lbY, + this.toolStripStatusLabel3, + this.lbZ}); + this.statusStrip1.Location = new System.Drawing.Point(0, 897); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(521, 25); + this.statusStrip1.TabIndex = 4; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(19, 20); + this.toolStripStatusLabel1.Text = "X"; + // + // lbX + // + this.lbX.Name = "lbX"; + this.lbX.Size = new System.Drawing.Size(17, 20); + this.lbX.Text = "--"; + // + // toolStripStatusLabel5 + // + this.toolStripStatusLabel5.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.toolStripStatusLabel5.Name = "toolStripStatusLabel5"; + this.toolStripStatusLabel5.Size = new System.Drawing.Size(18, 20); + this.toolStripStatusLabel5.Text = "Y"; + // + // lbY + // + this.lbY.Name = "lbY"; + this.lbY.Size = new System.Drawing.Size(17, 20); + this.lbY.Text = "--"; + // + // toolStripStatusLabel3 + // + this.toolStripStatusLabel3.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.toolStripStatusLabel3.Name = "toolStripStatusLabel3"; + this.toolStripStatusLabel3.Size = new System.Drawing.Size(18, 20); + this.toolStripStatusLabel3.Text = "Z"; + // + // lbZ + // + this.lbZ.Name = "lbZ"; + this.lbZ.Size = new System.Drawing.Size(17, 20); + this.lbZ.Text = "--"; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel2.ColumnCount = 4; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.00015F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.00015F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.00015F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 24.99953F)); + this.tableLayoutPanel2.Controls.Add(this.panel2, 2, 0); + this.tableLayoutPanel2.Controls.Add(this.btXNeg, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.btJogStop, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.btYPos, 1, 2); + this.tableLayoutPanel2.Controls.Add(this.btYNeg, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.btXPos, 2, 1); + this.tableLayoutPanel2.Controls.Add(this.btZNeg, 3, 0); + this.tableLayoutPanel2.Controls.Add(this.motCommandButton1, 3, 1); + this.tableLayoutPanel2.Controls.Add(this.btZPos, 3, 2); + this.tableLayoutPanel2.Controls.Add(this.button28, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.button29, 2, 2); + this.tableLayoutPanel2.Controls.Add(this.panel3, 0, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 3; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(521, 396); + this.tableLayoutPanel2.TabIndex = 3; + // + // panel2 + // + this.panel2.Controls.Add(this.button30); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(264, 4); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(123, 124); + this.panel2.TabIndex = 3; + // + // button30 + // + this.button30.Dock = System.Windows.Forms.DockStyle.Fill; + this.button30.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold); + this.button30.Image = ((System.Drawing.Image)(resources.GetObject("button30.Image"))); + this.button30.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.button30.Location = new System.Drawing.Point(0, 0); + this.button30.Name = "button30"; + this.button30.Padding = new System.Windows.Forms.Padding(0, 20, 0, 15); + this.button30.Size = new System.Drawing.Size(123, 124); + this.button30.TabIndex = 6; + this.button30.Text = "AIR"; + this.button30.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.button30.UseVisualStyleBackColor = true; + this.button30.Click += new System.EventHandler(this.button30_Click); + // + // btXNeg + // + this.btXNeg.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.btXNeg.Dock = System.Windows.Forms.DockStyle.Fill; + this.btXNeg.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btXNeg.ForeColor = System.Drawing.Color.Red; + this.btXNeg.Location = new System.Drawing.Point(1, 132); + this.btXNeg.Margin = new System.Windows.Forms.Padding(0); + this.btXNeg.motAccControl = null; + this.btXNeg.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btXNeg.motSpdControl = null; + this.btXNeg.motValueControl = null; + this.btXNeg.Name = "btXNeg"; + this.btXNeg.Size = new System.Drawing.Size(129, 130); + this.btXNeg.TabIndex = 0; + this.btXNeg.Tag = "X-"; + this.btXNeg.Text = "X\r\nNEG(-)"; + this.btXNeg.UseVisualStyleBackColor = false; + this.btXNeg.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogUp_MouseDown); + this.btXNeg.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btAClear_MouseUp); + // + // btJogStop + // + this.btJogStop.Dock = System.Windows.Forms.DockStyle.Fill; + this.btJogStop.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold); + this.btJogStop.ForeColor = System.Drawing.Color.Black; + this.btJogStop.Location = new System.Drawing.Point(131, 132); + this.btJogStop.Margin = new System.Windows.Forms.Padding(0); + this.btJogStop.motAccControl = null; + this.btJogStop.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btJogStop.motSpdControl = null; + this.btJogStop.motValueControl = null; + this.btJogStop.Name = "btJogStop"; + this.btJogStop.Size = new System.Drawing.Size(129, 130); + this.btJogStop.TabIndex = 0; + this.btJogStop.Tag = "STOP"; + this.btJogStop.Text = "■"; + this.btJogStop.UseVisualStyleBackColor = true; + this.btJogStop.Click += new System.EventHandler(this.btJogStop_Click); + // + // btYPos + // + this.btYPos.BackColor = System.Drawing.Color.Turquoise; + this.btYPos.Dock = System.Windows.Forms.DockStyle.Fill; + this.btYPos.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btYPos.ForeColor = System.Drawing.Color.Blue; + this.btYPos.Location = new System.Drawing.Point(131, 263); + this.btYPos.Margin = new System.Windows.Forms.Padding(0); + this.btYPos.motAccControl = null; + this.btYPos.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btYPos.motSpdControl = null; + this.btYPos.motValueControl = null; + this.btYPos.Name = "btYPos"; + this.btYPos.Size = new System.Drawing.Size(129, 132); + this.btYPos.TabIndex = 0; + this.btYPos.Tag = "Y+"; + this.btYPos.Text = "Y\r\nPOS(+)"; + this.btYPos.UseVisualStyleBackColor = false; + this.btYPos.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogUp_MouseDown); + this.btYPos.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btAClear_MouseUp); + // + // btYNeg + // + this.btYNeg.BackColor = System.Drawing.Color.Turquoise; + this.btYNeg.Dock = System.Windows.Forms.DockStyle.Fill; + this.btYNeg.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btYNeg.ForeColor = System.Drawing.Color.Red; + this.btYNeg.Location = new System.Drawing.Point(131, 1); + this.btYNeg.Margin = new System.Windows.Forms.Padding(0); + this.btYNeg.motAccControl = null; + this.btYNeg.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btYNeg.motSpdControl = null; + this.btYNeg.motValueControl = null; + this.btYNeg.Name = "btYNeg"; + this.btYNeg.Size = new System.Drawing.Size(129, 130); + this.btYNeg.TabIndex = 0; + this.btYNeg.Tag = "Y-"; + this.btYNeg.Text = "Y\r\nNEG(-)"; + this.btYNeg.UseVisualStyleBackColor = false; + this.btYNeg.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogUp_MouseDown); + this.btYNeg.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btAClear_MouseUp); + // + // btXPos + // + this.btXPos.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.btXPos.Dock = System.Windows.Forms.DockStyle.Fill; + this.btXPos.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btXPos.ForeColor = System.Drawing.Color.Blue; + this.btXPos.Location = new System.Drawing.Point(261, 132); + this.btXPos.Margin = new System.Windows.Forms.Padding(0); + this.btXPos.motAccControl = null; + this.btXPos.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btXPos.motSpdControl = null; + this.btXPos.motValueControl = null; + this.btXPos.Name = "btXPos"; + this.btXPos.Size = new System.Drawing.Size(129, 130); + this.btXPos.TabIndex = 0; + this.btXPos.Tag = "X+"; + this.btXPos.Text = "X\r\nPOS(+)"; + this.btXPos.UseVisualStyleBackColor = false; + this.btXPos.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogUp_MouseDown); + this.btXPos.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btAClear_MouseUp); + // + // btZNeg + // + this.btZNeg.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.btZNeg.Dock = System.Windows.Forms.DockStyle.Fill; + this.btZNeg.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btZNeg.ForeColor = System.Drawing.Color.Black; + this.btZNeg.Location = new System.Drawing.Point(391, 1); + this.btZNeg.Margin = new System.Windows.Forms.Padding(0); + this.btZNeg.motAccControl = null; + this.btZNeg.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btZNeg.motSpdControl = null; + this.btZNeg.motValueControl = null; + this.btZNeg.Name = "btZNeg"; + this.btZNeg.Size = new System.Drawing.Size(129, 130); + this.btZNeg.TabIndex = 4; + this.btZNeg.Tag = "Z-"; + this.btZNeg.Text = "Z\r\nNEG(-)"; + this.btZNeg.UseVisualStyleBackColor = false; + this.btZNeg.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogUp_MouseDown); + this.btZNeg.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btAClear_MouseUp); + // + // motCommandButton1 + // + this.motCommandButton1.Dock = System.Windows.Forms.DockStyle.Fill; + this.motCommandButton1.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold); + this.motCommandButton1.ForeColor = System.Drawing.Color.Black; + this.motCommandButton1.Location = new System.Drawing.Point(391, 132); + this.motCommandButton1.Margin = new System.Windows.Forms.Padding(0); + this.motCommandButton1.motAccControl = null; + this.motCommandButton1.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.motCommandButton1.motSpdControl = null; + this.motCommandButton1.motValueControl = null; + this.motCommandButton1.Name = "motCommandButton1"; + this.motCommandButton1.Size = new System.Drawing.Size(129, 130); + this.motCommandButton1.TabIndex = 4; + this.motCommandButton1.Text = "■"; + this.motCommandButton1.UseVisualStyleBackColor = true; + this.motCommandButton1.Click += new System.EventHandler(this.motCommandButton1_Click); + // + // btZPos + // + this.btZPos.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.btZPos.Dock = System.Windows.Forms.DockStyle.Fill; + this.btZPos.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btZPos.ForeColor = System.Drawing.Color.Black; + this.btZPos.Location = new System.Drawing.Point(391, 263); + this.btZPos.Margin = new System.Windows.Forms.Padding(0); + this.btZPos.motAccControl = null; + this.btZPos.motCommand = arFrame.Control.MotCommandButton.eCommand.AbsoluteMove; + this.btZPos.motSpdControl = null; + this.btZPos.motValueControl = null; + this.btZPos.Name = "btZPos"; + this.btZPos.Size = new System.Drawing.Size(129, 132); + this.btZPos.TabIndex = 4; + this.btZPos.Tag = "Z+"; + this.btZPos.Text = "Z\r\nPOS(+)"; + this.btZPos.UseVisualStyleBackColor = false; + this.btZPos.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btJogUp_MouseDown); + this.btZPos.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btAClear_MouseUp); + // + // button28 + // + this.button28.Dock = System.Windows.Forms.DockStyle.Fill; + this.button28.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold); + this.button28.Image = ((System.Drawing.Image)(resources.GetObject("button28.Image"))); + this.button28.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.button28.Location = new System.Drawing.Point(4, 266); + this.button28.Name = "button28"; + this.button28.Padding = new System.Windows.Forms.Padding(0, 20, 0, 15); + this.button28.Size = new System.Drawing.Size(123, 126); + this.button28.TabIndex = 5; + this.button28.Text = "PRINT"; + this.button28.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.button28.UseVisualStyleBackColor = true; + this.button28.Click += new System.EventHandler(this.button28_Click); + // + // button29 + // + this.button29.Dock = System.Windows.Forms.DockStyle.Fill; + this.button29.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold); + this.button29.Image = ((System.Drawing.Image)(resources.GetObject("button29.Image"))); + this.button29.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.button29.Location = new System.Drawing.Point(264, 266); + this.button29.Name = "button29"; + this.button29.Padding = new System.Windows.Forms.Padding(0, 20, 0, 15); + this.button29.Size = new System.Drawing.Size(123, 126); + this.button29.TabIndex = 5; + this.button29.Text = "PRINT"; + this.button29.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.button29.UseVisualStyleBackColor = true; + this.button29.Click += new System.EventHandler(this.button29_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.button31); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(4, 4); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(123, 124); + this.panel3.TabIndex = 6; + // + // button31 + // + this.button31.Dock = System.Windows.Forms.DockStyle.Fill; + this.button31.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold); + this.button31.Image = ((System.Drawing.Image)(resources.GetObject("button31.Image"))); + this.button31.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.button31.Location = new System.Drawing.Point(0, 0); + this.button31.Name = "button31"; + this.button31.Padding = new System.Windows.Forms.Padding(0, 20, 0, 15); + this.button31.Size = new System.Drawing.Size(123, 124); + this.button31.TabIndex = 6; + this.button31.Text = "AIR"; + this.button31.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.button31.UseVisualStyleBackColor = true; + this.button31.Click += new System.EventHandler(this.button31_Click); + // + // tvFront + // + this.tvFront.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvFront.FullRowSelect = true; + this.tvFront.HideSelection = false; + this.tvFront.Location = new System.Drawing.Point(3, 28); + this.tvFront.Name = "tvFront"; + this.tvFront.Size = new System.Drawing.Size(365, 621); + this.tvFront.TabIndex = 1; + this.tvFront.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); + // + // tmDisplay + // + this.tmDisplay.Interval = 500; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.ColumnCount = 2; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.Controls.Add(this.tvOther2, 1, 2); + this.tableLayoutPanel4.Controls.Add(this.tvOther, 0, 2); + this.tableLayoutPanel4.Controls.Add(this.tvRear, 1, 1); + this.tableLayoutPanel4.Controls.Add(this.tvFront, 0, 1); + this.tableLayoutPanel4.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.label2, 1, 0); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 3; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 70F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 30F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(743, 922); + this.tableLayoutPanel4.TabIndex = 2; + // + // tvOther2 + // + this.tvOther2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvOther2.FullRowSelect = true; + this.tvOther2.HideSelection = false; + this.tvOther2.Location = new System.Drawing.Point(374, 655); + this.tvOther2.Name = "tvOther2"; + this.tvOther2.Size = new System.Drawing.Size(366, 264); + this.tvOther2.TabIndex = 5; + this.tvOther2.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); + // + // tvOther + // + this.tvOther.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvOther.FullRowSelect = true; + this.tvOther.HideSelection = false; + this.tvOther.Location = new System.Drawing.Point(3, 655); + this.tvOther.Name = "tvOther"; + this.tvOther.Size = new System.Drawing.Size(365, 264); + this.tvOther.TabIndex = 4; + this.tvOther.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); + // + // tvRear + // + this.tvRear.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvRear.FullRowSelect = true; + this.tvRear.HideSelection = false; + this.tvRear.Location = new System.Drawing.Point(374, 28); + this.tvRear.Name = "tvRear"; + this.tvRear.Size = new System.Drawing.Size(366, 621); + this.tvRear.TabIndex = 3; + this.tvRear.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(3, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(365, 25); + this.label1.TabIndex = 6; + this.label1.Text = "FRONT"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(374, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(366, 25); + this.label2.TabIndex = 6; + this.label2.Text = "REAR"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // Motion_MoveToGroup + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1264, 961); + this.Controls.Add(this.tableLayoutPanel4); + this.Controls.Add(this.panel1); + this.Controls.Add(this.toolStrip1); + this.Name = "Motion_MoveToGroup"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Motion_MoveToGroup"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Motion_MoveToGroup_FormClosed); + this.Load += new System.EventHandler(this.Motion_MoveToGroup_Load); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.tableLayoutPanel3.ResumeLayout(false); + this.panel11.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudJogVel)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.tableLayoutPanel2.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.tableLayoutPanel4.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripButton btMove; + private System.Windows.Forms.ToolStripButton btSet; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private arFrame.Control.MotCommandButton btXNeg; + private arFrame.Control.MotCommandButton btJogStop; + private arFrame.Control.MotCommandButton btYPos; + private arFrame.Control.MotCommandButton btYNeg; + private arFrame.Control.MotCommandButton btXPos; + private arFrame.Control.MotCommandButton btZNeg; + private arFrame.Control.MotCommandButton motCommandButton1; + private arFrame.Control.MotCommandButton btZPos; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.ToolStripStatusLabel lbX; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel5; + private System.Windows.Forms.ToolStripStatusLabel lbY; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; + private System.Windows.Forms.ToolStripStatusLabel lbZ; + private System.Windows.Forms.Panel panel11; + private arFrame.Control.MotValueNumericUpDown nudJogVel; + private arFrame.Control.MotLinkLabel linkLabel8; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripLabel lbMotPos; + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.TreeView tvFront; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button button11; + private System.Windows.Forms.Button button12; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button13; + private System.Windows.Forms.Button button14; + private System.Windows.Forms.Button button15; + private System.Windows.Forms.Button button16; + private System.Windows.Forms.Button button17; + private System.Windows.Forms.Button button18; + private System.Windows.Forms.Button button25; + private System.Windows.Forms.Button button24; + private System.Windows.Forms.Button button23; + private System.Windows.Forms.Button button22; + private System.Windows.Forms.Button button21; + private System.Windows.Forms.Button button20; + private System.Windows.Forms.Button button19; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.Button button28; + private System.Windows.Forms.Button button29; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripButton toolStripButton4; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.TreeView tvRear; + private System.Windows.Forms.TreeView tvOther; + private System.Windows.Forms.TreeView tvOther2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button button30; + private System.Windows.Forms.Button btAllZSafe; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Button button31; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/Motion_MoveToGroup.cs b/Handler/Project/Dialog/Motion_MoveToGroup.cs new file mode 100644 index 0000000..b3f719c --- /dev/null +++ b/Handler/Project/Dialog/Motion_MoveToGroup.cs @@ -0,0 +1,919 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class Motion_MoveToGroup : Form + { + int axisX, axisY, axisZ; + + DataSet1 ds; + int pidx = -1;/// = string.Empty; + public Motion_MoveToGroup(DataSet1 dt_, int targetidx) + { + InitializeComponent(); + // this.Size = new Size(800, 500); + this.WindowState = FormWindowState.Maximized; + btXNeg.Tag = "X-"; + btXPos.Tag = "X+"; + btYNeg.Tag = "Y-"; + btYPos.Tag = "Y+"; + this.ds = dt_; + pidx = targetidx; + //this.lvF.FullRowSelect = true; + //this.lvF.GridLines = true; + //arDatagridView1.DataSource = dt_.MCModel; + + var dr = dt_.MCModel.Where(t => t.idx == targetidx).FirstOrDefault(); + if (dr == null) this.Text = "Position-Based Movement"; + else this.Text = $"Position-Based Movement (Model: {dr.Title})"; + + } + + private void Motion_MoveToGroup_Load(object sender, EventArgs e) + { + refreshData(); + tmDisplay.Start(); + } + void refreshData() + { + //목록을 추출한다 + //this.lvF.Items.Clear(); + //this.listView1.Columns[0].Width = 120; + //this.listView1.Columns[1].Width = 300; + //this.lvF.Font = new Font("맑은 고딕", 15); + + var ctgrp = this.ds.MCModel.Where(t => t.pidx == this.pidx && string.IsNullOrEmpty(t.Category) == false).GroupBy(t => t.Category); + var rawGrplist = ctgrp.Select(t => t.Key).ToList(); + Dictionary> grpList = new Dictionary>(); + + + foreach (var dr in ctgrp.OrderBy(t => t.Key)) + { + var rawgrplist = dr.Key.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var grpname in rawgrplist) + { + var keybuf = grpname.Split('|'); //그룹과 위치명은 | 로구분되어있다 + if (keybuf.Length == 1) + { + Array.Resize(ref keybuf, 2); + keybuf[1] = keybuf[0]; + keybuf[0] = "Normal"; + } + + var newgrpname = string.Join("|", keybuf); + var motlist = dr.GroupBy(t => t.idx).Select(t => t.Key).ToList(); + + if (grpList.ContainsKey(newgrpname) == false) + { + grpList.Add(newgrpname, motlist); + } + else + { + //동일그룹이 등록되어있다 + var oldlist = grpList[newgrpname]; + foreach (var drindex in motlist) + if (oldlist.Contains(drindex) == false) oldlist.Add(drindex); + grpList[newgrpname] = oldlist; + } + } + } + + tvFront.Nodes.Clear(); + tvFront.Font = new Font("맑은 고딕", 10, FontStyle.Bold); + + tvRear.Nodes.Clear(); + tvRear.Font = new Font("맑은 고딕", 10, FontStyle.Bold); + + tvOther.Nodes.Clear(); + tvOther.Font = new Font("맑은 고딕", 10, FontStyle.Bold); + + tvOther2.Nodes.Clear(); + tvOther2.Font = new Font("맑은 고딕", 10, FontStyle.Bold); + + //목록을 취합햇으니 표시한다 + foreach (var item in grpList) + { + var motlist = new List(); + foreach (var drindex in item.Value) + { + var dr = this.ds.MCModel.Where(t => t.idx == drindex).First(); + motlist.Add(dr.MotIndex); + } + + if (motlist.Count < 1) continue; + + var buf = item.Key.Split('|'); + + var cate = buf[0]; + var itemname = buf[1]; + + if (cate.Contains("_MANAGE")) + { + if (tvOther2.Nodes.ContainsKey(cate) == false) + { + var nd = tvOther2.Nodes.Add(cate, cate); + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + else + { + var nd = tvOther2.Nodes[cate]; + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + } + + else if (itemname.StartsWith("R") || (itemname.StartsWith("F") == false && itemname.ToUpper().Contains("REAR"))) + { + itemname = itemname.Replace("RSHUTTLE", "R"); + if (tvRear.Nodes.ContainsKey(cate) == false) + { + var nd = tvRear.Nodes.Add(cate, cate); + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + else + { + var nd = tvRear.Nodes[cate]; + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + + } + } + else if (itemname.StartsWith("F") || (itemname.StartsWith("R") == false && itemname.ToUpper().Contains("FRONT"))) + + { + itemname = itemname.Replace("FSHUTTLE", "F"); + if (tvFront.Nodes.ContainsKey(cate) == false) + { + var nd = tvFront.Nodes.Add(cate, cate); + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + else + { + var nd = tvFront.Nodes[cate]; + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + } + + else + { + if (tvOther.Nodes.ContainsKey(cate) == false) + { + var nd = tvOther.Nodes.Add(cate, cate); + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + else + { + var nd = tvOther.Nodes[cate]; + var snd = nd.Nodes.Add(itemname, itemname + " ▶ (" + string.Join(",", motlist.OrderBy(t => t).Select(t => (eAxis)t)) + ")"); + snd.Tag = item.Value; + + if (itemname.Contains("PICKOFF")) snd.ForeColor = Color.Blue; + else if (itemname.Contains("PICKON")) snd.ForeColor = Color.DarkGreen; + else if (itemname.StartsWith("T")) snd.ForeColor = Color.Magenta; + else snd.ForeColor = Color.Black; + } + } + + + + //var lv = this.lvF.Items.Add(buf[0]); + //lv.SubItems.Add(buf[1]); + //lv.SubItems.Add(string.Join(",", motlist.OrderBy(t => t))); + + //if (buf[1].StartsWith("R")) + // lv.ForeColor = Color.Blue; + //else if (buf[1].StartsWith("T")) + // lv.ForeColor = Color.Magenta; + + //lv.Tag = item.Value; //datarowindex 를 가진다 + + } + + tvFront.ExpandAll(); + tvRear.ExpandAll(); + tvOther.ExpandAll(); + tvOther2.ExpandAll(); + } + + private void toolStripButton1_Click(object sender, EventArgs e) + { + refreshData(); + } + + Task MoveMotion = null; + + + List GetCurrentList() + { + if (seltv == null) + { + UTIL.MsgE("Please select a position to move to first"); + return null; + } + var tn = seltv.SelectedNode; + if (tn == null) return null; + if (tn.Level < 1) return null; + return (List)tn.Tag; + } + + private void toolStripButton2_Click(object sender, EventArgs e) + { + //지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다. + List idxlist = GetCurrentList(); + if (idxlist == null) return; + + List zlist = new List(); + List nlist = new List(); + + List zplist = new List(); + List nplist = new List(); + + System.Text.StringBuilder sb = new StringBuilder(); + foreach (var dridx in idxlist) + { + var dr = this.ds.MCModel.Where(t => t.idx == dridx).First(); + var ax = (eAxis)dr.MotIndex; + var cate = ax.CategoryAttr(); + if (cate.StartsWith("Z")) + { + zlist.Add(ax); + zplist.Add(dr); + } + else + { + //나머지축에 인터락이 있으면 처리하지 않는다. + if (PUB.iLock[dr.MotIndex].IsEmpty() == false) + { + if (sb.Length < 1) sb.AppendLine("Motion interlock is set\n"); + var locklist = MOT.GetActiveLockList(ax, PUB.iLock[dr.MotIndex]); + sb.AppendLine($"Axis : {ax}({dr.MotIndex}) Target:{string.Join(",", locklist)}"); + + } + nlist.Add(ax); + nplist.Add(dr); + } + } + + if (sb.Length > 0) + { + UTIL.MsgE(sb.ToString(), true); + return; + } + + Queue> poslist = new Queue>(); + sb.AppendLine("Do you want to start axis movement?\nZ-axis will move to 0 first for safety before movement"); + + int idx = 0; + for (int i = 0; i < zlist.Count; i++) + { + var ax = zlist[i]; + var dr = zplist[i]; + sb.AppendLine($"[{++idx:000}] Move to origin (0) : " + ax.ToString()); + var p = new Tuple(ax, new sPositionData + { + Axis = (short)ax, + Position = 0, + Speed = Math.Max(100, dr.Speed), + Acc = dr.SpeedAcc, + Dcc = dr.SpeedDcc, + }, true); + poslist.Enqueue(p); + } + + for (int i = 0; i < nlist.Count; i++) + { + var ax = nlist[i]; + var dr = nplist[i]; + sb.AppendLine($"[{++idx:000}] {ax} Position move : {dr.Position}mm({dr.Speed}ms)"); + var p = new Tuple(ax, new sPositionData + { + Axis = (short)ax, + Position = dr.Position, + Speed = Math.Max(100, dr.Speed), + Acc = dr.SpeedAcc, + Dcc = dr.SpeedDcc, + }, false); + poslist.Enqueue(p); + } + + //x,y완료될떄까지 기다림 + for (int i = 0; i < nlist.Count; i++) + { + var ax = nlist[i]; + var dr = nplist[i]; + sb.AppendLine($"[{++idx:000}] {ax} Position move : {dr.Position}mm({dr.Speed}ms)"); + var p = new Tuple(ax, new sPositionData + { + Axis = (short)ax, + Position = dr.Position, + Speed = Math.Max(100, dr.Speed), + Acc = dr.SpeedAcc, + Dcc = dr.SpeedDcc, + }, true); + poslist.Enqueue(p); + } + + + for (int i = 0; i < zlist.Count; i++) + { + var ax = zlist[i]; + var dr = zplist[i]; + sb.AppendLine($"[{++idx:000}] {ax} Position move : {dr.Position}mm({dr.Speed}ms)"); + var p = new Tuple(ax, new sPositionData + { + Axis = (short)ax, + Position = Math.Max(dr.Position - 50, 0), + Speed = Math.Max(100, dr.Speed), + Acc = dr.SpeedAcc, + Dcc = dr.SpeedDcc, + }, false); + poslist.Enqueue(p); + } + + var dlg = UTIL.MsgQ(sb.ToString()); + if (dlg != DialogResult.Yes) return; + + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("There are motions that have not completed homing"); + return; + } + + + + MoveMotion = new Task(new Action(() => + { + DateTime starttime = DateTime.Now; + Tuple p = null; + while (poslist.Any() || p != null) //자료가있거나 현재 걸려있는게 있는 경우 + { + if (p == null) + { + p = poslist.Dequeue(); + starttime = DateTime.Now; + } + + var seqtime = DateTime.Now - starttime; + if (p.Item3) //대기 + { + + if (MOT.CheckMotionPos(seqtime, p.Item2, "USER", false) == false) + { + var msg = PUB.mot.ErrorMessage; + //{ + //Util.MsgE("모션 이동 실패\n" + Pub.mot.ErrorMessage); + //break; + //} + if (seqtime.TotalSeconds > 60) + { + PUB.log.AddE("Position movement failed, exceeded 60 seconds"); + break; + } + System.Threading.Thread.Sleep(100); + continue; + } + } + else MOT.Move(p.Item1, p.Item2.Position, p.Item2.Speed, p.Item2.Acc, false, false, false); //위치이동을한다 + p = null; //다음으로 진행할 수 있게 한다 + } + })); + MoveMotion.RunSynchronously(); + } + + private void btSet_Click(object sender, EventArgs e) + { + //담당 축중에 ready 를 제외한 축을 추출하고 + //해당 축의 해당 위치에 command 좌표를 할당 합니다. + + + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("There are motions that have not completed homing\nCannot save"); + return; + } + + //지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다. + //지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다. + List idxlist = GetCurrentList(); + if (idxlist == null) return; + + + List nlist = new List(); + List nplist = new List(); + + foreach (var dridx in idxlist) + { + var dr = this.ds.MCModel.Where(t => t.idx == dridx).First(); + if (dr.PosTitle.StartsWith("READY")) continue; + + var ax = (eAxis)dr.MotIndex; + var cate = ax.CategoryAttr(); + nlist.Add(ax); + nplist.Add(dr); + } + Queue> poslist = new Queue>(); + var sb = new System.Text.StringBuilder(); + sb.AppendLine("Do you want to save the positions of the following coordinates?"); + sb.AppendLine(); + + for (int i = 0; i < nlist.Count; i++) + { + var ax = nlist[i]; + var dr = nplist[i]; + var curpos = PUB.mot.GetCmdPos((short)ax); + sb.AppendLine($"[{dr.idx}] Axis:{ax} - {dr.PosTitle}\n\tChange position {dr.Position} -> {curpos}"); + var param = new Tuple(dr, ax, dr.PosTitle, dr.Position, curpos); + poslist.Enqueue(param); + } + + + using (var f = new Dialog.fSavePosition(poslist)) + { + if (f.ShowDialog() != DialogResult.OK) + { + UTIL.MsgE("Coordinate saving was cancelled"); + } + } + + + + //var dlg = Util.MsgQ(sb.ToString()); + //if (dlg != DialogResult.Yes) return; + + + + //var cnt = 0; + //foreach (var p in poslist) + //{ + // p.Item1.Position = p.Item2; + // p.Item1.EndEdit(); + // cnt += 1; + //} + //Util.MsgI($"{cnt}건의 위치를 변경 했습니다"); + } + + private void btJogUp_MouseDown(object sender, MouseEventArgs e) + { + var but = sender as Button; + var tag = but.Tag.ToString(); + var vel = (float)nudJogVel.Value; + if (tag == "X+") + { + if (axisX >= 0) PUB.mot.JOG((short)axisX, arDev.MOT.MOTION_DIRECTION.Positive, vel, 500, false, false); + } + else if (tag == "X-") + { + if (axisX >= 0) PUB.mot.JOG((short)axisX, arDev.MOT.MOTION_DIRECTION.Negative, vel, 500, false, false); + } + else if (tag == "Y+") + { + if (axisY >= 0) PUB.mot.JOG((short)axisY, arDev.MOT.MOTION_DIRECTION.Positive, vel, 500, false, false); + } + else if (tag == "Y-") + { + if (axisY >= 0) PUB.mot.JOG((short)axisY, arDev.MOT.MOTION_DIRECTION.Negative, vel, 500, false, false); + } + else if (tag == "Z+") + { + if (axisZ >= 0) PUB.mot.JOG((short)axisZ, arDev.MOT.MOTION_DIRECTION.Positive, vel, 500, false, false); + } + else if (tag == "Z-") + { + if (axisZ >= 0) PUB.mot.JOG((short)axisZ, arDev.MOT.MOTION_DIRECTION.Negative, vel, 500, false, false); + } + } + + private void btAClear_MouseUp(object sender, MouseEventArgs e) + { + var but = sender as Button; + var tag = but.Tag.ToString(); + var vel = (float)nudJogVel.Value; + if (tag == "X+") + { + if (axisX >= 0) PUB.mot.MoveStop("MOVETOGRP", (short)axisX, true); + } + else if (tag == "X-") + { + if (axisX >= 0) PUB.mot.MoveStop("MOVETOGRP", (short)axisX, true); + } + else if (tag == "Y+") + { + if (axisY >= 0) PUB.mot.MoveStop("MOVETOGRP", (short)axisY, true); + } + else if (tag == "Y-") + { + if (axisY >= 0) PUB.mot.MoveStop("MOVETOGRP", (short)axisY, true); + } + else if (tag == "Z+") + { + if (axisZ >= 0) PUB.mot.MoveStop("MOVETOGRP", (short)axisZ, true); + } + else if (tag == "Z-") + { + if (axisZ >= 0) PUB.mot.MoveStop("MOVETOGRP", (short)axisZ, true); + } + } + + + private void tmDisplay_Tick(object sender, EventArgs e) + { + var motpos = string.Empty; + if (axisX >= 0) + { + motpos += $"X:{PUB.mot.GetActPos((short)axisX):N3}/{PUB.mot.GetCmdPos((short)axisX):N3}"; + button6.BackColor = PUB.iLock[axisX].IsEmpty() ? Color.FromArgb(224, 224, 224) : Color.Orange; + } + else + { + motpos += "X:(none)"; + button6.BackColor = Color.FromArgb(224, 224, 224); + } + if (axisY >= 0) + { + motpos += $" / Y:{PUB.mot.GetActPos((short)axisY):N3}/{PUB.mot.GetCmdPos((short)axisY):N3}"; + button5.BackColor = PUB.iLock[axisY].IsEmpty() ? Color.FromArgb(224, 224, 224) : Color.Orange; + } + else + { + motpos += " Y:(none)"; + button5.BackColor = Color.FromArgb(224, 224, 224); + } + if (axisZ >= 0) + { + motpos += $" / Z:{PUB.mot.GetActPos((short)axisZ):N3},{PUB.mot.GetCmdPos((short)axisZ):N3}"; + button4.BackColor = PUB.iLock[axisZ].IsEmpty() ? Color.FromArgb(224, 224, 224) : Color.Orange; + } + else + { + motpos += " Z:(none)"; + button4.BackColor = Color.FromArgb(224, 224, 224); + } + + this.lbMotPos.Text = motpos; + + } + + private void Motion_MoveToGroup_FormClosed(object sender, FormClosedEventArgs e) + { + tmDisplay.Stop(); + } + + private void button1_Click(object sender, EventArgs e) + { + var but = sender as Button; + if (but.Text.EndsWith("-ZERO")) + { + + if (but.Text.StartsWith("X") && axisX >= 0) + { + if (UTIL.MsgQ("Do you want to move X position to 0?") != DialogResult.Yes) return; + MOT.Move((eAxis)axisX, 0, 100, 1000, false, false, false); + } + else if (but.Text.StartsWith("Y") && axisY >= 0) + { + if (UTIL.MsgQ("Do you want to move Y position to 0?") != DialogResult.Yes) return; + MOT.Move((eAxis)axisY, 0, 100, 1000, false, false, false); + } + else if (but.Text.StartsWith("Z") && axisZ >= 0) + { + if (UTIL.MsgQ("Do you want to move Z position to 0?") != DialogResult.Yes) return; + MOT.Move((eAxis)axisZ, 0, 100, 1000, false, false, false); + } + } + else if (but.Text.EndsWith("-MOVE")) + { + + //지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다. + List idxlist = GetCurrentList(); + if (idxlist == null) return; + + foreach (var dridx in idxlist) + { + var dr = this.ds.MCModel.Where(t => t.idx == dridx).First(); + var ax = (eAxis)dr.MotIndex; + var cate = ax.CategoryAttr(); + + + //나머지축에 인터락이 있으면 처리하지 않는다. + var sb = new System.Text.StringBuilder(); + if (PUB.iLock[dr.MotIndex].IsEmpty() == false) + { + if (sb.Length < 1) sb.AppendLine("Motion interlock is set\n"); + var locklist = MOT.GetActiveLockList(ax, PUB.iLock[dr.MotIndex]); + sb.AppendLine($"Axis : {ax}({dr.MotIndex}) Target:{string.Join(",", locklist)}"); + sb.AppendLine(); + sb.AppendLine("Do you want to continue?"); + if (UTIL.MsgQ(sb.ToString()) != DialogResult.Yes) return; + } + + + + + + if (but.Text.StartsWith("X") && cate.StartsWith("X") && axisX >= 0) + { + if (UTIL.MsgQ($"Do you want to move X position to ({dr.Position})?") != DialogResult.Yes) return; + MOT.Move(ax, dr.Position, dr.Speed, 1000, false, false, false); + } + else if (but.Text.StartsWith("Y") && cate.StartsWith("Y") && axisY >= 0) + { + if (UTIL.MsgQ($"Do you want to move Y position to ({dr.Position})?") != DialogResult.Yes) return; + MOT.Move(ax, dr.Position, dr.Speed, 1000, false, false, false); + } + else if (but.Text.StartsWith("Z") && cate.StartsWith("Z") && axisZ >= 0) + { + if (UTIL.MsgQ($"Do you want to move Z position to ({dr.Position})?") != DialogResult.Yes) return; + MOT.Move(ax, dr.Position, Math.Min(50, dr.Speed), 1000, false, false, false); + } + } + } + } + + private void button13_Click(object sender, EventArgs e) + { + var but = sender as Button; + var txt = but.Text.Trim(); + var aname = txt.Substring(0, 1); + var value = txt.Split(':')[1].Replace("mm", "").Replace("+", "").Trim(); + var v = float.Parse(value); + if (aname == "X" && axisX >= 0) + { + //이동을 해준다 + MOT.Move((eAxis)axisX, v, 100, 1000, true, false, false); + } + else if (aname == "Y" && axisY >= 0) + { + //이동을 해준다 + MOT.Move((eAxis)axisY, v, 100, 1000, true, false, false); + } + else if (aname == "Z" && axisZ >= 0) + { + //이동을 해준다 + MOT.Move((eAxis)axisZ, v, 100, 1000, true, false, false); + } + } + + TreeNode prevnode = null; + TreeView seltv = null; + private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) + { + //선택되면 대상축에서 x,y,z를 찾아서 설정하고 enable 을 설정한다. + if (seltv != null) + { + seltv.BackColor = Color.White; + } + seltv = sender as TreeView; + seltv.BackColor = Color.LightGoldenrodYellow; + + if (prevnode != null) + { + prevnode.BackColor = Color.White; + } + + + + //지정된 축중에 Z축을 가진 대상이 있다면 그것을 우선 0으로 이동시킨다. + List idxlist = GetCurrentList(); + if (idxlist == null) return; + var tn = this.seltv.SelectedNode; + this.Text = $"{tn.Parent.Text} - {tn.Text}"; + + this.prevnode = tn; + this.prevnode.BackColor = Color.Lime; + + List xlist = new List(); + List ylist = new List(); + List zlist = new List(); + + List xplist = new List(); + List yplist = new List(); + List zplist = new List(); + + foreach (var dridx in idxlist) + { + var dr = this.ds.MCModel.Where(t => t.idx == dridx).First(); + var ax = (eAxis)dr.MotIndex; + var cate = ax.CategoryAttr(); + if (cate.StartsWith("Z")) + { + zlist.Add(ax); + zplist.Add(dr); + } + else if (cate.StartsWith("X")) + { + xlist.Add(ax); + xplist.Add(dr); + } + else if (cate.StartsWith("Y")) + { + ylist.Add(ax); + yplist.Add(dr); + } + } + + if (xlist.Count == 1) + { + axisX = (int)xlist.First(); + btXNeg.Enabled = true; + btXPos.Enabled = true; + btXNeg.BackColor = Color.LightSkyBlue; + btXPos.BackColor = Color.LightSkyBlue; + } + else + { + axisX = -1; + btXNeg.Enabled = false; + btXPos.Enabled = false; + btXNeg.BackColor = Color.LightGray; + btXPos.BackColor = Color.LightGray; + } + + if (ylist.Count == 1) + { + axisY = (int)ylist.First(); + btYNeg.Enabled = true; + btYPos.Enabled = true; + btYNeg.BackColor = Color.LightSkyBlue; + btYPos.BackColor = Color.LightSkyBlue; + } + else + { + axisY = -1; + btYNeg.Enabled = false; + btYPos.Enabled = false; + btYNeg.BackColor = Color.LightGray; + btYPos.BackColor = Color.LightGray; + } + + if (zlist.Count == 1) + { + axisZ = (int)zlist.First(); + btZNeg.Enabled = true; + btZPos.Enabled = true; + btZNeg.BackColor = Color.LightSkyBlue; + btZPos.BackColor = Color.LightSkyBlue; + } + else + { + axisZ = -1; + btZNeg.Enabled = false; + btZPos.Enabled = false; + btZNeg.BackColor = Color.LightGray; + btZPos.BackColor = Color.LightGray; + } + + eAxis axx = (eAxis)axisX; + eAxis axy = (eAxis)axisY; + eAxis axz = (eAxis)axisZ; + + lbX.Text = $"({axisX}){axx}"; + if (axisX >= 0) lbX.Text += $"({xplist.First().PosIndex}mm)"; + lbY.Text = $"({axisY}){axy}"; + if (axisY >= 0) lbY.Text += $"({yplist.First().PosIndex}mm)"; + lbZ.Text = $"({axisZ}){axz}"; + if (axisZ >= 0) lbZ.Text += $"({zplist.First().PosIndex}mm)"; + } + + private void button25_Click(object sender, EventArgs e) + { + var but = sender as Button; + var val = int.Parse(but.Text); + nudJogVel.Value = (decimal)val; + } + + private void toolStripButton2_Click_1(object sender, EventArgs e) + { + using (var f = new Model_Motion()) + f.ShowDialog(); + } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + using (var f = new Dialog.fIOMonitor()) + f.ShowDialog(); + } + + + private void button28_Click(object sender, EventArgs e) + { + //var cur = DIO.GetIOOutput(eDOName.F셔틀_회전180); + //string msg; + //if (cur) msg = "셔틀(F)이 현재 뒤집혀 있습니다.\n원위치로 복귀 할까요?"; + //else msg = "셔틀(F) 을 뒤집을까요?"; + + //var dlg = Util.MsgQ(msg); + //if (dlg != DialogResult.Yes) return; + } + + private void button29_Click(object sender, EventArgs e) + { + + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + using (var f = new Dialog.Quick_Control()) + f.ShowDialog(); + } + + private void button30_Click(object sender, EventArgs e) + { + + } + + private void btAllZSafe_Click(object sender, EventArgs e) + { + //Z1,2,3 안전위치로 이동한다 220421 + var dlg = UTIL.MsgQ("Do you want to move all Z axes to safe position?\n" + + "For Z1 and Z4, if they are holding sockets, damage may occur during safe position movement.\n" + + "Check the socket status of each gripper before proceeding\n" + + "If Z axes are moved arbitrarily, work may not continue properly\n " + + "It is recommended to cancel the work and start again"); + + if (dlg != DialogResult.Yes) return; + + var PosZ1 = MOT.GetPZPos(ePZLoc.READY); + var PosZ2 = MOT.GetLZPos(eLZLoc.READY); + var PosZ3 = MOT.GetRZPos(eRZLoc.READY); + + PosZ1.Position = 0; + PosZ2.Position = 0; + PosZ3.Position = 0; + + MOT.Move(PosZ1); + MOT.Move(PosZ2); + MOT.Move(PosZ3); + } + + + + private void button31_Click(object sender, EventArgs e) + { + + } + + private void btJogStop_Click(object sender, EventArgs e) + { + if (axisX >= 0) MOT.Stop((eAxis)axisX, "MOVETOGRP", true); + if (axisY >= 0) MOT.Stop((eAxis)axisY, "MOVETOGRP", true); + if (axisZ >= 0) MOT.Stop((eAxis)axisZ, "MOVETOGRP", true); + } + + + private void motCommandButton1_Click(object sender, EventArgs e) + { + if (axisX >= 0) MOT.Stop((eAxis)axisX, "MOVETOGRP", true); + if (axisY >= 0) MOT.Stop((eAxis)axisY, "MOVETOGRP", true); + if (axisZ >= 0) MOT.Stop((eAxis)axisZ, "MOVETOGRP", true); + } + } +} diff --git a/Handler/Project/Dialog/Motion_MoveToGroup.resx b/Handler/Project/Dialog/Motion_MoveToGroup.resx new file mode 100644 index 0000000..a4ea863 --- /dev/null +++ b/Handler/Project/Dialog/Motion_MoveToGroup.resx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 123, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABE9JREFUWEft + WF9MWlccNk2Xvm5vfdnjluyxS/awDC1JWxXBtljgIqDO6qSi/JHVdlu3DNc2Grsu2ZY53cNc06HGNK5J + o+nWtBYQmRiVivyZgFKZKFDE/enqUvW3ey7n3tqC+JfELHzJl5twv/N937333HtOyMogg70KgyuUO+SN + OGwPo/+O+qPLepN3QW/yRPUDPimWbBkD7lCLPRBbsXojT3+2BR6TXi690fut3uB7DUs2B5M71OqcjYEr + uMiQLIjp0WHZljE4OX9/refw1CPoMvuQ79KmL9zknlc5Z5+Z0ExHQcQhb5j2ftox4GNh6foY9T/6+0UT + xHQVRLw1MhP3NnoHsTQ5DI7ZQ8kMENNZ0Oiep/1Xu/unD2J5IgyOkDyZAWI6Cw75mMcMHWbP21ieCKM7 + qElmgJjOglZfhPG/bvKwsTwRmYKZgpmC/6eCVncAbNNhxmS3C5rt0+AIRLdX8N6wC4iSOqis/hjsM5Hn + Cn7e3vsTlm8Zd0a8DuTV3n0bhBIV6JratlbQ7JzjogG3zQ8og5KKczDuj4A9sMAYKM82ruSxeKV4yKYh + lKqJ9p7+VeTfeu0m5X/+0y+pgoOeEOPfZZh8Aw9JRD/A/gcPo0/QoLtWJ1gcfsrA6JqjBl+754QiXink + ZfOWiwpl8rHp2MupeOnq969yWdxXBIRCThZaVn9wBRy/x0guQJ9xDGxTIcq/bywQLzjgHdcB7MN1kqPf + Ec4fnQovoYH01XWSe7a2W8MgLdPCKUJBXb2gWAUKdQP8YrFTOpojk7Ogqb8EwuJarFNSR5pXv7sB4zPx + uYf2nHcnglS5H+5MTHaZfK/jGhvjs8ZWxely7VIxcQYERRVQJJA/F0STkKmhu9dIBQ65ZkAsTdS8SJFM + A6r6RiiRKUEirn5S8d5HYhy7NeTmFOTksrh/nTj+7jNzbTOIW/uAuNIJQvJFQr9JyDuLpoNccSGljuZJ + fiXkZvOA9H58LJt3BMdtD3lH+PlCSfwxER9+BRLHCkhcQFHc6wJy8lPnvmjpII8b6/inquhy5FzmcnHM + 9kFI1W8hY8TiG6NMKE2h+jJ1rkbTQB030vH5FVQ5xKM5nEM4ZvsgZJo36WBxtzUhWFQTL6bUXmQKptLt + ekEOR3mANP4TmYvqmkAy9g8TKu60MKVa2nuYNzeVrrBARhf8g8PhHMAxO4NIor5IBwjlnwDR9COILnzD + hJZWnocRbxDqzsYf43o6gbgG8g4XUgWPvcNtwPY7R1VV1UtkwE0mfA1lp+upjy76zIz7Q1BW/n6CBlEg + roWCowL67vWw2ez92H53oNPp9omkqjIyzCAu1UbPqBqg+evrYJmIrzY0HeSyeLm5DSQlavIjXbsqEFWv + nDhevpR/+GQ4l1VwHy2Tuixd6tVip3DNxdhrS61Hiydso9fYlJuA3Uam4E6x5wv+FlxgkQUWN+KvntAg + uYVaRNzUH0MZZLDnkJX1H2FAn90x0NzDAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAA8hJREFUWEft + l2tIU2EYx+0eRUREEEH0oS9BEEQEfehDYG1nm3NNkAoSukAGRUUQFRQsiu3sjlbSMMSKLO1imhoWFZXb + zjmblbm0slWWpaal7qrzcnrf9dBw7nZ25uVDP3jgnPM+77MfL2P7n7T/TBUIktoIl6OupwwCtbUaLtOE + pKUKLqcGhJZaIyStI3CLBK2sSGVZC7eTj9zIVGApuA0KZuptFXA7uYg05pVbDYwvXDBDx/jwGjyaPORG + +krx86+BcMFT5a0BqY4phkeTg1jDLJXpaV+vN8CGC95pCrAZWtq3RV23DB5PPDI9lXfh4ad+FhEuWPNx + hD1W5hzI0DN58Hhi2UzaF0p1tKezL+gXUbCssZ+VaGmvRPViESxNHJlaWkFWtniDdohIgrgOlbT4JBrm + DCxNDFKFfV6mnu5r7fKBXnTB66+8+BRdAm3DfFgefyRa6sjpW81ucAsSTRBXbnGzR6yhDsPy+LLOZJ8l + 0zNd79s9oPaXWIJX7G70u0h3ZyvezoaW8YNQWXcdveZwgdc/Ygni2l3Y6CY01l3QMk6w7LQsI9P6urUP + tELEEzRZevG/yzeFgp0ObamHUFuz9l1uGHN6mHiCuHZeeuMiVBY5tKUedHoO84dfoDSaRATPP+tmpQZb + E7SlFqHKujmn4KVnZASMwkhEsBpVdn69m1Bb0qE1dWQZbdSjxp9R9BITxKV73MnKDDYKWlMDoTKvz863 + eQeHovolLHi/ZZiVGe0ekZraAO38kRtttffq24fBJSKJCuJSPmgflupttdDOD4HSskpuYPz+QEw/ToKV + 74ZQ4sYhl1kNW5IHyZWWmNsGwSMqXARxKaraBlGgLYUtySE4xyzHgdTdH9ePs2B582Aw0Ip15hWwjTvo + XcNU+OTLADjEhKsgrpN3P+PXAhNs40a6kl6MIpX3lzsACrFJRvC2YwCfolekfL4EtiaOVE+ThhpnKPDF + IRlBXEdvOv1iHa2GrYmRqa5bgOP8999++Pj4JCt4o8GPA60Hv0LA9vhINdSJs+XvRwe+OCQriOvAtQ9e + kZY+DttjI8qvmYMCac/HDk5+vASv1ntwoO3ZpHg6F0ZER6y27j9e0hQxUsWCjyCuvUUOD0HSuTAiMtll + ZTPQD/MPxzfOfrwFixgXi773HegUZ8KYsaAwueNgcePYuJwAfAVx5ZjeuAQktR3GjAVFqhabswc+khup + ECyo+41OkXHiVwsYFUJI0pI9plfu6IEqNqkQxLXt4msXoaTEMCqESENZ8GA+BaOCgnyKQC4w6j88SUv7 + A1lGiJL4wYWWAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAA8hJREFUWEft + l2tIU2EYx+0eRUREEEH0oS9BEEQEfehDYG1nm3NNkAoSukAGRUUQFRQsiu3sjlbSMMSKLO1imhoWFZXb + zjmblbm0slWWpaal7qrzcnrf9dBw7nZ25uVDP3jgnPM+77MfL2P7n7T/TBUIktoIl6OupwwCtbUaLtOE + pKUKLqcGhJZaIyStI3CLBK2sSGVZC7eTj9zIVGApuA0KZuptFXA7uYg05pVbDYwvXDBDx/jwGjyaPORG + +krx86+BcMFT5a0BqY4phkeTg1jDLJXpaV+vN8CGC95pCrAZWtq3RV23DB5PPDI9lXfh4ad+FhEuWPNx + hD1W5hzI0DN58Hhi2UzaF0p1tKezL+gXUbCssZ+VaGmvRPViESxNHJlaWkFWtniDdohIgrgOlbT4JBrm + DCxNDFKFfV6mnu5r7fKBXnTB66+8+BRdAm3DfFgefyRa6sjpW81ucAsSTRBXbnGzR6yhDsPy+LLOZJ8l + 0zNd79s9oPaXWIJX7G70u0h3ZyvezoaW8YNQWXcdveZwgdc/Ygni2l3Y6CY01l3QMk6w7LQsI9P6urUP + tELEEzRZevG/yzeFgp0ObamHUFuz9l1uGHN6mHiCuHZeeuMiVBY5tKUedHoO84dfoDSaRATPP+tmpQZb + E7SlFqHKujmn4KVnZASMwkhEsBpVdn69m1Bb0qE1dWQZbdSjxp9R9BITxKV73MnKDDYKWlMDoTKvz863 + eQeHovolLHi/ZZiVGe0ekZraAO38kRtttffq24fBJSKJCuJSPmgflupttdDOD4HSskpuYPz+QEw/ToKV + 74ZQ4sYhl1kNW5IHyZWWmNsGwSMqXARxKaraBlGgLYUtySE4xyzHgdTdH9ePs2B582Aw0Ip15hWwjTvo + XcNU+OTLADjEhKsgrpN3P+PXAhNs40a6kl6MIpX3lzsACrFJRvC2YwCfolekfL4EtiaOVE+ThhpnKPDF + IRlBXEdvOv1iHa2GrYmRqa5bgOP8999++Pj4JCt4o8GPA60Hv0LA9vhINdSJs+XvRwe+OCQriOvAtQ9e + kZY+DttjI8qvmYMCac/HDk5+vASv1ntwoO3ZpHg6F0ZER6y27j9e0hQxUsWCjyCuvUUOD0HSuTAiMtll + ZTPQD/MPxzfOfrwFixgXi773HegUZ8KYsaAwueNgcePYuJwAfAVx5ZjeuAQktR3GjAVFqhabswc+khup + ECyo+41OkXHiVwsYFUJI0pI9plfu6IEqNqkQxLXt4msXoaTEMCqESENZ8GA+BaOCgnyKQC4w6j88SUv7 + A1lGiJL4wYWWAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABE9JREFUWEft + WF9MWlccNk2Xvm5vfdnjluyxS/awDC1JWxXBtljgIqDO6qSi/JHVdlu3DNc2Grsu2ZY53cNc06HGNK5J + o+nWtBYQmRiVivyZgFKZKFDE/enqUvW3ey7n3tqC+JfELHzJl5twv/N937333HtOyMogg70KgyuUO+SN + OGwPo/+O+qPLepN3QW/yRPUDPimWbBkD7lCLPRBbsXojT3+2BR6TXi690fut3uB7DUs2B5M71OqcjYEr + uMiQLIjp0WHZljE4OX9/refw1CPoMvuQ79KmL9zknlc5Z5+Z0ExHQcQhb5j2ftox4GNh6foY9T/6+0UT + xHQVRLw1MhP3NnoHsTQ5DI7ZQ8kMENNZ0Oiep/1Xu/unD2J5IgyOkDyZAWI6Cw75mMcMHWbP21ieCKM7 + qElmgJjOglZfhPG/bvKwsTwRmYKZgpmC/6eCVncAbNNhxmS3C5rt0+AIRLdX8N6wC4iSOqis/hjsM5Hn + Cn7e3vsTlm8Zd0a8DuTV3n0bhBIV6JratlbQ7JzjogG3zQ8og5KKczDuj4A9sMAYKM82ruSxeKV4yKYh + lKqJ9p7+VeTfeu0m5X/+0y+pgoOeEOPfZZh8Aw9JRD/A/gcPo0/QoLtWJ1gcfsrA6JqjBl+754QiXink + ZfOWiwpl8rHp2MupeOnq969yWdxXBIRCThZaVn9wBRy/x0guQJ9xDGxTIcq/bywQLzjgHdcB7MN1kqPf + Ec4fnQovoYH01XWSe7a2W8MgLdPCKUJBXb2gWAUKdQP8YrFTOpojk7Ogqb8EwuJarFNSR5pXv7sB4zPx + uYf2nHcnglS5H+5MTHaZfK/jGhvjs8ZWxely7VIxcQYERRVQJJA/F0STkKmhu9dIBQ65ZkAsTdS8SJFM + A6r6RiiRKUEirn5S8d5HYhy7NeTmFOTksrh/nTj+7jNzbTOIW/uAuNIJQvJFQr9JyDuLpoNccSGljuZJ + fiXkZvOA9H58LJt3BMdtD3lH+PlCSfwxER9+BRLHCkhcQFHc6wJy8lPnvmjpII8b6/inquhy5FzmcnHM + 9kFI1W8hY8TiG6NMKE2h+jJ1rkbTQB030vH5FVQ5xKM5nEM4ZvsgZJo36WBxtzUhWFQTL6bUXmQKptLt + ekEOR3mANP4TmYvqmkAy9g8TKu60MKVa2nuYNzeVrrBARhf8g8PhHMAxO4NIor5IBwjlnwDR9COILnzD + hJZWnocRbxDqzsYf43o6gbgG8g4XUgWPvcNtwPY7R1VV1UtkwE0mfA1lp+upjy76zIz7Q1BW/n6CBlEg + roWCowL67vWw2ez92H53oNPp9omkqjIyzCAu1UbPqBqg+evrYJmIrzY0HeSyeLm5DSQlavIjXbsqEFWv + nDhevpR/+GQ4l1VwHy2Tuixd6tVip3DNxdhrS61Hiydso9fYlJuA3Uam4E6x5wv+FlxgkQUWN+KvntAg + uYVaRNzUH0MZZLDnkJX1H2FAn90x0NzDAAAAAElFTkSuQmCC + + + + 279, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/Quick_Control.Designer.cs b/Handler/Project/Dialog/Quick_Control.Designer.cs new file mode 100644 index 0000000..e4c74de --- /dev/null +++ b/Handler/Project/Dialog/Quick_Control.Designer.cs @@ -0,0 +1,873 @@ +namespace Project.Dialog +{ + partial class Quick_Control + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Quick_Control)); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.panel1 = new System.Windows.Forms.Panel(); + this.panBG = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.button60 = new System.Windows.Forms.Button(); + this.button57 = new System.Windows.Forms.Button(); + this.button51 = new System.Windows.Forms.Button(); + this.button52 = new System.Windows.Forms.Button(); + this.button58 = new System.Windows.Forms.Button(); + this.button41 = new System.Windows.Forms.Button(); + this.button44 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button54 = new System.Windows.Forms.Button(); + this.button53 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button59 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button14 = new System.Windows.Forms.Button(); + this.button15 = new System.Windows.Forms.Button(); + this.button16 = new System.Windows.Forms.Button(); + this.button17 = new System.Windows.Forms.Button(); + this.button19 = new System.Windows.Forms.Button(); + this.btLCyl = new System.Windows.Forms.Button(); + this.btRCyl = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.button12 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); + this.button38 = new System.Windows.Forms.Button(); + this.button40 = new System.Windows.Forms.Button(); + this.button13 = new System.Windows.Forms.Button(); + this.button24 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.button11 = new System.Windows.Forms.Button(); + this.button18 = new System.Windows.Forms.Button(); + this.panBG.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // timer1 + // + this.timer1.Interval = 500; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(5, 511); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(286, 7); + this.panel1.TabIndex = 72; + // + // panBG + // + this.panBG.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.panBG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panBG.Controls.Add(this.panel1); + this.panBG.Controls.Add(this.groupBox1); + this.panBG.Controls.Add(this.panel2); + this.panBG.Controls.Add(this.groupBox3); + this.panBG.Dock = System.Windows.Forms.DockStyle.Fill; + this.panBG.Location = new System.Drawing.Point(1, 1); + this.panBG.Name = "panBG"; + this.panBG.Padding = new System.Windows.Forms.Padding(5); + this.panBG.Size = new System.Drawing.Size(298, 540); + this.panBG.TabIndex = 73; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.tableLayoutPanel2); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox1.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.groupBox1.ForeColor = System.Drawing.Color.WhiteSmoke; + this.groupBox1.Location = new System.Drawing.Point(5, 189); + this.groupBox1.Margin = new System.Windows.Forms.Padding(2); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(5, 3, 5, 5); + this.groupBox1.Size = new System.Drawing.Size(286, 322); + this.groupBox1.TabIndex = 78; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "ETC"; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 4; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.Controls.Add(this.button60, 0, 3); + this.tableLayoutPanel2.Controls.Add(this.button57, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.button51, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.button52, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.button58, 3, 2); + this.tableLayoutPanel2.Controls.Add(this.button41, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.button44, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.button3, 1, 3); + this.tableLayoutPanel2.Controls.Add(this.button54, 2, 1); + this.tableLayoutPanel2.Controls.Add(this.button53, 3, 1); + this.tableLayoutPanel2.Controls.Add(this.button5, 1, 2); + this.tableLayoutPanel2.Controls.Add(this.button6, 2, 2); + this.tableLayoutPanel2.Controls.Add(this.button4, 2, 3); + this.tableLayoutPanel2.Controls.Add(this.button59, 3, 3); + this.tableLayoutPanel2.Controls.Add(this.button8, 0, 4); + this.tableLayoutPanel2.Controls.Add(this.button14, 1, 4); + this.tableLayoutPanel2.Controls.Add(this.button15, 2, 4); + this.tableLayoutPanel2.Controls.Add(this.button16, 3, 4); + this.tableLayoutPanel2.Controls.Add(this.button17, 0, 5); + this.tableLayoutPanel2.Controls.Add(this.button19, 3, 5); + this.tableLayoutPanel2.Controls.Add(this.btLCyl, 1, 5); + this.tableLayoutPanel2.Controls.Add(this.btRCyl, 2, 5); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(5, 19); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(2); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 6; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66708F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66542F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(276, 298); + this.tableLayoutPanel2.TabIndex = 0; + // + // button60 + // + this.button60.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.button60.Dock = System.Windows.Forms.DockStyle.Fill; + this.button60.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button60.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button60.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button60.ForeColor = System.Drawing.Color.White; + this.button60.Location = new System.Drawing.Point(4, 151); + this.button60.Margin = new System.Windows.Forms.Padding(4); + this.button60.Name = "button60"; + this.button60.Size = new System.Drawing.Size(61, 41); + this.button60.TabIndex = 61; + this.button60.Tag = "0"; + this.button60.Text = "LP Forward"; + this.button60.UseVisualStyleBackColor = false; + this.button60.Click += new System.EventHandler(this.button60_Click); + // + // button57 + // + this.button57.BackColor = System.Drawing.Color.Olive; + this.button57.Dock = System.Windows.Forms.DockStyle.Fill; + this.button57.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button57.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button57.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button57.ForeColor = System.Drawing.Color.White; + this.button57.Location = new System.Drawing.Point(4, 102); + this.button57.Margin = new System.Windows.Forms.Padding(4); + this.button57.Name = "button57"; + this.button57.Size = new System.Drawing.Size(61, 41); + this.button57.TabIndex = 59; + this.button57.Tag = "2"; + this.button57.Text = "LP-AIR"; + this.button57.UseVisualStyleBackColor = false; + this.button57.Click += new System.EventHandler(this.button57_Click); + // + // button51 + // + this.button51.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(64))))); + this.button51.Dock = System.Windows.Forms.DockStyle.Fill; + this.button51.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button51.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button51.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button51.ForeColor = System.Drawing.Color.White; + this.button51.Location = new System.Drawing.Point(4, 53); + this.button51.Margin = new System.Windows.Forms.Padding(4); + this.button51.Name = "button51"; + this.button51.Size = new System.Drawing.Size(61, 41); + this.button51.TabIndex = 57; + this.button51.Tag = "1"; + this.button51.Text = "LP Suction"; + this.button51.UseVisualStyleBackColor = false; + this.button51.Click += new System.EventHandler(this.button51_Click); + // + // button52 + // + this.button52.BackColor = System.Drawing.Color.Navy; + this.button52.Dock = System.Windows.Forms.DockStyle.Fill; + this.button52.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button52.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button52.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button52.ForeColor = System.Drawing.Color.White; + this.button52.Location = new System.Drawing.Point(73, 53); + this.button52.Margin = new System.Windows.Forms.Padding(4); + this.button52.Name = "button52"; + this.button52.Size = new System.Drawing.Size(61, 41); + this.button52.TabIndex = 57; + this.button52.Tag = "2"; + this.button52.Text = "LP Exhaust"; + this.button52.UseVisualStyleBackColor = false; + this.button52.Click += new System.EventHandler(this.button51_Click); + // + // button58 + // + this.button58.BackColor = System.Drawing.Color.Olive; + this.button58.Dock = System.Windows.Forms.DockStyle.Fill; + this.button58.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button58.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button58.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button58.ForeColor = System.Drawing.Color.White; + this.button58.Location = new System.Drawing.Point(211, 102); + this.button58.Margin = new System.Windows.Forms.Padding(4); + this.button58.Name = "button58"; + this.button58.Size = new System.Drawing.Size(61, 41); + this.button58.TabIndex = 59; + this.button58.Tag = "2"; + this.button58.Text = "RP-AIR"; + this.button58.UseVisualStyleBackColor = false; + this.button58.Click += new System.EventHandler(this.button58_Click); + // + // button41 + // + this.button41.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button41.Dock = System.Windows.Forms.DockStyle.Fill; + this.button41.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button41.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button41.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button41.ForeColor = System.Drawing.Color.White; + this.button41.Location = new System.Drawing.Point(4, 4); + this.button41.Margin = new System.Windows.Forms.Padding(4); + this.button41.Name = "button41"; + this.button41.Size = new System.Drawing.Size(61, 41); + this.button41.TabIndex = 57; + this.button41.Text = "Picker Vacuum"; + this.button41.UseVisualStyleBackColor = false; + this.button41.Click += new System.EventHandler(this.button41_Click); + // + // button44 + // + this.button44.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.tableLayoutPanel2.SetColumnSpan(this.button44, 3); + this.button44.Dock = System.Windows.Forms.DockStyle.Fill; + this.button44.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button44.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button44.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button44.ForeColor = System.Drawing.Color.White; + this.button44.Location = new System.Drawing.Point(72, 3); + this.button44.Name = "button44"; + this.button44.Size = new System.Drawing.Size(201, 43); + this.button44.TabIndex = 58; + this.button44.Text = "Main AIR"; + this.button44.UseVisualStyleBackColor = false; + this.button44.Click += new System.EventHandler(this.button44_Click); + // + // button3 + // + this.button3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button3.Dock = System.Windows.Forms.DockStyle.Fill; + this.button3.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.button3.ForeColor = System.Drawing.Color.Gold; + this.button3.Location = new System.Drawing.Point(72, 150); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(63, 43); + this.button3.TabIndex = 58; + this.button3.Text = "Print"; + this.button3.UseVisualStyleBackColor = false; + this.button3.Click += new System.EventHandler(this.button3_Click_1); + // + // button54 + // + this.button54.BackColor = System.Drawing.Color.Navy; + this.button54.Dock = System.Windows.Forms.DockStyle.Fill; + this.button54.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button54.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button54.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button54.ForeColor = System.Drawing.Color.White; + this.button54.Location = new System.Drawing.Point(142, 53); + this.button54.Margin = new System.Windows.Forms.Padding(4); + this.button54.Name = "button54"; + this.button54.Size = new System.Drawing.Size(61, 41); + this.button54.TabIndex = 57; + this.button54.Tag = "2"; + this.button54.Text = "RP Exhaust"; + this.button54.UseVisualStyleBackColor = false; + this.button54.Click += new System.EventHandler(this.button53_Click); + // + // button53 + // + this.button53.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(64))))); + this.button53.Dock = System.Windows.Forms.DockStyle.Fill; + this.button53.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button53.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button53.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button53.ForeColor = System.Drawing.Color.White; + this.button53.Location = new System.Drawing.Point(211, 53); + this.button53.Margin = new System.Windows.Forms.Padding(4); + this.button53.Name = "button53"; + this.button53.Size = new System.Drawing.Size(61, 41); + this.button53.TabIndex = 57; + this.button53.Tag = "1"; + this.button53.Text = "RP Suction"; + this.button53.UseVisualStyleBackColor = false; + this.button53.Click += new System.EventHandler(this.button53_Click); + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.Lime; + this.button5.Dock = System.Windows.Forms.DockStyle.Fill; + this.button5.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button5.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.button5.ForeColor = System.Drawing.Color.Black; + this.button5.Location = new System.Drawing.Point(72, 101); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(63, 43); + this.button5.TabIndex = 58; + this.button5.Text = "Detect L"; + this.button5.UseVisualStyleBackColor = false; + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button6.Dock = System.Windows.Forms.DockStyle.Fill; + this.button6.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button6.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.button6.ForeColor = System.Drawing.Color.White; + this.button6.Location = new System.Drawing.Point(141, 101); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(63, 43); + this.button6.TabIndex = 58; + this.button6.Text = "Detect R"; + this.button6.UseVisualStyleBackColor = false; + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button4.Dock = System.Windows.Forms.DockStyle.Fill; + this.button4.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button4.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold); + this.button4.ForeColor = System.Drawing.Color.Gold; + this.button4.Location = new System.Drawing.Point(141, 150); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(63, 43); + this.button4.TabIndex = 58; + this.button4.Text = "Print"; + this.button4.UseVisualStyleBackColor = false; + this.button4.Click += new System.EventHandler(this.button4_Click_1); + // + // button59 + // + this.button59.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.button59.Dock = System.Windows.Forms.DockStyle.Fill; + this.button59.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button59.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button59.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button59.ForeColor = System.Drawing.Color.White; + this.button59.Location = new System.Drawing.Point(211, 151); + this.button59.Margin = new System.Windows.Forms.Padding(4); + this.button59.Name = "button59"; + this.button59.Size = new System.Drawing.Size(61, 41); + this.button59.TabIndex = 60; + this.button59.Tag = "0"; + this.button59.Text = "RP Forward"; + this.button59.UseVisualStyleBackColor = false; + this.button59.Click += new System.EventHandler(this.button59_Click); + // + // button8 + // + this.button8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.button8.Dock = System.Windows.Forms.DockStyle.Fill; + this.button8.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button8.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button8.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button8.ForeColor = System.Drawing.Color.Gold; + this.button8.Location = new System.Drawing.Point(4, 200); + this.button8.Margin = new System.Windows.Forms.Padding(4); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(61, 41); + this.button8.TabIndex = 61; + this.button8.Tag = "0"; + this.button8.Text = "Y-"; + this.button8.UseVisualStyleBackColor = false; + this.button8.Click += new System.EventHandler(this.button8_Click); + // + // button14 + // + this.button14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.button14.Dock = System.Windows.Forms.DockStyle.Fill; + this.button14.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button14.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button14.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button14.ForeColor = System.Drawing.Color.Tomato; + this.button14.Location = new System.Drawing.Point(73, 200); + this.button14.Margin = new System.Windows.Forms.Padding(4); + this.button14.Name = "button14"; + this.button14.Size = new System.Drawing.Size(61, 41); + this.button14.TabIndex = 61; + this.button14.Tag = "0"; + this.button14.Text = "[R]"; + this.button14.UseVisualStyleBackColor = false; + this.button14.Click += new System.EventHandler(this.button14_Click); + // + // button15 + // + this.button15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.button15.Dock = System.Windows.Forms.DockStyle.Fill; + this.button15.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button15.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button15.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button15.ForeColor = System.Drawing.Color.Gold; + this.button15.Location = new System.Drawing.Point(142, 200); + this.button15.Margin = new System.Windows.Forms.Padding(4); + this.button15.Name = "button15"; + this.button15.Size = new System.Drawing.Size(61, 41); + this.button15.TabIndex = 61; + this.button15.Tag = "0"; + this.button15.Text = "Y-"; + this.button15.UseVisualStyleBackColor = false; + this.button15.Click += new System.EventHandler(this.button15_Click_1); + // + // button16 + // + this.button16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.button16.Dock = System.Windows.Forms.DockStyle.Fill; + this.button16.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button16.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button16.Font = new System.Drawing.Font("맑은 고딕", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button16.ForeColor = System.Drawing.Color.Tomato; + this.button16.Location = new System.Drawing.Point(211, 200); + this.button16.Margin = new System.Windows.Forms.Padding(4); + this.button16.Name = "button16"; + this.button16.Size = new System.Drawing.Size(61, 41); + this.button16.TabIndex = 61; + this.button16.Tag = "0"; + this.button16.Text = "[R]"; + this.button16.UseVisualStyleBackColor = false; + this.button16.Click += new System.EventHandler(this.button16_Click_2); + // + // button17 + // + this.button17.Dock = System.Windows.Forms.DockStyle.Fill; + this.button17.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button17.ForeColor = System.Drawing.Color.Black; + this.button17.Location = new System.Drawing.Point(3, 248); + this.button17.Name = "button17"; + this.button17.Size = new System.Drawing.Size(63, 47); + this.button17.TabIndex = 62; + this.button17.Text = "L\r\nConv"; + this.button17.UseVisualStyleBackColor = true; + this.button17.Click += new System.EventHandler(this.button17_Click); + // + // button19 + // + this.button19.Dock = System.Windows.Forms.DockStyle.Fill; + this.button19.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button19.ForeColor = System.Drawing.Color.Black; + this.button19.Location = new System.Drawing.Point(210, 248); + this.button19.Name = "button19"; + this.button19.Size = new System.Drawing.Size(63, 47); + this.button19.TabIndex = 62; + this.button19.Text = "R\r\nConv"; + this.button19.UseVisualStyleBackColor = true; + this.button19.Click += new System.EventHandler(this.button19_Click); + // + // btLCyl + // + this.btLCyl.Dock = System.Windows.Forms.DockStyle.Fill; + this.btLCyl.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btLCyl.ForeColor = System.Drawing.Color.Black; + this.btLCyl.Location = new System.Drawing.Point(72, 248); + this.btLCyl.Name = "btLCyl"; + this.btLCyl.Size = new System.Drawing.Size(63, 47); + this.btLCyl.TabIndex = 63; + this.btLCyl.Text = "L\r\nCylinder"; + this.btLCyl.UseVisualStyleBackColor = true; + this.btLCyl.Click += new System.EventHandler(this.button20_Click); + // + // btRCyl + // + this.btRCyl.Dock = System.Windows.Forms.DockStyle.Fill; + this.btRCyl.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btRCyl.ForeColor = System.Drawing.Color.Black; + this.btRCyl.Location = new System.Drawing.Point(141, 248); + this.btRCyl.Name = "btRCyl"; + this.btRCyl.Size = new System.Drawing.Size(63, 47); + this.btRCyl.TabIndex = 63; + this.btRCyl.Text = "R\r\nCylinder"; + this.btRCyl.UseVisualStyleBackColor = true; + this.btRCyl.Click += new System.EventHandler(this.button21_Click); + // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(5, 182); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(286, 7); + this.panel2.TabIndex = 77; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.tableLayoutPanel1); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.groupBox3.ForeColor = System.Drawing.Color.WhiteSmoke; + this.groupBox3.Location = new System.Drawing.Point(5, 5); + this.groupBox3.Margin = new System.Windows.Forms.Padding(2); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(5, 3, 5, 5); + this.groupBox3.Size = new System.Drawing.Size(286, 177); + this.groupBox3.TabIndex = 76; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "PORT Z-MOTOR"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 4; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.Controls.Add(this.button12, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.button10, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.button38, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.button40, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.button13, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.button24, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.button1, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.button2, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.button7, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.button9, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.button11, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.button18, 2, 3); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(5, 19); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 4; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 24.99813F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(276, 153); + this.tableLayoutPanel1.TabIndex = 0; + // + // button12 + // + this.button12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button12.Dock = System.Windows.Forms.DockStyle.Fill; + this.button12.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button12.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button12.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button12.ForeColor = System.Drawing.Color.White; + this.button12.Location = new System.Drawing.Point(73, 80); + this.button12.Margin = new System.Windows.Forms.Padding(4); + this.button12.Name = "button12"; + this.button12.Size = new System.Drawing.Size(61, 30); + this.button12.TabIndex = 61; + this.button12.Tag = "1"; + this.button12.Text = "▼"; + this.button12.UseVisualStyleBackColor = false; + this.button12.Click += new System.EventHandler(this.button10_Click_1); + // + // button10 + // + this.button10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button10.Dock = System.Windows.Forms.DockStyle.Fill; + this.button10.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button10.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button10.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button10.ForeColor = System.Drawing.Color.White; + this.button10.Location = new System.Drawing.Point(4, 80); + this.button10.Margin = new System.Windows.Forms.Padding(4); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(61, 30); + this.button10.TabIndex = 60; + this.button10.Tag = "0"; + this.button10.Text = "▼"; + this.button10.UseVisualStyleBackColor = false; + this.button10.Click += new System.EventHandler(this.button10_Click_1); + // + // button38 + // + this.button38.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button38.Dock = System.Windows.Forms.DockStyle.Fill; + this.button38.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button38.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button38.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button38.ForeColor = System.Drawing.Color.White; + this.button38.Location = new System.Drawing.Point(73, 4); + this.button38.Margin = new System.Windows.Forms.Padding(4); + this.button38.Name = "button38"; + this.button38.Size = new System.Drawing.Size(61, 30); + this.button38.TabIndex = 57; + this.button38.Tag = "1"; + this.button38.Text = "▲"; + this.button38.UseVisualStyleBackColor = false; + this.button38.Click += new System.EventHandler(this.button40_Click); + // + // button40 + // + this.button40.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button40.Dock = System.Windows.Forms.DockStyle.Fill; + this.button40.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button40.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button40.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button40.ForeColor = System.Drawing.Color.White; + this.button40.Location = new System.Drawing.Point(4, 4); + this.button40.Margin = new System.Windows.Forms.Padding(4); + this.button40.Name = "button40"; + this.button40.Size = new System.Drawing.Size(61, 30); + this.button40.TabIndex = 55; + this.button40.Tag = "0"; + this.button40.Text = "▲"; + this.button40.UseVisualStyleBackColor = false; + this.button40.Click += new System.EventHandler(this.button40_Click); + // + // button13 + // + this.button13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button13.Dock = System.Windows.Forms.DockStyle.Fill; + this.button13.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button13.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button13.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button13.ForeColor = System.Drawing.Color.White; + this.button13.Location = new System.Drawing.Point(4, 42); + this.button13.Margin = new System.Windows.Forms.Padding(4); + this.button13.Name = "button13"; + this.button13.Size = new System.Drawing.Size(61, 30); + this.button13.TabIndex = 62; + this.button13.Tag = "0"; + this.button13.Text = "STOP"; + this.button13.UseVisualStyleBackColor = false; + this.button13.Click += new System.EventHandler(this.button13_Click_2); + // + // button24 + // + this.button24.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button24.Dock = System.Windows.Forms.DockStyle.Fill; + this.button24.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button24.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button24.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button24.ForeColor = System.Drawing.Color.White; + this.button24.Location = new System.Drawing.Point(73, 42); + this.button24.Margin = new System.Windows.Forms.Padding(4); + this.button24.Name = "button24"; + this.button24.Size = new System.Drawing.Size(61, 30); + this.button24.TabIndex = 62; + this.button24.Tag = "1"; + this.button24.Text = "STOP"; + this.button24.UseVisualStyleBackColor = false; + this.button24.Click += new System.EventHandler(this.button13_Click_2); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.ForeColor = System.Drawing.Color.White; + this.button1.Location = new System.Drawing.Point(142, 4); + this.button1.Margin = new System.Windows.Forms.Padding(4); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(61, 30); + this.button1.TabIndex = 57; + this.button1.Tag = "2"; + this.button1.Text = "▲"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button40_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button2.Dock = System.Windows.Forms.DockStyle.Fill; + this.button2.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button2.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button2.ForeColor = System.Drawing.Color.White; + this.button2.Location = new System.Drawing.Point(142, 42); + this.button2.Margin = new System.Windows.Forms.Padding(4); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(61, 30); + this.button2.TabIndex = 62; + this.button2.Tag = "2"; + this.button2.Text = "STOP"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button13_Click_2); + // + // button7 + // + this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button7.Dock = System.Windows.Forms.DockStyle.Fill; + this.button7.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button7.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button7.ForeColor = System.Drawing.Color.White; + this.button7.Location = new System.Drawing.Point(142, 80); + this.button7.Margin = new System.Windows.Forms.Padding(4); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(61, 30); + this.button7.TabIndex = 60; + this.button7.Tag = "2"; + this.button7.Text = "▼"; + this.button7.UseVisualStyleBackColor = false; + this.button7.Click += new System.EventHandler(this.button10_Click_1); + // + // button9 + // + this.button9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button9.Dock = System.Windows.Forms.DockStyle.Fill; + this.button9.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button9.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button9.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button9.ForeColor = System.Drawing.Color.White; + this.button9.Location = new System.Drawing.Point(4, 118); + this.button9.Margin = new System.Windows.Forms.Padding(4); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(61, 31); + this.button9.TabIndex = 60; + this.button9.Tag = "0"; + this.button9.Text = "MAG"; + this.button9.UseVisualStyleBackColor = false; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // button11 + // + this.button11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button11.Dock = System.Windows.Forms.DockStyle.Fill; + this.button11.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button11.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button11.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button11.ForeColor = System.Drawing.Color.White; + this.button11.Location = new System.Drawing.Point(73, 118); + this.button11.Margin = new System.Windows.Forms.Padding(4); + this.button11.Name = "button11"; + this.button11.Size = new System.Drawing.Size(61, 31); + this.button11.TabIndex = 60; + this.button11.Tag = "1"; + this.button11.Text = "MAG"; + this.button11.UseVisualStyleBackColor = false; + this.button11.Click += new System.EventHandler(this.button9_Click); + // + // button18 + // + this.button18.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70))))); + this.button18.Dock = System.Windows.Forms.DockStyle.Fill; + this.button18.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.button18.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button18.Font = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button18.ForeColor = System.Drawing.Color.White; + this.button18.Location = new System.Drawing.Point(142, 118); + this.button18.Margin = new System.Windows.Forms.Padding(4); + this.button18.Name = "button18"; + this.button18.Size = new System.Drawing.Size(61, 31); + this.button18.TabIndex = 60; + this.button18.Tag = "2"; + this.button18.Text = "MAG"; + this.button18.UseVisualStyleBackColor = false; + this.button18.Click += new System.EventHandler(this.button9_Click); + // + // Quick_Control + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15))))); + this.ClientSize = new System.Drawing.Size(300, 542); + this.Controls.Add(this.panBG); + this.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Quick_Control"; + this.Padding = new System.Windows.Forms.Padding(1); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Manual Operation"; + this.TopMost = true; + this.Load += new System.EventHandler(this.@__LoaD); + this.panBG.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Panel panel1; + public System.Windows.Forms.Panel panBG; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button button38; + private System.Windows.Forms.Button button40; + public System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Button button12; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button button13; + private System.Windows.Forms.Button button24; + private System.Windows.Forms.Panel panel2; + public System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Button button41; + private System.Windows.Forms.Button button44; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button11; + private System.Windows.Forms.Button button18; + private System.Windows.Forms.Button button51; + private System.Windows.Forms.Button button52; + private System.Windows.Forms.Button button53; + private System.Windows.Forms.Button button54; + private System.Windows.Forms.Button button57; + private System.Windows.Forms.Button button58; + private System.Windows.Forms.Button button59; + private System.Windows.Forms.Button button60; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button14; + private System.Windows.Forms.Button button15; + private System.Windows.Forms.Button button16; + private System.Windows.Forms.Button button17; + private System.Windows.Forms.Button button19; + private System.Windows.Forms.Button btLCyl; + private System.Windows.Forms.Button btRCyl; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/Quick_Control.cs b/Handler/Project/Dialog/Quick_Control.cs new file mode 100644 index 0000000..691f167 --- /dev/null +++ b/Handler/Project/Dialog/Quick_Control.cs @@ -0,0 +1,456 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project.Dialog +{ + public partial class Quick_Control : Form + { + public Quick_Control() + { + InitializeComponent(); + this.FormClosing += __Closing; + //this.lbTitle.MouseMove += LbTitle_MouseMove; + //this.lbTitle.MouseUp += LbTitle_MouseUp; + //this.lbTitle.MouseDown += LbTitle_MouseDown; + } + + void __Closing(object sender, FormClosingEventArgs e) + { + timer1.Stop(); + } + private void __LoaD(object sender, EventArgs e) + { + timer1.Start(); + //button31.Text = ((eAxis)0).ToString(); + //button32.Text = ((eAxis)1).ToString(); + //button33.Text = ((eAxis)2).ToString(); + } + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + private void button1_Click(object sender, EventArgs e) + { + if (PUB.mot.IsHomeSet((int)eAxis.Z_THETA) == false) + { + UTIL.MsgE("Cannot move because home search is not completed"); + return; + } + + var speed = 50.0; + if (PUB.Result != null && + PUB.Result.mModel != null && + PUB.Result.mModel.Title != "") + speed = 0;// Pub.Result.mModel.XSpeed; + + MOT.Move(eAxis.Z_THETA, 0, speed); + } + + private void timer1_Tick(object sender, EventArgs e) + { + //감지센서 상태 210208 + button5.BackColor = DIO.GetIOInput(eDIName.L_PICK_VAC) ? Color.Lime : Color.FromArgb(70, 70, 70); + button5.ForeColor = DIO.GetIOInput(eDIName.L_PICK_VAC) ? Color.Black : Color.White; + + button6.BackColor = DIO.GetIOInput(eDIName.R_PICK_VAC) ? Color.Lime : Color.FromArgb(70, 70, 70); + button6.ForeColor = DIO.GetIOInput(eDIName.R_PICK_VAC) ? Color.Black : Color.White; + + + btLCyl.BackColor = DIO.GetIOOutput(eDOName.L_CYLDN) ? Color.Black : Color.White; + btRCyl.BackColor = DIO.GetIOOutput(eDOName.R_CYLDN) ? Color.Black : Color.White; + + + + //메세지업데이트 230830 + var lcylup = DIO.GetIOInput(eDIName.L_CYLUP); + var lcyldn = DIO.GetIOInput(eDIName.L_CYLDN); + var rcylup = DIO.GetIOInput(eDIName.R_CYLUP); + var rcyldn = DIO.GetIOInput(eDIName.R_CYLDN); + btLCyl.Text = "L Cylinder\n" + (lcylup ? "(UP)" : (lcyldn ? "(DN)" : "--")); + btRCyl.Text = "R Cylinder\n" + (rcylup ? "(UP)" : (rcyldn ? "(DN)" : "--")); + + var Lconv = DIO.GetIOOutput(eDOName.LEFT_CONV); + var Rconv = DIO.GetIOOutput(eDOName.RIGHT_CONV); + button17.Text = "L Conveyor\n" + (Lconv ? "(RUN)" : "(STOP)"); + button19.Text = "R Conveyor\n" + (Rconv ? "(RUN)" : "(STOP)"); + button17.BackColor = Lconv ? Color.Lime : Color.White; + button19.BackColor = Rconv ? Color.Lime : Color.White; + + + } + + private void button20_Click_1(object sender, EventArgs e) + { + //button zero + var but = sender as Button; + var motidx = short.Parse(but.Tag.ToString()); + var axis = (eAxis)motidx; + + //전체 이동경로상 오류가 있으면 처리 하지 않는다. + var ermsg = new System.Text.StringBuilder(); + + if (PUB.mot.IsHomeSet((short)axis) == false) + { + ermsg.AppendLine("Home search is not completed for this axis"); + } + + + if (ermsg.Length > 0) + { + UTIL.MsgE("Cannot move\n" + ermsg.ToString()); + return; + } + + + var dlg = UTIL.MsgQ(string.Format("Do you want to move motion axis ({0}) to position 0?\n" + + "Position 0 is generally the home position", axis)); + if (dlg != DialogResult.Yes) return; + PUB.log.Add("user:move to zero axis=" + axis.ToString()); + PUB.mot.Move(motidx, 0); + } + + private void button16_Click_1(object sender, EventArgs e) + { + //button stop + var but = sender as Button; + var motidx = short.Parse(but.Tag.ToString()); + var axis = (eAxis)motidx; + + //var dlg = Util.MsgQ("모션 {0}({1}) 을 위치 '0'으로 이동 할까요?\n" + + // "경로 상 충돌가능성을 확인 한 후 실행하세요"); + //if (dlg != System.Windows.Forms.DialogResult.Yes) return; + + PUB.log.Add("user:motion stop axis=" + axis.ToString()); + PUB.mot.MoveStop("user stop", motidx); + } + + private void button3_Click(object sender, EventArgs e) + { + //ccw + var but = sender as Button; + var motidx = short.Parse(but.Tag.ToString()); + var axis = (eAxis)motidx; + PUB.log.Add("user:motion move -3.0 axis=" + axis.ToString()); + PUB.mot.Move(motidx, -3.0, true); + } + + private void button4_Click(object sender, EventArgs e) + { + //cw + var but = sender as Button; + var motidx = short.Parse(but.Tag.ToString()); + var axis = (eAxis)motidx; + PUB.log.Add("user:motion move +3.0 axis=" + axis.ToString()); + PUB.mot.Move(motidx, 3.0, true); + } + + private void button40_Click(object sender, EventArgs e) + { + var but = sender as Button; + var butindex = int.Parse(but.Tag.ToString()); + DIO.SetPortMotor(butindex, eMotDir.CW, true, "UC"); + } + + private void tbClose_Click_1(object sender, EventArgs e) + { + this.Close(); + } + + private void button10_Click_1(object sender, EventArgs e) + { + var but = sender as Button; + var butindex = int.Parse(but.Tag.ToString()); + DIO.SetPortMotor(butindex, eMotDir.CCW, true, "UC"); + } + + private void button13_Click_2(object sender, EventArgs e) + { + var but = sender as Button; + var butindex = int.Parse(but.Tag.ToString()); + DIO.SetPortMotor(butindex, eMotDir.CCW, false, "UC"); + } + + private void button41_Click(object sender, EventArgs e) + { + //front + var cur = DIO.GetIOOutput(eDOName.PICK_VAC1); + DIO.SetPickerVac(!cur, true); + } + + private void button39_Click(object sender, EventArgs e) + { + + } + + private void button44_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.SOL_AIR); + DIO.SetAIR(!cur); + } + + private void button9_Click(object sender, EventArgs e) + { + var but = sender as Button; + var butindex = int.Parse(but.Tag.ToString()); + Boolean current = false; + + if (butindex == 0) current = DIO.GetIOOutput(eDOName.PORTL_MAGNET); + else if (butindex == 1) current = DIO.GetIOOutput(eDOName.PORTC_MAGNET); + else current = DIO.GetIOOutput(eDOName.PORTR_MAGNET); + + DIO.SetPortMagnet(butindex, !current); + } + + private void button51_Click(object sender, EventArgs e) + { + var but = sender as Button; + var tagstr = but.Tag.ToString(); + if (tagstr == "1") + { + if (DIO.GetIOOutput(eDOName.PRINTL_VACI) == true) + DIO.SetPrintLVac(ePrintVac.off, true); + else + DIO.SetPrintLVac(ePrintVac.inhalation, true); + } + else if (tagstr == "2") + if (DIO.GetIOOutput(eDOName.PRINTL_VACO) == true) + DIO.SetPrintLVac(ePrintVac.off, true); + else + DIO.SetPrintLVac(ePrintVac.exhaust, true); + else + DIO.SetPrintLVac(ePrintVac.off, true); + } + + + + private void button53_Click(object sender, EventArgs e) + { + var but = sender as Button; + var tagstr = but.Tag.ToString(); + if (tagstr == "1") + { + if (DIO.GetIOOutput(eDOName.PRINTR_VACI) == true) + DIO.SetPrintRVac(ePrintVac.off, true); + else + DIO.SetPrintRVac(ePrintVac.inhalation, true); + } + else if (tagstr == "2") + if (DIO.GetIOOutput(eDOName.PRINTR_VACO) == true) + DIO.SetPrintRVac(ePrintVac.off, true); + else + DIO.SetPrintRVac(ePrintVac.exhaust, true); + else + DIO.SetPrintRVac(ePrintVac.off, true); + } + + private void button57_Click(object sender, EventArgs e) + { + //바닥바람 + var curvalu = DIO.GetIOOutput(eDOName.PRINTL_AIRON); + DIO.SetOutput(eDOName.PRINTL_AIRON, !curvalu); + } + + private void button58_Click(object sender, EventArgs e) + { + //바닥바람 + var curvalu = DIO.GetIOOutput(eDOName.PRINTR_AIRON); + DIO.SetOutput(eDOName.PRINTR_AIRON, !curvalu); + } + + private void button60_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.PRINTL_FWD); + if (cur == false) + { + var dlg = UTIL.MsgQ("Do you want to advance the printer (left) picker?"); //210209 + if (dlg != DialogResult.Yes) return; + + //준비위치에서는 전진하면 충돌한다 + var ReadyPos = MOT.GetLMPos(eLMLoc.READY); + if (MOT.getPositionMatch(ReadyPos)) + { + if (UTIL.MsgQ("There is a risk of collision at the current position. Do you want to proceed anyway?") != DialogResult.Yes) + return; + } + } + + DIO.SetOutput(eDOName.PRINTL_FWD, !cur); + } + + private void button59_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.PRINTR_FWD); + if (cur == false) + { + var dlg = UTIL.MsgQ("Do you want to advance the printer (right) picker?"); + if (dlg != DialogResult.Yes) return; + + //준비위치에서는 전진하면 충돌한다 + var ReadyPos = MOT.GetRMPos(eRMLoc.READY); + if (MOT.getPositionMatch(ReadyPos)) + { + if (UTIL.MsgQ("There is a risk of collision at the current position. Do you want to proceed anyway?") != DialogResult.Yes) + return; + } + } + DIO.SetOutput(eDOName.PRINTR_FWD, !cur); + } + + private void button3_Click_1(object sender, EventArgs e) + { + var rlt = PUB.PrinterL.TestPrint(AR.SETTING.Data.DrawOutbox, "ATK4EE1", ""); + var zpl = PUB.PrinterL.LastPrintZPL; + if (rlt.result == false) + PUB.log.AddE($"Temp Print L: {rlt.errmessage}" + PUB.PrinterL.LastPrintZPL); + else + PUB.log.Add("Temp Print L: " + PUB.PrinterL.LastPrintZPL); + } + + private void button4_Click_1(object sender, EventArgs e) + { + var rlt = PUB.PrinterR.TestPrint(AR.SETTING.Data.DrawOutbox, "ATK4EE1", ""); + var zpl = PUB.PrinterR.LastPrintZPL; + if (rlt.result == false) + PUB.log.AddE($"Temp Print R: {rlt.errmessage}" + PUB.PrinterR.LastPrintZPL); + else + PUB.log.Add("Temp Print R: " + PUB.PrinterR.LastPrintZPL); + } + + private void button15_Click(object sender, EventArgs e) + { + //왼쪽검증취소 + if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false) return; + var dlg = UTIL.MsgQ("Do you want to cancel LEFT-QR code verification?"); + if (dlg != DialogResult.Yes) return; + + PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, "CANCEL"); + PUB.flag.set(eVarBool.FG_PORTL_ITEMON, false, "CANCEL"); + PUB.flag.set(eVarBool.FG_END_VISIONL, false, "CANCEL"); + + /// PUB.sm.seq.Clear(eSMStep.RUN_VISION0); + //PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_VS0); + PUB.log.Add(string.Format("LEFT-QR verification ({0}) cancelled JGUID={1}", "L", PUB.Result.ItemDataL.guid)); + } + + private void button16_Click(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false) return; + var dlg = UTIL.MsgQ("Do you want to cancel RIGHT-QR code verification?"); + if (dlg != DialogResult.Yes) return; + + PUB.flag.set(eVarBool.FG_PRC_VISIONR, false, "CANCEL"); + PUB.flag.set(eVarBool.FG_PORTR_ITEMON, false, "CANCEL"); + PUB.flag.set(eVarBool.FG_END_VISIONR, false, "CANCEL"); + + //PUB.sm.seq.Clear(eSMStep.RUN_VISION2); + //PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_VS2); + PUB.log.Add(string.Format("RIGHT-QR verification ({0}) cancelled JGUID={1}", "R", PUB.Result.ItemDataR.guid)); + } + + private void button8_Click(object sender, EventArgs e) + { + //왼쪽 -5mm + var pos = MOT.GetLMPos(eLMLoc.READY); + MOT.Move(eAxis.PL_MOVE, -5, 100, 500, true, false, false);//, vel, acc, false, false, false); + } + + private void button14_Click(object sender, EventArgs e) + { + //왼쪽 Ready Position + var pos = MOT.GetLMPos(eLMLoc.READY); + MOT.Move(eAxis.PL_MOVE, pos.Position, 50, 200, false, false, false); + PUB.log.Add("user:PL_MOVE:to ready"); + } + + private void button15_Click_1(object sender, EventArgs e) + { + //오른쪽 -5mm + var pos = MOT.GetRMPos(eRMLoc.READY); + MOT.Move(eAxis.PR_MOVE, -5, 100, 500, false, false, false);// pos.Position + AR.SETTING.Data.MoveYForPaperVaccumeValue, vel, acc, false, false, false); + } + + private void button16_Click_2(object sender, EventArgs e) + { + //오른쪽 Ready Position + var pos = MOT.GetRMPos(eRMLoc.READY); + MOT.Move(eAxis.PR_MOVE, pos.Position, 50, 200, false, false, false); + PUB.log.Add("user:pr_move:to ready"); + } + + private void button17_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.LEFT_CONV); + DIO.SetOutput(eDOName.LEFT_CONV, !cur); + } + + private void button19_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.RIGHT_CONV); + DIO.SetOutput(eDOName.RIGHT_CONV, !cur); + } + + private void button20_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.L_CYLDN); + if (cur == false) + { + //내려도되는지 검사해야한다. + if (PUB.mot.IsHomeSet((int)eAxis.PL_MOVE)) + { + var pos = MOT.GetLMPos(eLMLoc.READY); + if (MOT.getPositionMatch(pos)) + { + PUB.log.AddE($"Cannot lower cylinder (L) because it is at standby position"); + } + } + } + DIO.SetOutput(eDOName.L_CYLDN, !cur); + } + + private void button21_Click(object sender, EventArgs e) + { + var cur = DIO.GetIOOutput(eDOName.R_CYLDN); + if (cur == false) + { + //내려도되는지 검사해야한다. + if (PUB.mot.IsHomeSet((int)eAxis.PR_MOVE)) + { + var pos = MOT.GetRMPos(eRMLoc.READY); + if (MOT.getPositionMatch(pos)) + { + PUB.log.AddE($"Cannot lower cylinder (R) because it is at standby position"); + } + } + } + DIO.SetOutput(eDOName.R_CYLDN, !cur); + } + } +} diff --git a/Handler/Project/Dialog/Quick_Control.resx b/Handler/Project/Dialog/Quick_Control.resx new file mode 100644 index 0000000..bd8b88b --- /dev/null +++ b/Handler/Project/Dialog/Quick_Control.resx @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA + AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgaZsA5C1 + fwOTuIIDkbaAA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3 + gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3 + gQOSt4EDkreBA5G2gAOTuIIDkLV/A4GmbAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAfaJmBAAAAAB6n2IdfaJmkoescoeIrnSDh61zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit + c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit + c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIetc4SIrnSDh6xyh32iZpJ6n2IdAAAAAH2i + ZgQAAAAAAAAAAAAAAAAAAAAAiKx0BwAAAACApWk1ia52/6DElP+kyJn9osaW/qLGl/+ixpf/osaX/6LG + l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LG + l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGlv6kyJn9oMSU/4mu + dv+ApWk1AAAAAIisdAcAAAAAAAAAAAAAAAAAAAAAl7uIBgAAAACIrXQrmr6M47/ivf3E58P8weS/+sLk + wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvB5MD7wuTA+8Lk + wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8Hk + v/rE58P8v+K9/Zq+jOOIrXQrAAAAAJe7iAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uH67nc + tf++4bz+u964/bzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf6837n+vN+5/rveuP2+4bz+udy1/5e7h+uHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAA + AACHq3Isl7uI67rdtv+/4r3/vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf694Lr+vN+5/r3guv694Lr+vN+5/rzfuf694Lr+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJS4hAYAAAAAAAAAAAAA + AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+837n/veC6/73guv+73rf/weO//7ndtf+z163/weTA/7zfuf+837n/veC6/7zfuf+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5 + hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g + uv+94Lr/veC6/7zfuf+94Lr/vN+5/7veuP/C5MH/stet/6bHm/+oxpz/qc6h/7/ivf++4bz/u964/73g + uv+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7 + iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g + uv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vd+5/8Djvv+02bD/p8ic/8LTt//R3cn/q8ef/67R + p/+94bv/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf + uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd + tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/7fasv+mx5v/xte8//b4 + 9P/9/f3/3ObW/6zHoP+u0qf/veG7/77hvP+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA + AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv++4bz/uNu0/6XH + mv/I2b7/9Pfy/////////////f39/9zm1v+tyKD/rtGm/7/ivf+94Lr/vN+5/7zfuf+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA + AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/8Hj + v/+22bH/o8SX/83exv/2+fX///////39/P/+/f3///////7+/f/h69z/rsmh/6nNn//C5cH/vN+4/7zf + uf+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5 + hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g + uv+837j/wuTA/7LXrf+nx5z/zNvE//b49P//////+/v6/8bWvP+uxaH/7vLr//7+/v/+////4Oja/7LK + pv+ozJ//wuXB/73guv+837n/veC6/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7 + iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g + uv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rLoP/C1Lj//Pz7///////4+ff/zNvF/6fInP+kyJr/uM6t/+zw + 6P/+/v7///7//+Do2v+yy6f/qc2h/7/ivf++4bz/u964/73guv+837n/veC6/73guv+94Lr/veC6/7zf + uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd + tv+/4r3/vN+5/r3guv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rKn//C07j//v7+//z8+//N28T/qMec/7ba + sv/B47//p8qd/7nOrv/q8Of///////7+/v/g6dv/rcih/63Rpf+94bv/v+K9/7veuP+94Lr/vN+5/73g + uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA + AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+73rj/wuXB/7HVq/+pyJ7/z97I/9Pg + zf+ryZ//stas/8LkwP+94Lr/vuG8/6PGmP+90rT/6/Dn///////8/fv/3+rb/6/Ko/+u0ab/vOC5/7/h + vP+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA + AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/7/j + vf+53LX/o8SY/6PFmP+53LX/wOO+/7veuP+837n/veC6/8Djvv+lyZv/uc+v/+rv5////////f79/+bs + 4f+tx6H/rNCl/8Djvv+837n/vN+5/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5 + hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g + uv+94Lr/vN+5/73guv+84Lr/ut22/7rdtv+84Lr/veC6/7zfuf+837n/veC6/73guv+/4rz/p8ue/7bO + q//r8ej///////7+/v/l7OH/ssun/6jNoP/B47//vN+5/7zfuf+94Lr/veC6/7zfuf6/4r3/ut22/5e7 + iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uI67rdtv+/4r3/vN+5/r3g + uv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/77hvP+94Lr/vN+5/73guv+94Lr/vN+5/7zf + uf+/4bz/vOC5/6jLnv+zy6j/7/Ps///////09vL/tcup/6PImf/C5MD/vN+5/7zfuf+94Lr/veC6/7zf + uf6/4r3/ut22/5e7iOuHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3MsmLuI57rd + tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vN+5/7zfuf+837n/veC6/7zf + uf+837n/veC6/73guv+73rj/weO//7ndtf+qzKH/uc6t/9bhzv/A07b/sM+n/7fbs/++4Lv/vN+5/7zf + uf+94Lr/veC6/7zfuf6/4r3/ut22/5i7iOeHq3MsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAk7eDBgAA + AACGqnEwlbmG9rrdtv+/4r3+vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/u963/8Djvv+94Lr/qMqe/6vHnv+nyJv/ttqy/8Hk + v/+83rj/veC6/73guv+94Lr/veC6/7zfuf6/4r3+ut22/5W5hvaGqnEwAAAAAJO3gwYAAAAAAAAAAAAA + AAAAAAAAkraCBwAAAACFqnI1lLiF/7nctf+/4r39vN+4/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+94Lr/veC6/73guv+837n/veC6/7zfuf+837n/vN+5/7zfuf+837n/veC6/7veuP++4Lv/wOK+/7HV + q/+94Lr/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/7zfuP6/4r39udy1/5S4hf+FqnI1AAAAAJK2 + ggcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv+84Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+837n/vN+5/73gu/+837n/vN+5/73guv+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7 + iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACHrXU0lruI/7ndtv+/4r39vN+5/r3g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Ln/veC6/73guv+837n/vN+5/7zfuf+94Lv/vuG8/77h + vP+94Lv/vN+5/7zfuf+837n/veC6/73guv+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf + uf6/4r39ud22/5a7iP+HrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nd + tv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/vN+5/7zfuf+837n/weS//7zf + uf+sz6P/oMWW/6DFlv+sz6T/vN+5/8Hkv/+837n/vN+5/7zfuf+94Lr/veC6/7zfuf+94Lr/veC6/73g + uv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAA + AACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+837n/veC6/77h + u/+63bf/qMyg/5vBkP+awpD/mMGP/5fBj/+awpH/m8GQ/6jMn/+63rf/vuG7/73guv+837n/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5hQcAAAAAAAAAAAAA + AAAAAAAAlLmFBwAAAACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/7zf + uf+837n/veC5/7rdtv+kyJr/krmF/5G7h/+ZxJL/n8qa/57Kmv+ZxJL/kbqG/5K5hf+kyZr/ut23/7zg + uf+84Ln/vN+5/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5 + hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nctf+/4r39u9+4/rzfuf+837n/vN+5/7zf + uf+837n/vN+5/7zfuP++4bv/vN+5/6XJm/+QuIL/mMOR/6POoP+eyZn/nciY/57ImP+eyZn/o86g/5jD + kf+QuIP/psmd/7zfuf++4bv/vN+4/7zfuf+837n/vN+5/7zfuf+837n/vN+5/7vfuP6/4r39udy1/5a7 + h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7rdtv/A4779vN+5/r3g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv/A4r7/uNu0/4+1gP+Yw5H/oMyd/53Hl/+dyJj/nciY/53I + mP+dyJj/nceX/6DMnf+Yw5H/j7WA/7nbtf/A4r7/vOC5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf + uf7A4779ut22/5a7iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmGBwAAAACIrnY0l7yJ/7ve + uP/B5MD9veG7/r7hvP++4bz/vuG8/77hvP++4bz/vuG7/8Djvv+837n/qc6h/5S9iv+axZT/n8qb/53I + mP+eyZn/nsmZ/57Jmf+eyZn/nciY/5/Km/+axZT/lLyJ/6rOof+837n/wOO+/77hu/++4bz/vuG8/77h + vP++4bz/vuG8/77hu/7B5MD9u964/5e8if+IrnY0AAAAAJS5hgcAAAAAAAAAAAAAAAAAAAAAh6tyBwAA + AACApGk1iKx0/53BkP+hxZX9n8OT/6DElP+gxJT/oMSU/6DElP+gxJT/n8OT/6LGl/+avo3/i7F7/5nE + kv+eyZn/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+eyZn/mcOS/4uxev+avo3/osaX/5/D + k/+gxJT/oMSU/6DElP+gxJT/oMSU/5/Dk/+gxJX9ncGQ/4isdP+ApGk1AAAAAIercwcAAAAAAAAAAAAA + AAAAAAAAia12BgAAAAB9oWYtjK957qrOov+iyZr+mMCO/pjBj/6YwY//mMGP/5jBj/+YwY//mMGP/5nC + kP+Wv4z/kruI/5zHl/+eyZn/nciY/53ImP+eyZn/nsmZ/57Jmf+eyZn/nciY/53ImP+eyZr/nMiX/5K7 + h/+Wv4z/mcKQ/5jBj/+YwY//mMGP/5jBj/+YwY//mMGP/pjBjv6jypr+qs6i/4yvee59oWUtAAAAAImt + dQYAAAAAAAAAAAAAAAAAAAAAjbJ8BQAAAAB1mlwhkraCwr/ivf613LT/os2e/Z7Kmv+gy5z/n8ub/5/L + m/+fy5v/n8ub/5/Lm/+gy5z/ocye/57Jmf+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+dyJj/nsmZ/6HMnv+gy5z/n8ub/5/Lm/+fy5v/n8ub/5/Lm/+gy5z/nsqa/6LNnv223LT/v+K9/pK2 + gcJ1mlwhAAAAAI6yfAUAAAAAAAAAAAAAAAAAAAAAgadsAwAAAABTfC8Phqxzfq7Sp/W427T/p8+i/JrG + lf6eyZn/nciY/53ImP+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/nciY/57JmP+eyZn/nsmZ/57J + mf+eyZn/nsmY/53ImP+eyZn/nciY/53Il/+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/msaV/qfP + ovy427P/rtGm9YetdH1UfDIPAAAAAIKobQMAAAAAAAAAAAAAAAAAAAAAAAAAANT33wEAAAAAfKFlIpe7 + itm32bH/r9ar/ZvGlf6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/m8aV/q/Wq/232bH/lruH2XimZiEAAAAA1efOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyw + ewMAAAAAdZpeComtd7S016/9tty0/6HLnP2dyJj+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+dyJj+ocuc/bfdtP+01679ia11tXWaWwoAAAAAjLB5AwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIOpcAIAAAAAWYE6BX6kaXyv0afuut23/6nRpfubx5b/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bx5b/qdGk+7rdtv+u0abugKRqeluAOwUAAAAAhalxAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebWySbv47GtNau/7LYsPubx5b+nsmZ/p7I + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciZ/57Jmf6bx5b+stiv+7PWrf+bv43FeppfIwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMs3wBAAAAAAAAAACDq3GgrNGl/7vg + uf6gypv9nsmZ/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/57Jmf+gypv9u+C5/q3Q + pf+FqXCfAAAAAAAAAACOsnwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIq3IBAAAAAAAA + AAB7oWR0qM2f6Lzguf+q0aX8nciX/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/53I + l/+q0qX8u+C5/6nNoOd8oGZzAAAAAAAAAACIqnMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABojlAoncGRuLPWrf+02rH6nMeX/pzIl/6dyJj+nciY/p3ImP6dyJj+nciY/p3I + mP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I + mP6dyJj+nMiX/pzHl/602rH6s9at/53BkbhpjEsnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJm6iAIAAAAAh6x0f6bJm/+74Lr8oMqc/pvHlv6bx5b+nMeW/pzH + lv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzH + lv6cx5b+nMeW/pzHlv6bx5b+m8eW/qDLnP674Lr8psmb/4esdH8AAAAAmbqIAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIisdQIAAAAAd5xfZaHElebF6MX8u9+5+brf + uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrf + uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rvgufnF6MX8ocSV5necXmQAAAAAiKx0AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+obAEAAAAAapRRJpG3 + gamixpb/qMuf/KnMn/6py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nL + n/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcyf/qjLn/yixpb/kbaBqGuS + UCUAAAAAgKdsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACet4sCAAAAAH2lZ0KGq3KVjrN+ho6yfYiNsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6y + fYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiNsn2IjrJ9iI6z + foaGq3KVfqRoQgAAAACWuoQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIatcgGQtX8DmLyKA5i8igOXu4kDmLyKA5i8 + igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8 + igOYvIoDmLyKA5i8igOXu4kDmLyKA5i8igOQtX8DhqxzAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///////wAA////////AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA + AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf + AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA + AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf + AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAD8AAPwA + AAAAPwAA/gAAAAB/AAD+AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/4AAAAH/ + AAD/gAAAAf8AAP/AAAAD/wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/pGgBAAAAAHugZE6DqG1jhKpvW4Spbl2EqW5dhKluXYSp + bl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSp + bl2EqW5dhKpvW4OobWN7oGROAAAAAH+kaAEAAAAAAAAAAJq+jQQAAAAAjbF7vqjLnv+s0KP7qs6h/qvO + ov+rzqL/q86i/6vOov+rzqL/q86i/6vOov+qzqL/qs6i/6vOov+rzqL/q86i/6vOov+rzqL/q86i/6vO + ov+rzqL/q86i/6rOof6s0KP7qMue/42xe74AAAAAmr6NBAAAAAAAAAAArM+jBAAAAACZvYqtveC6/8Ll + wfjA4777weO//MDjv/vA47/7weO/+8Djv/vB47/7wOO++8Hjv/vA4777weO/+8Hjv/vB47/7wOO/+8Dj + v/vA47/7wOO/+8Djv/vB47/8wOO++8Llwfi94Lr/mb2KrQAAAACsz6MEAAAAAAAAAACny54EAAAAAJa6 + hrK427P/veC6+7ret/673rj+u964/rveuP673rf+u964/rrdt/6937r+u9+4/r3guv673rj+u963/rve + t/673rj+u964/rveuP673rj+u964/rveuP663rf+veC6+7jbs/+WuoayAAAAAKfLngQAAAAAAAAAAKjM + nwQAAAAAlrqHsbnctf++4bz7vN+5/r3guv+94Lr+veC6/7zfuf+73rj/vuG8/7ndtv+oyp7/rdCl/77i + vP+837r/vN+5/7zfuv+94Lr/veC6/73guv+94Lr+veC6/7zfuf6+4bz7udy1/5a6h7EAAAAAqMyfBAAA + AAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+veC6/7zfuf6837n+u964/r/hvP643bX+qsqg/tXf + zf7C1Lj+q8+j/r/ivf6837n+vN+5/r3guv6837n+vN+5/rzfuf694Lr/vN+5/r7hu/u53LT/lrqHsQAA + AACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG8+7zfuf694Lr/vN+5/rveuP+/4bz/uNy1/6vL + of/b5dX///////n6+f/C1bn/q8+j/7/ivf+837n/vN+5/73guv+94Lr/vN+5/r3guv+837n+vuG8+7nc + tP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnctP++4bz7vN+5/r3guv+837j+vuG8/7jc + tf+qyaD/3+nb///////n7eP/9ff0//3+/f/F17v/q86h/7/jvf+837n/vN+5/7zfuf+94Lr+veC6/7zf + uf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+vN+5/73f + uv663rf/q8uh/+Ho2///////4ure/6TEmf+50K//9/j1//39/f/G1r3/q86j/7/ivf+837r/vN+4/7zf + uf694Lr/vN+5/r7hvPu53LT/lrqHsQAAAACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG7+7zf + uf6837n/vd+6/rret/+qyaD/5uzh/+ju5P+ryaD/u9+5/7DUqv+5z6//+Pn3//39/P/D1rr/q8+j/77i + vP+837n/vN+5/r3guv+837n+vuG8+7nctP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnc + tP++4bz7vN+5/r3guv+837j+vuG7/7jdtf+tzKT/rsyl/7ndtf++4Lv/v+K9/6/TqP+70bH/9ffz//3+ + /f/H177/rM+k/7/ivP+83rj+veC6/7zfuf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAA + AACWuoexudy0/77hu/u837n+veC6/7zfuf673rj/vuG7/7ndtv+53bb/vuG7/7veuP+837n/wOO+/67T + qP+40K7/9vn1///////A0rb/q9Ck/8Djvv673rj/vN+5/r7hu/u53LT/lrqHsQAAAACozJ8EAAAAAAAA + AACpzJ8EAAAAAJe6h6+53LX/vuG8+7zfuf694Lr/vN+5/rzfuf+837j/veC6/73gu/+837j/vN+5/7zf + uf+83rj/wOO+/63Spv+90rP/3+fY/7jRr/+z167/vuG8/rvfuP+837n+vuG8+7nctf+XuoevAAAAAKnM + nwQAAAAAAAAAAKfKngQAAAAAlLiFu7jbtP++4bv6vN+5/r3guv+94Lr+vN+5/7zguv+837n/vN+5/73f + uv+837n/vN+4/7veuP+73rj/wOO+/7LUq/+oyJz/tdiw/7/ivf+73rj+veC6/7zfuf6+4bv6uNu0/5S4 + hbsAAAAAp8qeBAAAAAAAAAAApsudBAAAAAGUuYbBuNu0/77hu/q837n/veC6/rzfuf694Lr/veC5/73g + uv+84Lr/u964/7zfuf++4bz/vuG8/7zfuf+73rj/vuG8/7vfuf++4bv/u964/7zfuf694Lr+vN+5/77h + u/q427T/lLmGwQAAAAGmy50EAAAAAAAAAACny50EAAAAAJW7h8G43LT/vuG8+rzfuf+94Lr+vN+5/rzf + uf+837n/vN+5/7veuP+/4rz/vuC7/7XYsP+12LD/veC7/7/ivf+73rj/vd+6/7zfuf+837n/veC6/r3g + uv6837n/vuG8+rjctP+Vu4fBAAAAAKfLnQQAAAAAAAAAAKfLnQQAAAAAlbqGwbjctP++4bz6vN+5/73g + uv694Lr+veC6/7zfuf+837n/vuG7/7LWrf+ix5j/mcGP/5nBkP+ix5j/stas/77hu/+837n/vN+5/7zf + uf+94Lr+veC6/rzfuf++4bz6uNy0/5W6hsEAAAAAp8udBAAAAAAAAAAAp8ucBAAAAACVuobBt9uz/73g + u/q73rj/vN+4/rzfuP673rj/u963/73guv+u0qf/k7uH/5XAjv+dyJj/nciY/5XAjf+Tu4f/r9Ko/73g + uv+73rf/u964/7zfuP6837j+u964/73gu/q327P/lbqGwQAAAACny5wEAAAAAAAAAACozKAEAAAAAJa7 + iMG73rf/wOO/+r7hu/++4bz/vuG8/r7hu//A477/vN64/5O6h/+axpX/oMuc/53Hl/+dx5f/oMuc/5rG + lf+Uuof/vN65/8Djvv++4bv/vuG8/r7hvP++4bv/wOO/+rvet/+Wu4jBAAAAAKjMnwQAAAAAAAAAAKDE + lAQAAAABkbWBwa/SqP+22bH6tNeu/7TXr/6016//tNeu/7bZsf+jx5n/lb+N/57Jmv+cx5f/nciY/53I + mP+cx5f/nsma/5W/jP+jx5n/ttmx/7TXrv+016//tNev/rTXrv+22bH6r9Ko/5G2gcEAAAABn8SVBAAA + AAAAAAAAl7uIBAAAAACKrXe5ocaX/5rBkPqYv43+mMCO/5jAjf6YwI7/mMCO/5C4hP+bxpb/nciY/53I + mP+dyJj/nciY/53ImP+dyJj/m8eW/5C4g/+YwI7/mMCO/5jAjf6YwI7/mL+N/prCkPqhxpf/iq13uQAA + AACXu4kEAAAAAAAAAACny58DAAAAAJC0f4i43LX/qNGl+5zIl/6eypr/ncmZ/p3Jmf+eyZn/n8qc/53I + mP+dyJj/nsmY/57Jmf+eyZn/nsmY/53ImP+dyJj/n8qb/57Jmf+dyZn/ncmZ/p7Kmv+cyJf+qNGl+7nc + tf+QtH6HAAAAAKjMngMAAAAAAAAAAJa7iQEAAAAAdZxeLKfKneix163/m8aV/Z7Imf+dyJj+nciY/53I + mP+dyJj/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+dyJj/nciY/53ImP+dyJj+nsiZ/5vG + lf2x163/psmb6HSeXiwAAAAAlryIAQAAAAAAAAAAAAAAAAAAAAAAAAADmLuKvbjctf+hy5z7nMiX/p7J + mf+eyZn+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/p7J + mf+cyJf+ocuc+7jctf+Yu4m9AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAu924AgAAAACNsntlsdOq/arS + p/yaxpX9nsmZ/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I + mP6dyJj+nsmZ/prGlf2q0qb8sNOp/I6yfGQAAAAAt9yzAgAAAAAAAAAAAAAAAAAAAACBqG0CAAAAAGWP + Syiix5jntduz/5zHl/yeyJn/nsmZ/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf6eyJn/nMeX/LXbs/+jxpjnZ4xKKAAAAACDp20CAAAAAAAAAAAAAAAAAAAAAHSZ + WwEAAAAABC4AB5q/jZ+12bD/oMqb+5jEk/6bxpX+msaV/prGlf6axpX+msaV/prGlf6axpX+msaV/prG + lf6axpX+msaV/prGlf6axpX+m8aV/pjEk/6gy5v7tdmw/5u/jp4CJgAHAAAAAHSYWwEAAAAAAAAAAAAA + AAAAAAAAAAAAAIqudwIAAAAAfqNoWK7Rpv+027T6pM6g+6fRo/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQ + o/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQo/un0KP7pM6g+7TctPqu0ab/fqNoWAAAAACKrncCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAeaBjAQAAAABnj0wmncGQz6/SqP+v0qf9r9Gn/6/Rp/+v0af/r9Gn/6/R + p/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0qf9r9Ko/53BkM9njUolAAAAAHqf + YgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8o2Y+iK12Zoywe12Lr3pfjK96X4yv + el+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfi696X4ywe12IrXZmfaNmPgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////gAAAH4AAAB+AAAAfgAAAH4AAAB+AA + AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA + AAfwAAAP8AAAD/gAAB/4AAAf+AAAH/wAAD/8AAA///////////8oAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH2iZxiGq3E8iK1zNoesczeHrHM3h6xyN4arcTeHrHM3h6xzN4es + czeHrHM3iK1zNoarcTx9omcYAAAAAAAAAACUuIRer9Oo/7TXrvaz1q35s9at+bTXrvm12LD5s9at+bPW + rfmz1q35s9at+bTXrvav06j/lLiEXgAAAAAAAAAAm7+NXbrdtv+/4r77vuG7/r/ivf+737j/stas/73h + u/+/4b3/vuG8/77hvP6/4r77ut22/5u/jV0AAAAAAAAAAJm9i12427P/veC6+73guv623LP+wNq5/ubs + 4f631rH+ud63/r3guv6837n+veC7+7jbs/+ZvYtdAAAAAAAAAACZvYtduNu0/77hvPu43bX+wdq7/u3x + 6f7a5tX+6/Dn/rjWsf653rb+veC6/r3gu/u427T/mb2LXQAAAAAAAAAAmb2LXbjbtP++4bz7uN21/sLa + vP7F3L//rdSn/87gyf/t8er/vNm3/rret/6+4bv7uNu0/5m9i10AAAAAAAAAAJm9i12427T/veC7+73g + uv653bX+uN21/7/ivf+y2K3/z+HJ/9PgzP6z2K/+v+K9+7jbs/+ZvYtdAAAAAAAAAACXvIpjt9uz/77h + u/u837n/veC6/r7gu/++4bv/wOO+/7fbs/+117D+veC6/77hu/u327P/l7yKYwAAAAAAAAAAmL2KZbfa + s/+94Lv7u9+4/73guv663bb/qs+k/6rPo/+73rj/vuG7/rveuP+94Lv7t9qz/5i9imUAAAAAAAAAAJi9 + i2W53LX/wOK++7/hvP+937n+nsWV/5nEk/+ZxJL/nsWV/73fuf6/4bz/wOK++7nctf+YvYtlAAAAAAAA + AACTtoJlp8yf/6fNoPupzqH/oceY/pnEk/+fypr/n8qa/5nEk/+hx5j+qM6h/6fNoPuozJ//k7aCZQAA + AAAAAAAAkbN/NKjOovubx5b/msaV/pvHlv6eyJn+nciY/p3ImP6eyZn+m8eW/prGlf6bx5b/qM6i+5G0 + fjQAAAAAAAAAAAAAAACpzaHBpM2g/53ImPyeyZn+nsmZ/p7Jmf6eyZn+nsmZ/p7Jmf6dyJj8pM2f/6nN + oMEAAAAAAAAAAKvPowMAAAAAn8OTcKnRpf+bx5b8ncmY/p3ImP+dyJj/nciY/53ImP+dyJj+m8eW/KnR + pf+gwpNvAAAAAKvPowOMsXsBAAAAAIKlayKozaDrqc+j/ajOofmozqH6qM6h+qjOofqozqH6qM6h+anP + o/2ozaDqgqVrIgAAAACNsXsBAAAAAAAAAAAAAAAAiq93LZq7ijuauok4mrqJOZq6iTmauok5mrqJOZq6 + iTiau4o7iq53LQAAAAAAAAAAAAAAAP//AADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD + AADAAwAAwAMAAMADAADgBwAA4AcAAP//AAA= + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/RegExRule.Designer.cs b/Handler/Project/Dialog/RegExRule.Designer.cs new file mode 100644 index 0000000..207266c --- /dev/null +++ b/Handler/Project/Dialog/RegExRule.Designer.cs @@ -0,0 +1,561 @@ +namespace Project.Dialog +{ + partial class RegExRule + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RegExRule)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + this.bn = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DataSet1(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.component_Reel_RegExRuleBindingNavigatorSaveItem = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.btCopy = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.dv1 = new System.Windows.Forms.DataGridView(); + this.dvcModelName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.IsIgnore = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewCheckBoxColumn2 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.dataGridViewCheckBoxColumn3 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tbPattern = new System.Windows.Forms.TextBox(); + this.tbGroups = new System.Windows.Forms.TextBox(); + this.cmbBCDTestBox = new System.Windows.Forms.ComboBox(); + this.btBcdTest = new System.Windows.Forms.Button(); + this.ta = new Project.DataSet1TableAdapters.K4EE_Component_Reel_RegExRuleTableAdapter(); + this.tam = new Project.DataSet1TableAdapters.TableAdapterManager(); + this.label3 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.cmbModelList = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit(); + this.bn.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // bn + // + this.bn.AddNewItem = this.bindingNavigatorAddNewItem; + this.bn.BindingSource = this.bs; + this.bn.CountItem = this.bindingNavigatorCountItem; + this.bn.DeleteItem = this.bindingNavigatorDeleteItem; + this.bn.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.bindingNavigatorAddNewItem, + this.bindingNavigatorDeleteItem, + this.component_Reel_RegExRuleBindingNavigatorSaveItem, + this.toolStripButton1, + this.btCopy, + this.toolStripButton2}); + this.bn.Location = new System.Drawing.Point(0, 609); + this.bn.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bn.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bn.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bn.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bn.Name = "bn"; + this.bn.PositionItem = this.bindingNavigatorPositionItem; + this.bn.Size = new System.Drawing.Size(967, 25); + this.bn.TabIndex = 0; + this.bn.Text = "bindingNavigator1"; + // + // bindingNavigatorAddNewItem + // + this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image"))); + this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"; + this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(65, 22); + this.bindingNavigatorAddNewItem.Text = "Add(&A)"; + // + // bs + // + this.bs.DataMember = "K4EE_Component_Reel_RegExRule"; + this.bs.DataSource = this.dataSet1; + this.bs.Sort = "CustCode,Seq"; + this.bs.CurrentChanged += new System.EventHandler(this.bs_CurrentChanged); + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(26, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total item count"; + // + // bindingNavigatorDeleteItem + // + this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image"))); + this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"; + this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(76, 22); + this.bindingNavigatorDeleteItem.Text = "Delete(&D)"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move to first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move to previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move to next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move to last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // component_Reel_RegExRuleBindingNavigatorSaveItem + // + this.component_Reel_RegExRuleBindingNavigatorSaveItem.Image = ((System.Drawing.Image)(resources.GetObject("component_Reel_RegExRuleBindingNavigatorSaveItem.Image"))); + this.component_Reel_RegExRuleBindingNavigatorSaveItem.Name = "component_Reel_RegExRuleBindingNavigatorSaveItem"; + this.component_Reel_RegExRuleBindingNavigatorSaveItem.Size = new System.Drawing.Size(65, 22); + this.component_Reel_RegExRuleBindingNavigatorSaveItem.Text = "Save(&S)"; + this.component_Reel_RegExRuleBindingNavigatorSaveItem.Click += new System.EventHandler(this.component_Reel_RegExRuleBindingNavigatorSaveItem_Click); + // + // toolStripButton1 + // + this.toolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton1.Image = global::Project.Properties.Resources.arrow_refresh_small; + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(81, 22); + this.toolStripButton1.Text = "Refresh(&R)"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // btCopy + // + this.btCopy.Image = global::Project.Properties.Resources.copy; + this.btCopy.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btCopy.Name = "btCopy"; + this.btCopy.Size = new System.Drawing.Size(71, 22); + this.btCopy.Text = "Copy(&C)"; + this.btCopy.Click += new System.EventHandler(this.btCopy_Click); + // + // toolStripButton2 + // + this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(98, 22); + this.toolStripButton2.Text = "Export List(&O)"; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); + // + // dv1 + // + this.dv1.AllowUserToAddRows = false; + this.dv1.AutoGenerateColumns = false; + this.dv1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dvcModelName, + this.dataGridViewCheckBoxColumn1, + this.IsIgnore, + this.dataGridViewTextBoxColumn1, + this.dataGridViewTextBoxColumn2, + this.dataGridViewTextBoxColumn5, + this.dataGridViewTextBoxColumn4, + this.dataGridViewCheckBoxColumn2, + this.dataGridViewCheckBoxColumn3}); + this.dv1.DataSource = this.bs; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle4.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle4.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv1.DefaultCellStyle = dataGridViewCellStyle4; + this.dv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv1.Location = new System.Drawing.Point(0, 27); + this.dv1.Name = "dv1"; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(967, 380); + this.dv1.TabIndex = 2; + // + // dvcModelName + // + this.dvcModelName.DataPropertyName = "CustCode"; + this.dvcModelName.HeaderText = "Model Name"; + this.dvcModelName.Name = "dvcModelName"; + this.dvcModelName.Visible = false; + // + // dataGridViewCheckBoxColumn1 + // + this.dataGridViewCheckBoxColumn1.DataPropertyName = "IsEnable"; + this.dataGridViewCheckBoxColumn1.HeaderText = "Enable"; + this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1"; + // + // IsIgnore + // + this.IsIgnore.DataPropertyName = "IsIgnore"; + this.IsIgnore.HeaderText = "Except"; + this.IsIgnore.Name = "IsIgnore"; + // + // dataGridViewTextBoxColumn1 + // + this.dataGridViewTextBoxColumn1.DataPropertyName = "Id"; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle1; + this.dataGridViewTextBoxColumn1.HeaderText = "ID"; + this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; + this.dataGridViewTextBoxColumn1.ReadOnly = true; + // + // dataGridViewTextBoxColumn2 + // + this.dataGridViewTextBoxColumn2.DataPropertyName = "Seq"; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.dataGridViewTextBoxColumn2.DefaultCellStyle = dataGridViewCellStyle2; + this.dataGridViewTextBoxColumn2.HeaderText = "Order"; + this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; + // + // dataGridViewTextBoxColumn5 + // + this.dataGridViewTextBoxColumn5.DataPropertyName = "Symbol"; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.dataGridViewTextBoxColumn5.DefaultCellStyle = dataGridViewCellStyle3; + this.dataGridViewTextBoxColumn5.HeaderText = "Type"; + this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5"; + // + // dataGridViewTextBoxColumn4 + // + this.dataGridViewTextBoxColumn4.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn4.DataPropertyName = "Description"; + this.dataGridViewTextBoxColumn4.HeaderText = "Description"; + this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4"; + // + // dataGridViewCheckBoxColumn2 + // + this.dataGridViewCheckBoxColumn2.DataPropertyName = "IsTrust"; + this.dataGridViewCheckBoxColumn2.HeaderText = "Trust"; + this.dataGridViewCheckBoxColumn2.Name = "dataGridViewCheckBoxColumn2"; + // + // dataGridViewCheckBoxColumn3 + // + this.dataGridViewCheckBoxColumn3.DataPropertyName = "IsAmkStd"; + this.dataGridViewCheckBoxColumn3.HeaderText = "AmkStd"; + this.dataGridViewCheckBoxColumn3.Name = "dataGridViewCheckBoxColumn3"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 122F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.tbPattern, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.tbGroups, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.cmbBCDTestBox, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.btBcdTest, 0, 2); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 430); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(967, 179); + this.tableLayoutPanel1.TabIndex = 4; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Location = new System.Drawing.Point(3, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(116, 76); + this.label1.TabIndex = 0; + this.label1.Text = "Pattern"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Location = new System.Drawing.Point(3, 76); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(116, 76); + this.label2.TabIndex = 0; + this.label2.Text = "Groups"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbPattern + // + this.tbPattern.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Pattern", true)); + this.tbPattern.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbPattern.Font = new System.Drawing.Font("Consolas", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbPattern.ForeColor = System.Drawing.Color.Black; + this.tbPattern.Location = new System.Drawing.Point(125, 3); + this.tbPattern.Multiline = true; + this.tbPattern.Name = "tbPattern"; + this.tbPattern.Size = new System.Drawing.Size(839, 70); + this.tbPattern.TabIndex = 1; + // + // tbGroups + // + this.tbGroups.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bs, "Groups", true)); + this.tbGroups.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbGroups.Font = new System.Drawing.Font("Consolas", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbGroups.ForeColor = System.Drawing.Color.Black; + this.tbGroups.Location = new System.Drawing.Point(125, 79); + this.tbGroups.Multiline = true; + this.tbGroups.Name = "tbGroups"; + this.tbGroups.Size = new System.Drawing.Size(839, 70); + this.tbGroups.TabIndex = 1; + // + // cmbBCDTestBox + // + this.cmbBCDTestBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmbBCDTestBox.Location = new System.Drawing.Point(125, 155); + this.cmbBCDTestBox.Name = "cmbBCDTestBox"; + this.cmbBCDTestBox.Size = new System.Drawing.Size(839, 20); + this.cmbBCDTestBox.TabIndex = 2; + // + // btBcdTest + // + this.btBcdTest.Dock = System.Windows.Forms.DockStyle.Fill; + this.btBcdTest.Location = new System.Drawing.Point(3, 155); + this.btBcdTest.Name = "btBcdTest"; + this.btBcdTest.Size = new System.Drawing.Size(116, 21); + this.btBcdTest.TabIndex = 3; + this.btBcdTest.Text = "Test"; + this.btBcdTest.Click += new System.EventHandler(this.btBcdTest_Click); + // + // ta + // + this.ta.ClearBeforeFill = true; + // + // tam + // + this.tam.BackupDataSetBeforeUpdate = false; + this.tam.K4EE_Component_Reel_CustInfoTableAdapter = null; + this.tam.K4EE_Component_Reel_PreSetTableAdapter = null; + this.tam.K4EE_Component_Reel_Print_InformationTableAdapter = null; + this.tam.K4EE_Component_Reel_RegExRuleTableAdapter = this.ta; + this.tam.K4EE_Component_Reel_ResultTableAdapter = null; + this.tam.K4EE_Component_Reel_SID_ConvertTableAdapter = null; + this.tam.K4EE_Component_Reel_SID_InformationTableAdapter = null; + this.tam.UpdateOrder = Project.DataSet1TableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete; + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label3.Location = new System.Drawing.Point(0, 407); + this.label3.Name = "label3"; + this.label3.Padding = new System.Windows.Forms.Padding(3, 3, 0, 0); + this.label3.Size = new System.Drawing.Size(967, 23); + this.label3.TabIndex = 5; + this.label3.Text = "Barcode Type 1: QR, 2:DataMatrix, 11: Code 39 || GROPS Item : SID,VLOT,VNAME,RID," + + "MFG,QTY"; + // + // panel1 + // + this.panel1.Controls.Add(this.cmbModelList); + this.panel1.Controls.Add(this.label4); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(967, 27); + this.panel1.TabIndex = 6; + // + // cmbModelList + // + this.cmbModelList.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmbModelList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbModelList.Font = new System.Drawing.Font("굴림", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.cmbModelList.Location = new System.Drawing.Point(116, 0); + this.cmbModelList.Name = "cmbModelList"; + this.cmbModelList.Size = new System.Drawing.Size(851, 27); + this.cmbModelList.TabIndex = 3; + this.cmbModelList.SelectedIndexChanged += new System.EventHandler(this.cmbModelList_SelectedIndexChanged); + // + // label4 + // + this.label4.Dock = System.Windows.Forms.DockStyle.Left; + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(116, 27); + this.label4.TabIndex = 1; + this.label4.Text = "Model"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // RegExRule + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(967, 634); + this.Controls.Add(this.dv1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.label3); + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.bn); + this.Name = "RegExRule"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "RegExRule"; + this.Load += new System.EventHandler(this.RegExRule_Load); + ((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit(); + this.bn.ResumeLayout(false); + this.bn.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private DataSet1 dataSet1; + private System.Windows.Forms.BindingSource bs; + private DataSet1TableAdapters.K4EE_Component_Reel_RegExRuleTableAdapter ta; + private DataSet1TableAdapters.TableAdapterManager tam; + private System.Windows.Forms.BindingNavigator bn; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.ToolStripButton component_Reel_RegExRuleBindingNavigatorSaveItem; + private System.Windows.Forms.DataGridView dv1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tbPattern; + private System.Windows.Forms.TextBox tbGroups; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cmbBCDTestBox; + private System.Windows.Forms.Button btBcdTest; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox cmbModelList; + private System.Windows.Forms.ToolStripButton btCopy; + private System.Windows.Forms.DataGridViewTextBoxColumn dvcModelName; + private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1; + private System.Windows.Forms.DataGridViewCheckBoxColumn IsIgnore; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4; + private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn2; + private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn3; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/RegExRule.cs b/Handler/Project/Dialog/RegExRule.cs new file mode 100644 index 0000000..d520990 --- /dev/null +++ b/Handler/Project/Dialog/RegExRule.cs @@ -0,0 +1,367 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class RegExRule : Form + { + string bcdteststring = ""; + public RegExRule() + { + InitializeComponent(); + this.dv1.BorderStyle = BorderStyle.None; + this.dataSet1.K4EE_Component_Reel_RegExRule.TableNewRow += (s1, e1) => + { + if (PUB.Result.isSetvModel) + e1.Row["CustCode"] = PUB.Result.vModel.Title; + }; + dataGridViewTextBoxColumn1.Visible = false; + + //모델목록을 업데이트한다. + cmbModelList.Items.Clear(); + foreach (var dr in PUB.mdm.dataSet.OPModel.OrderBy(t => t.Title)) + cmbModelList.Items.Add(dr.Title); + cmbModelList.Items.Add("ALL"); + + //현재 선택된 모델을 자동선택한다. + cmbModelList.Text = PUB.Result.vModel.Title; + this.KeyPreview = true; + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) this.Close(); + }; + + LoadSaveBCDtestData(); + } + + void LoadSaveBCDtestData(bool load = true) + { + var fn = "bcdtestlist.txt"; + if (load) + { + this.cmbBCDTestBox.Items.Clear(); + if (System.IO.File.Exists(fn)) + { + bcdteststring = System.IO.File.ReadAllText(fn, System.Text.Encoding.Default).Replace("\r", ""); + var lines = bcdteststring.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var lin in lines) + { + this.cmbBCDTestBox.Items.Add(lin); + } + } + else + { + this.cmbBCDTestBox.Items.Add($"101415540;LC15848629;TAIYOYUDEN;20000;RC18091A2526JMN;20250215"); + } + } + else + { + //save + var sb = new System.Text.StringBuilder(); + foreach (string item in this.cmbBCDTestBox.Items) + sb.AppendLine(item); + System.IO.File.WriteAllText(fn, sb.ToString(), System.Text.Encoding.Default); + } + + } + + private void RegExRule_Load(object sender, EventArgs e) + { + if (cmbModelList.SelectedIndex == -1 && cmbModelList.Items.Count > 0) + cmbModelList.SelectedIndex = 0; + } + + private void component_Reel_RegExRuleBindingNavigatorSaveItem_Click(object sender, EventArgs e) + { + this.Validate(); + this.bs.EndEdit(); + var cnt1 = this.ta.Update(this.dataSet1.K4EE_Component_Reel_RegExRule); + //var cnt = this.tam.UpdateAll(this.dataSet1); + if (cnt1 == 0) + { + UTIL.MsgE("No content has been saved"); + } + else UTIL.MsgI($"{cnt1} records have been saved"); + lock (PUB.Result.BCDPatternLock) + { + var modelName = PUB.Result.vModel.Title; + PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false); + PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true); + PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}"); + } + + dv1.AutoResizeColumns(); + } + + private void RefreshList(string cust) + { + try + { + + if (cust == "ALL") + { + dvcModelName.Visible = true; + this.ta.FillAll(this.dataSet1.K4EE_Component_Reel_RegExRule); + } + else + { + dvcModelName.Visible = false; + this.ta.FillByWithSample(this.dataSet1.K4EE_Component_Reel_RegExRule, cust); + } + + foreach (DataGridViewRow drow in this.dv1.Rows) + { + var drv = drow.DataBoundItem as DataRowView; + if (drv == null) continue; + var dr = drv.Row as DataSet1.K4EE_Component_Reel_RegExRuleRow; + if (dr.IsCustCodeNull() || dr.CustCode.isEmpty()) + drow.DefaultCellStyle.BackColor = Color.DimGray; + else + drow.DefaultCellStyle.BackColor = Color.WhiteSmoke; + } + + } + catch (System.Exception ex) + { + System.Windows.Forms.MessageBox.Show(ex.Message); + } + dv1.AutoResizeColumns(); + + } + + private void toolStripButton1_Click(object sender, EventArgs e) + { + var title = cmbModelList.Text; + if (title.isEmpty()) title = PUB.Result.vModel.Title; + RefreshList(title); + } + + private void bs_CurrentChanged(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.K4EE_Component_Reel_RegExRuleRow; + } + + private void toolStripButton2_Click(object sender, EventArgs e) + { + try + { + DataSet1 ds1 = new DataSet1(); + this.ta.FillAll(ds1.K4EE_Component_Reel_RegExRule); + + var path = UTIL.MakePath("Export", "BarcodeRule.xml"); + var fi = new System.IO.FileInfo(path); + if (fi.Directory.Exists == false) fi.Directory.Create(); + ds1.K4EE_Component_Reel_RegExRule.WriteXml(path); + UTIL.MsgI($"Export list File = {path},count={ds1.K4EE_Component_Reel_RegExRule.Count}"); + } + catch (System.Exception ex) + { + System.Windows.Forms.MessageBox.Show(ex.Message); + } + } + + private void btBcdTest_Click(object sender, EventArgs e) + { + + var bcd = cmbBCDTestBox.Text.Trim(); + + + //없는 문자라면 신규로 테스트한다. + if (cmbBCDTestBox.Items.Contains(bcd) == false) + cmbBCDTestBox.Items.Add(bcd); + + //test + LoadSaveBCDtestData(false); + + var sb = new System.Text.StringBuilder(); + var idx = 0; + foreach (DataSet1.K4EE_Component_Reel_RegExRuleRow dr in this.dataSet1.K4EE_Component_Reel_RegExRule) + { + var pattern = dr.Pattern;// tbPattern.Text.Trim(); + var grps = dr.Groups;// tbGroups.Text.Trim(); + + if (dr.IsEnable == false) + { + sb.AppendLine($"####{++idx} {dr.Description} - disble"); + continue; + } + + var regx = new Regex(pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10)); + if (regx.IsMatch(bcd)) + { + sb.AppendLine($"####{++idx} {dr.Description}"); + var matchs = regx.Matches(bcd); + + foreach (System.Text.RegularExpressions.Match mat in matchs) + { + + var grpstr = this.tbGroups.Text.Trim().Split(','); + foreach (var matchdata in grpstr) + { + var grpname = matchdata.Split('=')[0]; + var grpno = matchdata.Split('=')[1].toInt(); + if (grpno <= mat.Groups.Count) + { + var data = mat.Groups[grpno]; + sb.AppendLine($"{grpname}={data.Value}"); + } + } + } + } + else + { + sb.AppendLine($"####{++idx} {dr.Description} - No Pattern\n{pattern}"); + } + } + + UTIL.MsgI(sb.ToString()); + + + } + + private void cmbModelList_SelectedIndexChanged(object sender, EventArgs e) + { + var title = cmbModelList.Text; + if (title.isEmpty()) title = PUB.Result.vModel.Title; + RefreshList(title); + } + + private string ChoiceModelName() + { + var cmb = new ComboBox(); + cmb.Items.Clear(); + foreach (var dr in PUB.mdm.dataSet.OPModel.OrderBy(t => t.Title)) + cmb.Items.Add(dr.Title); + + using (var f = new Form()) + { + var lb = new Label() + { + Text = "Select Model", + Dock = DockStyle.Top + }; + var pan = new Panel() + { + Dock = DockStyle.Bottom, + Height = 50, + }; + var butok = new Button + { + Text = "OK", + Width = 160, + Dock = DockStyle.Fill, + }; + var butng = new Button + { + Text = "Cancel", + Width = 160, + Dock = DockStyle.Right, + }; + butok.Click += (s1, e1) => + { + f.DialogResult = DialogResult.OK; + }; + butng.Click += (s1, e1) => + { + f.DialogResult = DialogResult.Cancel; + }; + + pan.Controls.Add(butok); + pan.Controls.Add(butng); + + cmb.DropDownStyle = ComboBoxStyle.DropDownList; + cmb.Dock = DockStyle.Top; + f.StartPosition = FormStartPosition.CenterScreen; + f.Width = 320; + f.Height = 160; + f.Text = "Select Model"; + f.MinimizeBox = false; + f.MaximizeBox = false; + f.Padding = new Padding(10); + f.Controls.Add(pan); + f.Controls.Add(cmb); + f.Controls.Add(lb); + + if (f.ShowDialog() == DialogResult.OK) + { + return cmb.Text; + } + else return string.Empty; + } + + + + } + + private void btCopy_Click(object sender, EventArgs e) + { + try + { + var drv = this.bs.Current as DataRowView; + if (drv == null) + { + UTIL.MsgE("Please select an item to copy."); + return; + } + + var sourceRow = drv.Row as DataSet1.K4EE_Component_Reel_RegExRuleRow; + if (sourceRow == null) return; + + var inputDialog = ChoiceModelName(); // AR.UTIL.InputBox("Input ModelName", sourceRow.IsCustCodeNull() ? "" : sourceRow.CustCode); + if (inputDialog.isEmpty()) return; + var newModelName = inputDialog; + + //var inputDialog2 = AR.UTIL.InputBox("Input Description", sourceRow.IsDescriptionNull() ? "" : sourceRow.Description); + //if (inputDialog2.Item1 == false) return; + var newDescription = sourceRow.IsDescriptionNull() ? "" : sourceRow.Description;// inputDialog2.Item2; + + var tacheck = new DataSet1TableAdapters.K4EE_Component_Reel_RegExRuleTableAdapter(); + if (tacheck.CheckExsist(newModelName, newDescription) > 0) + { + UTIL.MsgE("Name already exists"); + return; + } + + if (this.dataSet1.K4EE_Component_Reel_RegExRule.Where(t => t.CustCode.Equals(newModelName) && t.Description.Equals(newDescription)).Count() > 0) + { + UTIL.MsgE("Name already exists"); + return; + } + + + var newRow = this.dataSet1.K4EE_Component_Reel_RegExRule.NewK4EE_Component_Reel_RegExRuleRow(); + + newRow.CustCode = newModelName; + newRow.Pattern = sourceRow.IsPatternNull() ? "" : sourceRow.Pattern; + newRow.Groups = sourceRow.IsGroupsNull() ? "" : sourceRow.Groups; + newRow.Description = newDescription; + newRow.IsEnable = sourceRow.IsEnable; + newRow.IsIgnore = sourceRow.IsIgnore; + newRow.Seq = sourceRow.Seq; + newRow.Symbol = sourceRow.Symbol; + newRow.IsTrust = sourceRow.IsTrust; + newRow.IsAmkStd = sourceRow.IsAmkStd; + this.dataSet1.K4EE_Component_Reel_RegExRule.AddK4EE_Component_Reel_RegExRuleRow(newRow); + + this.bs.MoveLast(); + UTIL.MsgI($"[{newModelName}-{newDescription}] Rule has been copied successfully."); + } + catch (System.Exception ex) + { + UTIL.MsgE($"Error occurred during copying: {ex.Message}"); + } + } + } +} diff --git a/Handler/Project/Dialog/RegExRule.resx b/Handler/Project/Dialog/RegExRule.resx new file mode 100644 index 0000000..d8d0244 --- /dev/null +++ b/Handler/Project/Dialog/RegExRule.resx @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 316, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + 117, 17 + + + 17, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo + dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAL2SURBVDhPhZLrS1NhHMf3Kv+EsF70UohScmFRL0pTmxrY + zVTUvM0pmprowiBTppF5CU1UqBCl6EWFqOnUpuac0w1nZNpS8zov4GVOdzlHd8789pyz4QyEfvDhefGc + 74fz+54j4CboiTLhRrlGEV6h2Qou1lDkpHkquVNLh5cP06Ev1BOXparq0xEfj/GhwxPybFC1bqY3VzZM + rNG6C6PFzaaZg8bvVTMK2gyIrZi0iTLlHq6oc8JK1etrxh12eMEO7SIDrYGBZoGBen4Pyj+76NJbscsA + 7ZMUCloWkfxqgvpHElzUS+3Y9jC6xOL7EkNOBiO8ZA8DM7v4qrcRgQOjqyy0K3aUyA0IeNz3gQ9HVfrP + 3SuO2JfU3UFy7V3UdjehuLkSAYXe8CeISi4hSOaHqvYqfhULzWDNZEOQdIDhBZHlAZ/7xjvQMf0WtZo8 + XhJfE4q893HIaoqGuP4mkuqT0D62ho4JC7783ME26SlYNkjzAlG1yCNUls1qpvrxblyGMmUmL0moCyPh + W0h7nQrVjJVfpXeagoL0YLLaEVw85BRwE1I6QOc0JEI3o0a99hGe9+QiqvIaEmoioFuwQUeK5QpWzTo7 + MRJBkOyQ4MrTQvuF/FOIqxZhdHYYJf3pkMlzEP0yEE3KVvxYZqAjxQ7P2zFEWDfbEVDkEvhKPSVC6Ulk + NcYgti4EMVXXeUmOPA7S5lTyJoHg7kcNLEa4T0wwkyL9ctVOgVB6fFkoPUEe8oQwzxO3ywKR8SYRKr0C + JYp8pH9KhLguEjoi0JJ/Q0MEtN0B32yle4WruYP06jaNsWWWZ2BqBQ8b0pBCgpL6aOQ2Pji447DtsfDJ + lrsFQmJbMroF/8NKVvBJbXMLLuZ8s+kNm/tHPXwUJrPVcTa+3eKKkyLTeuYWd2xm/dKWY26Dwtw6hRkX + GxY7D9e8hWaxYbI4KIra9rrf+csVFwjOp3Vn+Ii7es5JFEYfSSt9QIoT75QWJ+IW2kvcaTqT1NnrnShP + FggEgr9Ef6FyBTeROAAAAABJRU5ErkJggg== + + + + True + + + 181, 17 + + + 243, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/RegExTest.Designer.cs b/Handler/Project/Dialog/RegExTest.Designer.cs new file mode 100644 index 0000000..c9de091 --- /dev/null +++ b/Handler/Project/Dialog/RegExTest.Designer.cs @@ -0,0 +1,142 @@ +namespace Project.Dialog +{ + partial class RegExTest + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RegExTest)); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.rtLog = new System.Windows.Forms.RichTextBox(); + this.SuspendLayout(); + // + // richTextBox1 + // + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.richTextBox1.Location = new System.Drawing.Point(0, 0); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(800, 224); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = resources.GetString("richTextBox1.Text"); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Top; + this.button1.Location = new System.Drawing.Point(0, 245); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(800, 52); + this.button1.TabIndex = 1; + this.button1.Text = "Run List"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox1 + // + this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.textBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.textBox1.Location = new System.Drawing.Point(0, 224); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(800, 21); + this.textBox1.TabIndex = 2; + this.textBox1.Text = "\\b(\\d{9});(\\w+)\\b"; + this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // textBox2 + // + this.textBox2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.textBox2.Dock = System.Windows.Forms.DockStyle.Top; + this.textBox2.Location = new System.Drawing.Point(0, 297); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(800, 21); + this.textBox2.TabIndex = 3; + this.textBox2.Text = "5000"; + this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Top; + this.button2.Location = new System.Drawing.Point(0, 318); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(800, 52); + this.button2.TabIndex = 4; + this.button2.Text = "Run"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // progressBar1 + // + this.progressBar1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.progressBar1.Location = new System.Drawing.Point(0, 550); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(800, 23); + this.progressBar1.TabIndex = 5; + // + // rtLog + // + this.rtLog.BackColor = System.Drawing.Color.Silver; + this.rtLog.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtLog.Location = new System.Drawing.Point(0, 370); + this.rtLog.Name = "rtLog"; + this.rtLog.Size = new System.Drawing.Size(800, 180); + this.rtLog.TabIndex = 6; + this.rtLog.Text = ""; + // + // RegExTest + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 573); + this.Controls.Add(this.rtLog); + this.Controls.Add(this.progressBar1); + this.Controls.Add(this.button2); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.richTextBox1); + this.Name = "RegExTest"; + this.Text = "RegExTest"; + this.Load += new System.EventHandler(this.RegExTest_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.RichTextBox rtLog; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/RegExTest.cs b/Handler/Project/Dialog/RegExTest.cs new file mode 100644 index 0000000..271c796 --- /dev/null +++ b/Handler/Project/Dialog/RegExTest.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using AR; + +namespace Project.Dialog +{ + public partial class RegExTest : Form + { + Regex regex = null; + + public RegExTest() + { + InitializeComponent(); + } + + private void RegExTest_Load(object sender, EventArgs e) + { + + + } + + private void button1_Click(object sender, EventArgs e) + { + bool retval = false; + + + //이 데이터가 정규식에 match 가되는지 확인하.ㄴㄷ + var ucnt = 0; + var MatchEx = textBox1.Text.Trim(); + var lines = this.richTextBox1.Text.Replace("\r", "").Split('\n'); + foreach (var line in lines) + { + var vdata = line.Split(':')[1]; + if (vdata.isEmpty()) continue; + + + regex = new Regex(MatchEx); //한글 3글자 + if (regex.IsMatch(vdata)) + { + var MatchIndex = 0; + var GroupIndex = 0; + var matchlist = regex.Matches(vdata); + var match0 = matchlist[MatchIndex]; + var grpval = match0.Groups[GroupIndex].Value; + var result = grpval.Trim(); + //if (dr.ReplaceEx.isEmpty() == false && dr.ReplaceStr.isEmpty() == false) + //{ + // regex = new Regex(dr.ReplaceEx); + // if (regex.IsMatch(result)) result = regex.Replace(result, dr.ReplaceStr); + //} + //ucnt += 1; + //switch (dr.varName) + //{ + // case "QTY0": + // vdata.QTY0 = result; + // vdata.QTYRQ = vdata.StartsWith("RQ"); + // break; + // case "SID": + // vdata.SID = result; + // break; + // case "LOT": + // vdata.VLOT = result; + // break; + // case "PART": + // vdata.PARTNO = result; + // break; + // case "MFGDATE": + // vdata.MFGDATE = result; + // break; + // case "QTY": + // vdata.QTY = result; + // break; + // default: + // ucnt -= 1; + // PUB.log.AddAT($"RegEx 대상 VarName을 찾을 수 없습니다. 값:{dr.varName}"); + // break; + //} + } + } + + } + + private void button2_Click(object sender, EventArgs e) + { + var pattern = textBox1.Text.Trim(); + try + { + regex = new Regex(pattern); //한글 3글자 + if (regex.IsMatch(textBox2.Text.Trim())) + { + setlog("match"); + } + else setlog($"no match\npattern:{pattern}\nValue:{textBox2.Text}"); + } + catch (Exception ex) + { + setlog(ex.Message); + } + } + void addlog(string m) + { + this.rtLog.AppendText(m + "\r\n"); + } + void setlog(string m) + { + this.rtLog.Text = m; + } + } +} diff --git a/Handler/Project/Dialog/RegExTest.resx b/Handler/Project/Dialog/RegExTest.resx new file mode 100644 index 0000000..72e40f0 --- /dev/null +++ b/Handler/Project/Dialog/RegExTest.resx @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11:101410655; 0459497206:1202 / 569:1305 / 643:1300 / 651:1195 / 579:1250 / 610 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1444 / 712 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1443 / 712 +11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1193 / 1064:1186 / 1074:1008 / 944:1102 / 1001 +11:045949720600000500002003AJ1001W: 997 / 993:1138 / 1108:1126 / 1124:986 / 1009:1062 / 1059 +11:101410655:1235 / 517:1300 / 550:1287 / 569:1212 / 551:1258 / 547 +11:101410655:1233 / 521:1300 / 550:1287 / 569:1212 / 551:1258 / 548 +11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1194 / 1063:1186 / 1073:1009 / 943:1103 / 1000 +11:045949720600000500002003AJ1001W: 997 / 992:1138 / 1109:1127 / 1124:987 / 1008:1062 / 1058 +11:04594972060003:1353 / 704:1420 / 755:1408 / 771:1340 / 723:1380 / 738 +11:101410655; 0459497206:1205 / 562:1304 / 644:1300 / 651:1194 / 577:1251 / 608 +11:045949720600000500002003AJ1001W: 999 / 992:1138 / 1108:1126 / 1124:986 / 1009:1062 / 1058 +11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 920:1193 / 1064:1179 / 1084:1008 / 942:1101 / 1003 +11:101410655:1235 / 517:1300 / 550:1286 / 570:1228 / 527:1262 / 541 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 751:1405 / 719:1443 / 712 +11:045949720600000500002003AJ1001W: 999 / 994:1138 / 1109:1126 / 1125:988 / 1009:1063 / 1059 +11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1194 / 1064:1186 / 1073:1009 / 943:1103 / 1001 +11:101410655; 0459497206:1206 / 563:1305 / 643:1299 / 652:1195 / 578:1252 / 609 +11:04594972060003:1351 / 706:1419 / 754:1408 / 771:1324 / 745:1376 / 744 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1443 / 712 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1437 / 673:1482 / 705:1450 / 752:1405 / 719:1444 / 712 +11:RM TMK021 CG1R9BK - W JDQ 1:1022 / 920:1193 / 1063:1186 / 1074:1007 / 942:1102 / 1000 +11:045949720600000500002003AJ1001W: 998 / 994:1138 / 1109:1126 / 1125:988 / 1008:1063 / 1059 +11:0459497206:1226 / 534:1271 / 579:1244 / 614:1211 / 553:1238 / 570 +11:045949720600000500002003AJ1001W: 997 / 992:1138 / 1109:1127 / 1123:986 / 1007:1062 / 1058 +11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1194 / 1064:1186 / 1074:1009 / 943:1103 / 1001 +11:045949720600000500002003AJ1001W: 999 / 995:1138 / 1108:1127 / 1124:988 / 1010:1063 / 1059 +11:045949720600000500002003AJ1001W: 997 / 993:1138 / 1108:1126 / 1124:986 / 1009:1062 / 1059 +11:RM TMK021 CG1R9BK - W JDQ 1:1023 / 922:1195 / 1062:1186 / 1073:1009 / 943:1103 / 1000 +11:101410655; 0459497206:1202 / 566:1306 / 640:1299 / 650:1197 / 574:1251 / 607 +11:04594972060003:1334 / 711:1401 / 762:1396 / 768:1313 / 740:1361 / 746 +11:0459497206:1197 / 527:1244 / 573:1239 / 581:1187 / 543:1217 / 556 +11:RM TMK021 CG1R9BK - W JDQ 1:980 / 906:1151 / 1049:1143 / 1059:972 / 918:1062 / 983 +11:04594972060003:1300 / 701:1367 / 751:1361 / 759:1295 / 708:1330 / 729 +11:045949720600000500002003AJ1001W: 940 / 972:1079 / 1089:1066 / 1105:929 / 988:1003 / 1038 +11:101410655; 0459497206:1194 / 552:1291 / 636:1284 / 646:1178 / 576:1237 / 603 +11:045949720600000500002003AJ1001W: 953 / 979:1092 / 1094:1080 / 1110:943 / 993:1017 / 1044 +11:RM TMK021 CG1R9BK - W JDQ 1:957 / 888:1123 / 1036:1113 / 1049:943 / 907:1034 / 970 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1413 / 663:1458 / 696:1425 / 742:1380 / 710:1419 / 703 +11:04594972060003:1331 / 711:1407 / 749:1395 / 768:1326 / 718:1365 / 737 +11:RM TMK021 CG1R9BK - W JDQ 1:1011 / 917:1181 / 1059:1168 / 1076:1001 / 932:1090 / 996 +11:045949720600000500002003AJ1001W: 983 / 990:1123 / 1108:1112 / 1123:973 / 1005:1048 / 1056 +11:101410655; 0459497206:1189 / 565:1300 / 630:1287 / 648:1183 / 573:1240 / 604 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1424 / 670:1469 / 702:1437 / 749:1392 / 716:1431 / 709 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1424 / 670:1469 / 702:1437 / 749:1392 / 716:1431 / 709 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 917:1182 / 1059:1172 / 1071:1001 / 932:1092 / 995 +11:045949720600000500002003AJ1001W: 984 / 992:1125 / 1104:1112 / 1122:973 / 1006:1049 / 1056 +11:20200328:1334 / 712:1372 / 759:1358 / 778:1310 / 744:1343 / 748 +11:04594972060003:1340 / 701:1402 / 759:1395 / 769:1329 / 716:1367 / 736 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 918:1181 / 1059:1172 / 1071:1002 / 932:1092 / 995 +11:045949720600000500002003AJ1001W: 985 / 992:1125 / 1105:1113 / 1122:970 / 1011:1048 / 1058 +11:101410655; 0459497206:1190 / 568:1293 / 643:1287 / 652:1183 / 578:1238 / 610 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 671:1470 / 703:1438 / 749:1392 / 717:1431 / 710 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 924:1183 / 1064:1174 / 1076:1003 / 937:1093 / 1000 +11:045949720600000500002003AJ1001W: 986 / 997:1124 / 1114:1113 / 1128:972 / 1016:1049 / 1064 +11:04594972060003:1342 / 711:1407 / 764:1399 / 775:1323 / 738:1368 / 747 +11:101410655; 0459497206:1190 / 575:1299 / 644:1289 / 658:1185 / 583:1241 / 615 +11:101410655; 0459497206:1193 / 574:1302 / 641:1289 / 658:1186 / 584:1243 / 614 +11:RM TMK021 CG1R9BK - W JDQ 1:1014 / 926:1186 / 1066:1177 / 1078:999 / 949:1094 / 1005 +11:045949720600000500002003AJ1001W: 989 / 1000:1128 / 1113:1118 / 1127:978 / 1014:1053 / 1063 +11:04594972060003:1337 / 713:1407 / 752:1395 / 778:1323 / 733:1365 / 744 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1426 / 672:1471 / 705:1438 / 751:1393 / 719:1432 / 712 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 672:1470 / 704:1437 / 751:1393 / 719:1431 / 711 +11:045949720600000500002003AJ1001W: 984 / 992:1124 / 1107:1111 / 1123:973 / 1006:1048 / 1057 +11:RM TMK021 CG1R9BK - W JDQ 1:1006 / 910:1173 / 1058:1164 / 1071:990 / 931:1083 / 993 +11:RM TMK021 CG1R9BK - W JDQ 1:1000 / 927:1173 / 1061:1164 / 1073:991 / 939:1082 / 1000 +11:045949720600000500002003AJ1001W: 985 / 992:1122 / 1109:1111 / 1123:970 / 1012:1047 / 1059 +11:04594972060003:1335 / 712:1402 / 760:1395 / 771:1327 / 722:1365 / 741 +11:101410655; 0459497206:1189 / 568:1298 / 635:1287 / 651:1183 / 578:1239 / 608 +11:101410655:1230 / 506:1288 / 550:1276 / 566:1211 / 531:1251 / 538 +11:045949720600000500002003AJ1001W: 986 / 992:1125 / 1107:1113 / 1123:974 / 1008:1050 / 1058 +11:RM TMK021 CG1R9BK - W JDQ 1:1013 / 921:1182 / 1061:1172 / 1075:1004 / 935:1093 / 998 +11:045949720600000500002003AJ1001W: 985 / 991:1134 / 1096:1114 / 1121:973 / 1008:1052 / 1054 +11:101410655:1231 / 507:1281 / 558:1275 / 568:1215 / 526:1251 / 540 +11:0459497206:1212 / 532:1263 / 569:1250 / 588:1201 / 547:1232 / 559 +11:101410655:1229 / 506:1282 / 557:1276 / 566:1216 / 525:1251 / 539 +11:TAIYOYUDEN: 1179 / 583:1263 / 643:1250 / 661:1166 / 603:1215 / 623 +11:4200139801002J1002AS: 1141 / 637:1256 / 723:1252 / 729:1135 / 646:1196 / 684 +11:20200328:1319 / 732:1365 / 769:1358 / 778:1309 / 745:1338 / 756 +11:045949720600000500002003AJ1001W: 985 / 991:1125 / 1107:1113 / 1123:973 / 1008:1049 / 1057 +11:RM TMK021 CG1R9BK - W JDQ 1:1013 / 924:1186 / 1064:1175 / 1078:1005 / 937:1095 / 1001 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1426 / 672:1471 / 704:1438 / 751:1393 / 718:1432 / 711 +11:045949720600000500002003AJ1001W: 987 / 994:1127 / 1108:1116 / 1123:976 / 1008:1052 / 1058 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1426 / 672:1471 / 705:1439 / 751:1393 / 719:1432 / 712 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 921:1183 / 1061:1174 / 1074:997 / 943:1091 / 1000 +11:045949720600000500002003AJ1001W: 986 / 991:1135 / 1096:1115 / 1121:974 / 1007:1052 / 1054 +11:0459497206:1230 / 506:1264 / 568:1252 / 588:1199 / 550:1236 / 553 +11:04594972060003:1341 / 701:1402 / 760:1395 / 770:1326 / 721:1366 / 738 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 922:1182 / 1061:1174 / 1073:1005 / 932:1093 / 997 +11:045949720600000500002003AJ1001W: 983 / 999:1126 / 1106:1114 / 1123:975 / 1010:1049 / 1059 +11:0459497206:1224 / 517:1258 / 578:1251 / 588:1199 / 551:1233 / 558 +11:TAIYOYUDEN: 1171 / 596:1258 / 652:1251 / 662:1167 / 603:1212 / 628 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1061:1173 / 1073:1004 / 932:1093 / 997 +11:045949720600000500002003AJ1001W: 985 / 994:1125 / 1108:1113 / 1123:976 / 1007:1050 / 1058 +11:04594972060003:1335 / 712:1404 / 758:1391 / 781:1327 / 723:1364 / 743 +11:TAIYOYUDEN: 1173 / 592:1260 / 648:1250 / 661:1167 / 601:1212 / 626 +11:0459497206:1211 / 536:1258 / 578:1251 / 588:1201 / 548:1231 / 563 +11:045949720600000500002003AJ1001W: 986 / 992:1134 / 1097:1114 / 1122:974 / 1008:1052 / 1055 +11:101410655; 0459497206:1190 / 569:1299 / 636:1288 / 650:1185 / 576:1240 / 608 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1060:1173 / 1073:1002 / 932:1092 / 996 +11:04594972060003:1336 / 708:1402 / 760:1395 / 771:1327 / 722:1365 / 740 +11:TAIYOYUDEN: 1177 / 590:1263 / 647:1231 / 692:1146 / 634:1204 / 641 +11:045949720600000500002003AJ1001W: 987 / 992:1134 / 1096:1109 / 1127:975 / 1009:1051 / 1056 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1061:1173 / 1074:1003 / 932:1092 / 996 +11:101410655; 0459497206:1197 / 557:1299 / 635:1287 / 650:1167 / 601:1238 / 611 +11:04594972060003:1336 / 708:1402 / 760:1395 / 770:1327 / 721:1365 / 740 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 671:1470 / 704:1438 / 750:1393 / 718:1431 / 711 +11:045949720600000500002003AJ1001W: 985 / 993:1134 / 1097:1113 / 1123:975 / 1006:1052 / 1055 +11:20200328:1341 / 701:1367 / 766:1359 / 778:1310 / 746:1344 / 747 +11:RM TMK021 CG1R9BK - W JDQ 1:1008 / 926:1183 / 1059:1173 / 1073:994 / 952:1089 / 1003 +11:04594972060003:1335 / 711:1402 / 761:1396 / 771:1328 / 721:1365 / 741 +11:RM TMK021 CG1R9BK - W JDQ 1:1012 / 919:1182 / 1061:1167 / 1079:1003 / 932:1091 / 998 +11:045949720600000500002003AJ1001W: 986 / 992:1124 / 1108:1113 / 1123:970 / 1012:1048 / 1059 +11:101410655; 0459497206:1192 / 564:1294 / 640:1287 / 651:1184 / 575:1239 / 607 +11:04594972060003:1333 / 713:1409 / 753:1395 / 770:1328 / 721:1366 / 739 +11:101410655:1229 / 506:1281 / 558:1276 / 566:1216 / 525:1251 / 539 +11:RM TMK021 CG1R9BK - W JDQ 1:1011 / 920:1182 / 1061:1173 / 1073:1003 / 932:1092 / 996 +11:045949720600000500002003AJ1001W: 985 / 992:1135 / 1096:1114 / 1123:974 / 1008:1052 / 1055 +11:04594972060003:1336 / 707:1402 / 760:1395 / 770:1327 / 720:1365 / 740 +11:101410655; 0459497206:1190 / 567:1299 / 635:1286 / 652:1183 / 578:1239 / 608 +11:0459497206:1229 / 506:1264 / 569:1251 / 588:1199 / 550:1236 / 553 +11:RM TMK021 CG1R9BK - W JDQ 1:1010 / 918:1183 / 1059:1172 / 1074:1001 / 930:1091 / 995 +11:045949720600000500002003AJ1001W: 986 / 992:1135 / 1096:1114 / 1121:971 / 1012:1051 / 1055 +11:101410655; 0459497206:1190 / 565:1294 / 641:1287 / 650:1184 / 575:1239 / 608 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 670:1470 / 703:1438 / 749:1393 / 717:1432 / 710 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1425 / 670:1471 / 703:1438 / 749:1393 / 717:1432 / 710 +11:RM TMK021 CG1R9BK - W JDQ 1:1014 / 917:1185 / 1056:1177 / 1068:996 / 943:1093 / 996 +11:045949720600000500002003AJ1001W: 988 / 989:1128 / 1104:1116 / 1119:978 / 1004:1053 / 1054 +11:04594972060003:1335 / 705:1404 / 753:1397 / 763:1328 / 715:1366 / 734 +11:04594972060003:1343 / 703:1409 / 751:1398 / 766:1332 / 716:1370 / 734 +11:045949720600000500002003AJ1001W: 989 / 985:1131 / 1101:1117 / 1118:979 / 1000:1054 / 1051 +11:RM TMK021 CG1R9BK - W JDQ 1:1017 / 912:1186 / 1054:1177 / 1066:1002 / 934:1096 / 991 +11:101410655:1227 / 510:1291 / 544:1279 / 560:1203 / 543:1250 / 539 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1432 / 656:1477 / 689:1445 / 735:1400 / 703:1439 / 696 +11:045949720600000500002003AJ1001W: 988 / 979:1129 / 1092:1117 / 1108:978 / 993:1053 / 1043 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1193 / 658:1238 / 691:1205 / 737:1161 / 704:1199 / 697 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1728 / 650:1774 / 683:1741 / 730:1695 / 697:1734 / 690 +11:RM TMK021 CG1R9BK - W JDQ 1:1480 / 907:1654 / 1051:1645 / 1064:1466 / 929:1561 / 988 +11:045949720600000500002003AJ1001W: 1453 / 981:1595 / 1099:1584 / 1113:1439 / 1001:1518 / 1049 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1192 / 650:1236 / 682:1204 / 728:1160 / 695:1198 / 689 +11:04594972060003:1360 / 681:1420 / 741:1414 / 748:1346 / 701:1385 / 718 +11:RM TMK021 CG1R9BK - W JDQ 1:1280 / 906:1458 / 1043:1445 / 1058:1266 / 928:1362 / 984 +11:045949720600000500002003AJ1001W: 1257 / 977:1399 / 1094:1388 / 1108:1246 / 992:1322 / 1043 +11:RM TMK021 CG1R9BK - W JDQ 1:1458 / 905:1634 / 1051:1624 / 1063:1449 / 917:1541 / 984 +11:045949720600000500002003AJ1001W: 1431 / 981:1575 / 1098:1559 / 1118:1415 / 1005:1495 / 1050 +11:0459497206:1663 / 516:1712 / 558:1705 / 568:1652 / 529:1683 / 543 +11:101410655; 0459497206:1641 / 549:1748 / 623:1742 / 631:1636 / 556:1692 / 590 +11:04594972060003:1796 / 688:1861 / 744:1854 / 753:1784 / 703:1824 / 722 +11:RM TMK021 CG1R9BK - W JDQ 1:1456 / 908:1631 / 1049:1620 / 1064:1439 / 930:1536 / 987 +11:045949720600000500002003AJ1001W: 1430 / 979:1569 / 1098:1558 / 1113:1419 / 994:1494 / 1046 +11:04594972060003:1787 / 697:1859 / 744:1852 / 753:1782 / 703:1820 / 724 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1884 / 653:1931 / 686:1897 / 734:1850 / 701:1891 / 693 +11:045949720600000500002003AJ1001W: 1431 / 982:1573 / 1099:1561 / 1113:1420 / 996:1496 / 1047 +11:04594972060003:1796 / 686:1868 / 736:1845 / 761:1773 / 717:1821 / 725 +11:RM TMK021 CG1R9BK - W JDQ 1:1459 / 908:1634 / 1048:1624 / 1062:1444 / 929:1540 / 987 +11:101410655; 0459497206:1641 / 543:1751 / 615:1740 / 630:1634 / 554:1691 / 586 +11:TAIYOYUDEN: 1616 / 562:1698 / 631:1693 / 638:1603 / 581:1653 / 603 +11:045949720600000500002003AJ1001W: 1428 / 980:1572 / 1099:1559 / 1115:1416 / 997:1494 / 1048 +11:RM TMK021 CG1R9BK - W JDQ 1:1450 / 906:1627 / 1049:1615 / 1065:1435 / 928:1532 / 987 +11:101410655:1674 / 486:1729 / 537:1723 / 546:1644 / 530:1693 / 525 +11:101410655; 0459497206:1635 / 549:1743 / 623:1735 / 635:1628 / 560:1685 / 592 +1:101410655; 0459497206; TAIYOYUDEN; 50000; 04594972060003; 20200328:1877 / 653:1925 / 686:1891 / 735:1844 / 701:1884 / 694 +11:045949720600000500002003AJ1001W: 1426 / 987:1570 / 1102:1557 / 1118:1417 / 998:1493 / 1051 +11:RM TMK021 CG1R9BK - W JDQ 1:1453 / 910:1627 / 1054:1618 / 1066:1437 / 934:1534 / 991 +11:04594972060003:1791 / 686:1854 / 749:1849 / 756:1761 / 731:1814 / 730 +11:045949720600000500002003AJ1001W: 1424 / 975:1576 / 1087:1554 / 1113:1409 / 1006:1491 / 1045 +11:RM TMK021 CG1R9BK - W JDQ 1:1452 / 907:1625 / 1051:1616 / 1064:1434 / 933:1532 / 989 +11:TAIYOYUDEN: 1616 / 573:1709 / 626:1695 / 645:1610 / 581:1658 / 606 +11:101410655; 0459497206:1631 / 549:1748 / 615:1733 / 634:1625 / 559:1684 / 589 +11:04594972060003:1783 / 696:1854 / 746:1849 / 754:1777 / 705:1816 / 725 +11:045949720600000500002003AJ1001W: 1424 / 981:1573 / 1089:1556 / 1114:1414 / 996:1492 / 1045 +11:RM TMK021 CG1R9BK - W JDQ 1:1452 / 907:1625 / 1051:1616 / 1064:1443 / 919:1534 / 985 +11:101410655; 0459497206:1640 / 543:1744 / 620:1734 / 634:1627 / 558:1686 / 589 +11:0459497206:1657 / 516:1705 / 559:1698 / 569:1647 / 528:1677 / 543 +11:04594972060003:1789 / 686:1855 / 742:1847 / 753:1760 / 725:1813 / 727 +11:RM TMK021 CG1R9BK - W JDQ 1:1449 / 911:1628 / 1049:1617 / 1063:1440 / 923:1533 / 986 +11:045949720600000500002003AJ1001W: 1424 / 979:1565 / 1096:1549 / 1118:1414 / 994:1488 / 1047 +11:101410655:1671 / 489:1733 / 529:1717 / 553:1655 / 512:1694 / 521 +11:RM TMK021 CG1R9BK - W JDQ 1:1450 / 909:1626 / 1048:1614 / 1063:1443 / 919:1533 / 985 +11:045949720600000500002003AJ1001W: 1423 / 982:1565 / 1098:1546 / 1122:1408 / 1001:1486 / 1051 +11:101410655; 0459497206:1632 / 548:1740 / 624:1733 / 634:1625 / 558:1682 / 591 +11:04594972060003:1783 / 696:1853 / 746:1846 / 755:1775 / 707:1814 / 726 +11:101410655; 0459497206:1632 / 551:1742 / 620:1733 / 633:1626 / 559:1683 / 591 +11:101410655:1672 / 486:1727 / 536:1721 / 546:1642 / 530:1690 / 524 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/START.cs b/Handler/Project/Dialog/START.cs new file mode 100644 index 0000000..8782464 --- /dev/null +++ b/Handler/Project/Dialog/START.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + } +} diff --git a/Handler/Project/Dialog/UserControl1.Designer.cs b/Handler/Project/Dialog/UserControl1.Designer.cs new file mode 100644 index 0000000..0c24cc6 --- /dev/null +++ b/Handler/Project/Dialog/UserControl1.Designer.cs @@ -0,0 +1,77 @@ +namespace Project.Dialog +{ + partial class UserControl1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(105, 29); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // numericUpDown1 + // + this.numericUpDown1.Dock = System.Windows.Forms.DockStyle.Fill; + this.numericUpDown1.Font = new System.Drawing.Font("Consolas", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.numericUpDown1.Location = new System.Drawing.Point(105, 0); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(58, 29); + this.numericUpDown1.TabIndex = 1; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // UserControl1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.label1); + this.Name = "UserControl1"; + this.Size = new System.Drawing.Size(163, 29); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + public System.Windows.Forms.Label label1; + public System.Windows.Forms.NumericUpDown numericUpDown1; + } +} diff --git a/Handler/Project/Dialog/UserControl1.cs b/Handler/Project/Dialog/UserControl1.cs new file mode 100644 index 0000000..5402a02 --- /dev/null +++ b/Handler/Project/Dialog/UserControl1.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class UserControl1 : UserControl + { + public UserControl1() + { + InitializeComponent(); + } + } +} diff --git a/Handler/Project/Dialog/UserControl1.resx b/Handler/Project/Dialog/UserControl1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/UserControl1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fDataBufferSIDRef.Designer.cs b/Handler/Project/Dialog/fDataBufferSIDRef.Designer.cs new file mode 100644 index 0000000..f39ed99 --- /dev/null +++ b/Handler/Project/Dialog/fDataBufferSIDRef.Designer.cs @@ -0,0 +1,89 @@ +namespace Project.Dialog +{ + partial class fDataBufferSIDRef + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lvSID = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // lvSID + // + this.lvSID.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.lvSID.Dock = System.Windows.Forms.DockStyle.Fill; + this.lvSID.FullRowSelect = true; + this.lvSID.GridLines = true; + this.lvSID.Location = new System.Drawing.Point(0, 0); + this.lvSID.Name = "lvSID"; + this.lvSID.Size = new System.Drawing.Size(335, 457); + this.lvSID.TabIndex = 2; + this.lvSID.UseCompatibleStateImageBehavior = false; + this.lvSID.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "SID"; + this.columnHeader1.Width = 200; + // + // columnHeader2 + // + this.columnHeader2.Text = "KPC"; + this.columnHeader2.Width = 50; + // + // columnHeader3 + // + this.columnHeader3.Text = "Unit"; + // + // fDataBufferSID + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(335, 457); + this.Controls.Add(this.lvSID); + this.Name = "fDataBufferSID"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "SID Reference Buffer"; + this.TopMost = true; + this.Load += new System.EventHandler(this.fDataBuffer_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView lvSID; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fDataBufferSIDRef.cs b/Handler/Project/Dialog/fDataBufferSIDRef.cs new file mode 100644 index 0000000..0fcb936 --- /dev/null +++ b/Handler/Project/Dialog/fDataBufferSIDRef.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fDataBufferSIDRef : Form + { + Boolean useMonitor = false; + public fDataBufferSIDRef() + { + InitializeComponent(); + this.lvSID.Items.Clear(); + var list = PUB.Result.SIDReference.Items; + foreach (var item in list) + { + var lv = this.lvSID.Items.Add(item.sid, string.Format("[{0}] {1}", lvSID.Items.Count + 1, item.sid), 0); //sid + lv.SubItems.Add(item.kpc.ToString()); //count + lv.SubItems.Add(item.unit); + } + PUB.Result.SIDReference.PropertyChanged += sidreflist_PropertyChanged; + useMonitor = true; + } + + public fDataBufferSIDRef(List items) + { + InitializeComponent(); + this.lvSID.Items.Clear(); + foreach (var item in items) + { + var lv = this.lvSID.Items.Add(item.sid, string.Format("[{0}] {1}", lvSID.Items.Count + 1, item.sid), 0); //sid + lv.SubItems.Add(item.kpc.ToString()); //count + lv.SubItems.Add(item.unit); + } + } + void fDataBufferSID_FormClosed(object sender, FormClosedEventArgs e) + { + if (useMonitor) + PUB.Result.SIDReference.PropertyChanged -= sidreflist_PropertyChanged; + } + + private void fDataBuffer_Load(object sender, EventArgs e) + { + this.FormClosed += fDataBufferSID_FormClosed; + + } + + void sidreflist_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (this.InvokeRequired) + { + var p = new PropertyChangedEventArgs(e.PropertyName); + this.BeginInvoke(new PropertyChangedEventHandler(sidreflist_PropertyChanged), new object[] { sender, p }); + return; + } + var pname = e.PropertyName.Split(':'); + if (pname[0].ToLower() == "add") + { + var sid = pname[1]; + var item = PUB.Result.SIDReference.Get(pname[1]); + var lv = this.lvSID.Items.Add(sid, string.Format("[{0}] {1}", lvSID.Items.Count + 1, sid), 0); + lv.SubItems.Add(item.kpc.ToString()); + lv.SubItems.Add(item.unit);// + lv.EnsureVisible(); + } + else if (pname[0].ToLower() == "clear") + { + this.lvSID.Items.Clear(); + } + else if (pname[0].ToLower() == "set") + { + var sid = pname[1]; + var cnt = PUB.Result.SIDReference.Get(sid); + var items = this.lvSID.Items.Find(sid, false); + if (items != null && items.Length > 0) + { + foreach (var item in items) + { + item.SubItems[1].Text = cnt.ToString(); + } + } + } + } + + } +} diff --git a/Handler/Project/Dialog/fDataBufferSIDRef.resx b/Handler/Project/Dialog/fDataBufferSIDRef.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fDataBufferSIDRef.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fDebug.Designer.cs b/Handler/Project/Dialog/fDebug.Designer.cs new file mode 100644 index 0000000..822297d --- /dev/null +++ b/Handler/Project/Dialog/fDebug.Designer.cs @@ -0,0 +1,324 @@ +namespace Project.Dialog +{ + partial class fDebug + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.tbBcd = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.button10 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // timer1 + // + this.timer1.Interval = 150; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // tbBcd + // + this.tbBcd.Location = new System.Drawing.Point(12, 381); + this.tbBcd.Name = "tbBcd"; + this.tbBcd.Size = new System.Drawing.Size(335, 21); + this.tbBcd.TabIndex = 44; + this.tbBcd.Text = "101409576;FF8N03FA2;MURATA;10000;8N09AFQPF;20181109;"; + this.tbBcd.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 360); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(97, 12); + this.label2.TabIndex = 45; + this.label2.Text = "Manual barcode"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(12, 408); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(335, 24); + this.button1.TabIndex = 46; + this.button1.Text = "send"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(14, 29); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(335, 21); + this.textBox1.TabIndex = 47; + this.textBox1.Text = "101409930;L99294875498;KYOCERA;30000;037920827134011M001;2020-08-27;ABCDEFGHIJ123" + + "4567890ABCDEFGHIJ"; + this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(12, 81); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(335, 21); + this.textBox2.TabIndex = 47; + this.textBox2.Text = "101409930;L99294875498;KYOCERA;30000;037920827134011M001;2020-08-27;ABCDEFGHIJ123" + + "4567890ABCDEFGHIJ"; + this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(10, 14); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(93, 12); + this.label1.TabIndex = 45; + this.label1.Text = "Print Command"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(10, 66); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(93, 12); + this.label3.TabIndex = 45; + this.label3.Text = "Print Command"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(252, 2); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(95, 24); + this.button2.TabIndex = 48; + this.button2.Text = "Print"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // button3 + // + this.button3.Location = new System.Drawing.Point(252, 54); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(95, 24); + this.button3.TabIndex = 48; + this.button3.Text = "Print"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(12, 135); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(151, 21); + this.textBox3.TabIndex = 50; + this.textBox3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(10, 120); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(41, 12); + this.label4.TabIndex = 49; + this.label4.Text = "manu\'"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // textBox4 + // + this.textBox4.Location = new System.Drawing.Point(12, 178); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(151, 21); + this.textBox4.TabIndex = 52; + this.textBox4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(10, 163); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(26, 12); + this.label5.TabIndex = 51; + this.label5.Text = "mfg"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // button4 + // + this.button4.Location = new System.Drawing.Point(169, 135); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(49, 24); + this.button4.TabIndex = 53; + this.button4.Text = "n/a"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button5 + // + this.button5.Location = new System.Drawing.Point(169, 178); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(49, 24); + this.button5.TabIndex = 53; + this.button5.Text = "n/a"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // button6 + // + this.button6.Location = new System.Drawing.Point(12, 205); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(95, 24); + this.button6.TabIndex = 54; + this.button6.Text = "print L"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // button7 + // + this.button7.Location = new System.Drawing.Point(123, 205); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(95, 24); + this.button7.TabIndex = 55; + this.button7.Text = "print R"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // button8 + // + this.button8.Location = new System.Drawing.Point(224, 178); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(49, 24); + this.button8.TabIndex = 56; + this.button8.Text = "clr"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button8_Click); + // + // button9 + // + this.button9.Location = new System.Drawing.Point(224, 135); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(49, 24); + this.button9.TabIndex = 57; + this.button9.Text = "clr"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // textBox5 + // + this.textBox5.Location = new System.Drawing.Point(14, 250); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(459, 21); + this.textBox5.TabIndex = 58; + this.textBox5.Text = "101416868;01A3KX;KYOCERA;20000;RC00014A225001I;20220511;N/A"; + this.textBox5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // button10 + // + this.button10.Location = new System.Drawing.Point(12, 277); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(461, 24); + this.button10.TabIndex = 59; + this.button10.Text = "Parser Amkor STD Barcode"; + this.button10.UseVisualStyleBackColor = true; + this.button10.Click += new System.EventHandler(this.button10_Click); + // + // fDebug + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(495, 444); + this.Controls.Add(this.button10); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.button8); + this.Controls.Add(this.button9); + this.Controls.Add(this.button6); + this.Controls.Add(this.button7); + this.Controls.Add(this.button5); + this.Controls.Add(this.button4); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label4); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.button1); + this.Controls.Add(this.label3); + this.Controls.Add(this.label1); + this.Controls.Add(this.label2); + this.Controls.Add(this.tbBcd); + this.Name = "fDebug"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fDebug"; + this.Load += new System.EventHandler(this.fDebug_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TextBox tbBcd; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.Button button10; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fDebug.cs b/Handler/Project/Dialog/fDebug.cs new file mode 100644 index 0000000..9f0f2cf --- /dev/null +++ b/Handler/Project/Dialog/fDebug.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fDebug : Form + { + public fDebug() + { + InitializeComponent(); + this.FormClosed += fDebug_FormClosed; + this.tbBcd.KeyDown += tbBcd_KeyDown; + } + + void tbBcd_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + // manualbcd(); + } + } + + void fDebug_FormClosed(object sender, FormClosedEventArgs e) + { + this.tbBcd.KeyDown -= tbBcd_KeyDown; + timer1.Stop(); + } + + private void fDebug_Load(object sender, EventArgs e) + { + timer1.Enabled = true; + } + + private void timer1_Tick(object sender, EventArgs e) + { + + } + + private void lb4_Click(object sender, EventArgs e) + { + + } + + private void button1_Click(object sender, EventArgs e) + { + //manualbcd(); + } + + private void button2_Click(object sender, EventArgs e) + { + var reel = new Class.Reel(textBox1.Text); + PUB.PrinterL.Print(reel, true, AR.SETTING.Data.DrawOutbox); + PUB.log.Add("Temporary print L:" + textBox1.Text); + } + + private void button3_Click(object sender, EventArgs e) + { + var reel = new Class.Reel(textBox2.Text); + PUB.PrinterR.Print(reel, true, AR.SETTING.Data.DrawOutbox); + PUB.log.Add("Temporary print R:" + textBox2.Text); + } + + private void button4_Click(object sender, EventArgs e) + { + textBox3.Text = "N/A"; + } + + private void button5_Click(object sender, EventArgs e) + { + textBox4.Text = "N/A"; + } + + private void button9_Click(object sender, EventArgs e) + { + textBox3.Text = string.Empty; + } + + private void button8_Click(object sender, EventArgs e) + { + textBox4.Text = string.Empty; + } + + private void button6_Click(object sender, EventArgs e) + { + PUB.PrinterL.TestPrint(false, textBox3.Text, textBox4.Text); + var zpl = PUB.PrinterL.LastPrintZPL; + //PUB.PrintSend(true, zpl); + } + + private void button7_Click(object sender, EventArgs e) + { + PUB.PrinterR.TestPrint(false, textBox3.Text, textBox4.Text); + var zpl = PUB.PrinterR.LastPrintZPL; + //PUB.PrintSend(false, zpl); + } + + private void button10_Click(object sender, EventArgs e) + { + var amk = new StdLabelPrint.CAmkorSTDBarcode(); + amk.SetBarcode(textBox5.Text); + } + //void manualbcd() + //{ + // if (tbBcd.Text.isEmpty()) + // { + // tbBcd.Focus(); + // return; + // } + // else + // { + // //Pub.manualbcd.RaiseRecvData(tbBcd.Text + "\n"); + // tbBcd.Focus(); + // tbBcd.SelectAll(); + // } + //} + } +} diff --git a/Handler/Project/Dialog/fDebug.resx b/Handler/Project/Dialog/fDebug.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/Handler/Project/Dialog/fDebug.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fFinishJob.Designer.cs b/Handler/Project/Dialog/fFinishJob.Designer.cs new file mode 100644 index 0000000..3bc3ef1 --- /dev/null +++ b/Handler/Project/Dialog/fFinishJob.Designer.cs @@ -0,0 +1,517 @@ +namespace Project.Dialog +{ + partial class fFinishJob + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fFinishJob)); + this.button1 = new System.Windows.Forms.Button(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.label2 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.dataGridView2 = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.label3 = new System.Windows.Forms.Label(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.dataGridView3 = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridView4 = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column11 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column12 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn12 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit(); + this.tableLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView4)).BeginInit(); + this.SuspendLayout(); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.Gold; + this.button1.Dock = System.Windows.Forms.DockStyle.Top; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 50F, System.Drawing.FontStyle.Bold); + this.button1.Location = new System.Drawing.Point(10, 10); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(1164, 105); + this.button1.TabIndex = 3; + this.button1.Text = "Job Completed"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToDeleteRows = false; + this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2, + this.Column5, + this.Column6, + this.Column3, + this.Column4}); + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle2.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2; + this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView1.Location = new System.Drawing.Point(3, 3); + this.dataGridView1.MultiSelect = false; + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.ReadOnly = true; + this.dataGridView1.RowHeadersVisible = false; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView1.Size = new System.Drawing.Size(576, 354); + this.dataGridView1.TabIndex = 5; + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.Column1.DefaultCellStyle = dataGridViewCellStyle1; + this.Column1.HeaderText = "SID"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + // + // Column2 + // + this.Column2.HeaderText = "REEL"; + this.Column2.Name = "Column2"; + this.Column2.ReadOnly = true; + this.Column2.Width = 66; + // + // Column5 + // + this.Column5.HeaderText = "L"; + this.Column5.Name = "Column5"; + this.Column5.ReadOnly = true; + this.Column5.Width = 41; + // + // Column6 + // + this.Column6.HeaderText = "R"; + this.Column6.Name = "Column6"; + this.Column6.ReadOnly = true; + this.Column6.Width = 43; + // + // Column3 + // + this.Column3.HeaderText = "KPC"; + this.Column3.Name = "Column3"; + this.Column3.ReadOnly = true; + this.Column3.Width = 61; + // + // Column4 + // + this.Column4.HeaderText = "LIMIT"; + this.Column4.Name = "Column4"; + this.Column4.ReadOnly = true; + this.Column4.Width = 71; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Top; + this.label2.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(10, 115); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(1164, 44); + this.label2.TabIndex = 6; + this.label2.Text = "Current Job Information"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dataGridView2, 1, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 159); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1164, 360); + this.tableLayoutPanel1.TabIndex = 7; + // + // dataGridView2 + // + this.dataGridView2.AllowUserToAddRows = false; + this.dataGridView2.AllowUserToDeleteRows = false; + this.dataGridView2.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn1, + this.dataGridViewTextBoxColumn2, + this.Column7, + this.Column8, + this.dataGridViewTextBoxColumn3, + this.dataGridViewTextBoxColumn4}); + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle4.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle4; + this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView2.Location = new System.Drawing.Point(585, 3); + this.dataGridView2.MultiSelect = false; + this.dataGridView2.Name = "dataGridView2"; + this.dataGridView2.ReadOnly = true; + this.dataGridView2.RowHeadersVisible = false; + this.dataGridView2.RowTemplate.Height = 23; + this.dataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView2.Size = new System.Drawing.Size(576, 354); + this.dataGridView2.TabIndex = 5; + // + // dataGridViewTextBoxColumn1 + // + this.dataGridViewTextBoxColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle3; + this.dataGridViewTextBoxColumn1.HeaderText = "BATCH"; + this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; + this.dataGridViewTextBoxColumn1.ReadOnly = true; + // + // dataGridViewTextBoxColumn2 + // + this.dataGridViewTextBoxColumn2.HeaderText = "REEL"; + this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; + this.dataGridViewTextBoxColumn2.ReadOnly = true; + this.dataGridViewTextBoxColumn2.Width = 66; + // + // Column7 + // + this.Column7.HeaderText = "L"; + this.Column7.Name = "Column7"; + this.Column7.ReadOnly = true; + this.Column7.Width = 41; + // + // Column8 + // + this.Column8.HeaderText = "R"; + this.Column8.Name = "Column8"; + this.Column8.ReadOnly = true; + this.Column8.Width = 43; + // + // dataGridViewTextBoxColumn3 + // + this.dataGridViewTextBoxColumn3.HeaderText = "KPC"; + this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; + this.dataGridViewTextBoxColumn3.ReadOnly = true; + this.dataGridViewTextBoxColumn3.Width = 61; + // + // dataGridViewTextBoxColumn4 + // + this.dataGridViewTextBoxColumn4.HeaderText = "LIMIT"; + this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4"; + this.dataGridViewTextBoxColumn4.ReadOnly = true; + this.dataGridViewTextBoxColumn4.Width = 71; + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Top; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(10, 519); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(1164, 44); + this.label3.TabIndex = 8; + this.label3.Text = "Daily(1982-11-23) Job Information"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.label3.Click += new System.EventHandler(this.label3_Click); + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Controls.Add(this.dataGridView3, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.dataGridView4, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(10, 563); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(1164, 338); + this.tableLayoutPanel2.TabIndex = 9; + // + // dataGridView3 + // + this.dataGridView3.AllowUserToAddRows = false; + this.dataGridView3.AllowUserToDeleteRows = false; + this.dataGridView3.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dataGridView3.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView3.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn5, + this.dataGridViewTextBoxColumn6, + this.Column9, + this.Column10, + this.dataGridViewTextBoxColumn7, + this.dataGridViewTextBoxColumn8}); + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle6.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView3.DefaultCellStyle = dataGridViewCellStyle6; + this.dataGridView3.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView3.Location = new System.Drawing.Point(3, 3); + this.dataGridView3.MultiSelect = false; + this.dataGridView3.Name = "dataGridView3"; + this.dataGridView3.ReadOnly = true; + this.dataGridView3.RowHeadersVisible = false; + this.dataGridView3.RowTemplate.Height = 23; + this.dataGridView3.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView3.Size = new System.Drawing.Size(576, 332); + this.dataGridView3.TabIndex = 5; + // + // dataGridViewTextBoxColumn5 + // + this.dataGridViewTextBoxColumn5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.dataGridViewTextBoxColumn5.DefaultCellStyle = dataGridViewCellStyle5; + this.dataGridViewTextBoxColumn5.HeaderText = "SID"; + this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5"; + this.dataGridViewTextBoxColumn5.ReadOnly = true; + // + // dataGridViewTextBoxColumn6 + // + this.dataGridViewTextBoxColumn6.HeaderText = "REEL"; + this.dataGridViewTextBoxColumn6.Name = "dataGridViewTextBoxColumn6"; + this.dataGridViewTextBoxColumn6.ReadOnly = true; + this.dataGridViewTextBoxColumn6.Width = 66; + // + // Column9 + // + this.Column9.HeaderText = "L"; + this.Column9.Name = "Column9"; + this.Column9.ReadOnly = true; + this.Column9.Width = 41; + // + // Column10 + // + this.Column10.HeaderText = "R"; + this.Column10.Name = "Column10"; + this.Column10.ReadOnly = true; + this.Column10.Width = 43; + // + // dataGridViewTextBoxColumn7 + // + this.dataGridViewTextBoxColumn7.HeaderText = "KPC"; + this.dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7"; + this.dataGridViewTextBoxColumn7.ReadOnly = true; + this.dataGridViewTextBoxColumn7.Width = 61; + // + // dataGridViewTextBoxColumn8 + // + this.dataGridViewTextBoxColumn8.HeaderText = "LIMIT"; + this.dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8"; + this.dataGridViewTextBoxColumn8.ReadOnly = true; + this.dataGridViewTextBoxColumn8.Width = 71; + // + // dataGridView4 + // + this.dataGridView4.AllowUserToAddRows = false; + this.dataGridView4.AllowUserToDeleteRows = false; + this.dataGridView4.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dataGridView4.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView4.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn9, + this.dataGridViewTextBoxColumn10, + this.Column11, + this.Column12, + this.dataGridViewTextBoxColumn11, + this.dataGridViewTextBoxColumn12}); + dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle8.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView4.DefaultCellStyle = dataGridViewCellStyle8; + this.dataGridView4.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView4.Location = new System.Drawing.Point(585, 3); + this.dataGridView4.MultiSelect = false; + this.dataGridView4.Name = "dataGridView4"; + this.dataGridView4.ReadOnly = true; + this.dataGridView4.RowHeadersVisible = false; + this.dataGridView4.RowTemplate.Height = 23; + this.dataGridView4.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView4.Size = new System.Drawing.Size(576, 332); + this.dataGridView4.TabIndex = 5; + // + // dataGridViewTextBoxColumn9 + // + this.dataGridViewTextBoxColumn9.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.dataGridViewTextBoxColumn9.DefaultCellStyle = dataGridViewCellStyle7; + this.dataGridViewTextBoxColumn9.HeaderText = "BATCH"; + this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9"; + this.dataGridViewTextBoxColumn9.ReadOnly = true; + // + // dataGridViewTextBoxColumn10 + // + this.dataGridViewTextBoxColumn10.HeaderText = "REEL"; + this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10"; + this.dataGridViewTextBoxColumn10.ReadOnly = true; + this.dataGridViewTextBoxColumn10.Width = 66; + // + // Column11 + // + this.Column11.HeaderText = "L"; + this.Column11.Name = "Column11"; + this.Column11.ReadOnly = true; + this.Column11.Width = 41; + // + // Column12 + // + this.Column12.HeaderText = "R"; + this.Column12.Name = "Column12"; + this.Column12.ReadOnly = true; + this.Column12.Width = 43; + // + // dataGridViewTextBoxColumn11 + // + this.dataGridViewTextBoxColumn11.HeaderText = "KPC"; + this.dataGridViewTextBoxColumn11.Name = "dataGridViewTextBoxColumn11"; + this.dataGridViewTextBoxColumn11.ReadOnly = true; + this.dataGridViewTextBoxColumn11.Width = 61; + // + // dataGridViewTextBoxColumn12 + // + this.dataGridViewTextBoxColumn12.HeaderText = "LIMIT"; + this.dataGridViewTextBoxColumn12.Name = "dataGridViewTextBoxColumn12"; + this.dataGridViewTextBoxColumn12.ReadOnly = true; + this.dataGridViewTextBoxColumn12.Width = 71; + // + // fFinishJob + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(1184, 911); + this.Controls.Add(this.tableLayoutPanel2); + this.Controls.Add(this.label3); + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.label2); + this.Controls.Add(this.button1); + this.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fFinishJob"; + this.Padding = new System.Windows.Forms.Padding(10); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Job Completion"; + this.Load += new System.EventHandler(this.@__LoaD); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit(); + this.tableLayoutPanel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView4)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button button1; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.DataGridView dataGridView2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.DataGridView dataGridView3; + private System.Windows.Forms.DataGridView dataGridView4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; + private System.Windows.Forms.DataGridViewTextBoxColumn Column6; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column7; + private System.Windows.Forms.DataGridViewTextBoxColumn Column8; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6; + private System.Windows.Forms.DataGridViewTextBoxColumn Column9; + private System.Windows.Forms.DataGridViewTextBoxColumn Column10; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10; + private System.Windows.Forms.DataGridViewTextBoxColumn Column11; + private System.Windows.Forms.DataGridViewTextBoxColumn Column12; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn12; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fFinishJob.cs b/Handler/Project/Dialog/fFinishJob.cs new file mode 100644 index 0000000..8b0fee9 --- /dev/null +++ b/Handler/Project/Dialog/fFinishJob.cs @@ -0,0 +1,162 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using System.Linq; +using System.Collections.Generic; +using AR; + +namespace Project.Dialog +{ + public partial class fFinishJob : Form + { + public string Command = string.Empty; + + public fFinishJob() + { + InitializeComponent(); + this.KeyPreview = true; + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) + { + Close(); + } + }; + if (System.Diagnostics.Debugger.IsAttached == true) + { + this.TopMost = false; + } + this.FormClosed += fFinishJob_FormClosed; + } + + + + void fFinishJob_FormClosed(object sender, FormClosedEventArgs e) + { + // Comm.WebService.Message -= WebService_Message; + } + + private void button1_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void __LoaD(object sender, EventArgs e) + { + this.Text = string.Format("Today's work list ({0})", DateTime.Now.ToShortDateString()); + + + if (AR.SETTING.Data.OnlineMode) + { + RefreshData(); + } + + //lbCntL.Text = cntl.ToString(); + //lbCntR.Text = cntr.ToString(); + //lbSumQty.Text = qty.ToString(); + } + + void RefreshData() + { + var sd = DateTime.Parse(DateTime.Now.ToShortDateString() + " 00:00:00"); + var ed = DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59"); + + if (PUB.Result.JobStartTime.Year != 1982) sd = PUB.Result.JobStartTime; + if (PUB.Result.JobEndTime.Year != 1982) ed = PUB.Result.JobEndTime; + + label2.Text = string.Format("Current work information ({0}~{1})", sd.ToString("HH:mm:ss"), ed.ToString("HH:mm:ss")); + + //현작업 + var ta = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter(); + var list = ta.GetByValidGuid(sd, ed, AR.SETTING.Data.McName, PUB.Result.guid); + //var list = db.Component_Reel_Result.Where(t => t.STIME >= sd && t.STIME <= ed && t.PRNVALID == true && t.PRNATTACH == true && t.MC == AR.SETTING.Data.McName); + UpdateList(list, dataGridView1, dataGridView2); + + //당일작업 + sd = DateTime.Parse(sd.ToShortDateString() + " 00:00:00"); + ed = DateTime.Parse(sd.ToShortDateString() + " 23:59:59"); + label3.Text = $"Daily ({sd.ToShortDateString()}) work information"; + var listday = ta.GetByValid(sd, ed, AR.SETTING.Data.McName); + UpdateList(listday, dataGridView3, dataGridView4); + } + + void UpdateList(DataSet1.K4EE_Component_Reel_ResultDataTable list, DataGridView dvS, DataGridView dvB) + { + dvS.Rows.Clear(); + dvB.Rows.Clear(); + + int sum_reel = 0; + int sum_cntl = 0; + int sum_cntr = 0; + double sum_kpc = 0; + + if (list != null && list.Count() > 0) + { + //SID별 + sum_reel = 0; + sum_cntl = 0; + sum_cntr = 0; + sum_kpc = 0; + + var grplist = list.OrderBy(t => t.SID).GroupBy(t => t.SID); + foreach (var row in grplist) + { + var sid = row.Key; + var reel = row.Count(); + var cntl = row.Where(t => t.LOC == "L")?.Count() ?? 0; + var cntr = row.Where(t => t.LOC == "R")?.Count() ?? 0; + double kpc = row.Sum(t => t.QTY); + if (kpc > 0) kpc = kpc / 1000.0; + + var lim = -1; + dvS.Rows.Add(new object[] { sid, reel, cntl, cntr, kpc, lim }); + + sum_reel += reel; + sum_cntl += cntl; + sum_cntr += cntr; + sum_kpc += kpc; + } + dvS.Rows.Add(new object[] { "TOTAL", sum_reel, sum_cntl, sum_cntr, sum_kpc, null }); + dvS.Rows[dvS.RowCount - 1].DefaultCellStyle.BackColor = Color.DimGray; + + + //배치별 + sum_reel = 0; + sum_cntl = 0; + sum_cntr = 0; + sum_kpc = 0; + + var grpbatch = list.OrderBy(t => t.BATCH).GroupBy(t => t.BATCH); + foreach (var row in grpbatch) + { + var sid = row.Key; + if (sid.isEmpty()) sid = "(none)"; + var reel = row.Count(); + var cntl = row.Where(t => t.LOC == "L")?.Count() ?? 0; + var cntr = row.Where(t => t.LOC == "R")?.Count() ?? 0; + double kpc = row.Sum(t => t.QTY); + if (kpc > 0) kpc = kpc / 1000.0; + + var lim = -1; + dvB.Rows.Add(new object[] { sid, reel, cntl, cntr, kpc, lim }); + + sum_reel += reel; + sum_cntl += cntl; + sum_cntr += cntr; + sum_kpc += kpc; + } + dvB.Rows.Add(new object[] { "TOTAL", sum_reel, sum_cntl, sum_cntr, sum_kpc, null }); + dvB.Rows[dvB.RowCount - 1].DefaultCellStyle.BackColor = Color.DimGray; + + } + dvS.Invalidate(); + dvB.Invalidate(); + } + + private void label3_Click(object sender, EventArgs e) + { + if (AR.SETTING.Data.OnlineMode) + RefreshData(); + } + } +} diff --git a/Handler/Project/Dialog/fFinishJob.resx b/Handler/Project/Dialog/fFinishJob.resx new file mode 100644 index 0000000..da8edcf --- /dev/null +++ b/Handler/Project/Dialog/fFinishJob.resx @@ -0,0 +1,449 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + + + AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA + AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgaZsA5C1 + fwOTuIIDkbaAA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3 + gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3gQOSt4EDkreBA5K3 + gQOSt4EDkreBA5G2gAOTuIIDkLV/A4GmbAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAfaJmBAAAAAB6n2IdfaJmkoescoeIrnSDh61zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit + c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIit + c4SIrXOEiK1zhIitc4SIrXOEiK1zhIitc4SIrXOEiK1zhIetc4SIrnSDh6xyh32iZpJ6n2IdAAAAAH2i + ZgQAAAAAAAAAAAAAAAAAAAAAiKx0BwAAAACApWk1ia52/6DElP+kyJn9osaW/qLGl/+ixpf/osaX/6LG + l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LG + l/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGl/+ixpf/osaX/6LGlv6kyJn9oMSU/4mu + dv+ApWk1AAAAAIisdAcAAAAAAAAAAAAAAAAAAAAAl7uIBgAAAACIrXQrmr6M47/ivf3E58P8weS/+sLk + wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvB5MD7wuTA+8Lk + wPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8LkwPvC5MD7wuTA+8Hk + v/rE58P8v+K9/Zq+jOOIrXQrAAAAAJe7iAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uH67nc + tf++4bz+u964/bzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf6837n+vN+5/rveuP2+4bz+udy1/5e7h+uHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlLiEBgAA + AACHq3Isl7uI67rdtv+/4r3/vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf694Lr+vN+5/r3guv694Lr+vN+5/rzfuf694Lr+vN+5/rzfuf6837n+vN+5/rzfuf6837n+vN+5/rzf + uf6837n+vN+5/rzfuf6837n+vN+5/rzfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJS4hAYAAAAAAAAAAAAA + AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+837n/veC6/73guv+73rf/weO//7ndtf+z163/weTA/7zfuf+837n/veC6/7zfuf+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5 + hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g + uv+94Lr/veC6/7zfuf+94Lr/vN+5/7veuP/C5MH/stet/6bHm/+oxpz/qc6h/7/ivf++4bz/u964/73g + uv+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7 + iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g + uv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vd+5/8Djvv+02bD/p8ic/8LTt//R3cn/q8ef/67R + p/+94bv/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf + uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd + tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/7fasv+mx5v/xte8//b4 + 9P/9/f3/3ObW/6zHoP+u0qf/veG7/77hvP+837n/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA + AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv++4bz/uNu0/6XH + mv/I2b7/9Pfy/////////////f39/9zm1v+tyKD/rtGm/7/ivf+94Lr/vN+5/7zfuf+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA + AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/8Hj + v/+22bH/o8SX/83exv/2+fX///////39/P/+/f3///////7+/f/h69z/rsmh/6nNn//C5cH/vN+4/7zf + uf+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5 + hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g + uv+837j/wuTA/7LXrf+nx5z/zNvE//b49P//////+/v6/8bWvP+uxaH/7vLr//7+/v/+////4Oja/7LK + pv+ozJ//wuXB/73guv+837n/veC6/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7 + iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3g + uv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rLoP/C1Lj//Pz7///////4+ff/zNvF/6fInP+kyJr/uM6t/+zw + 6P/+/v7///7//+Do2v+yy6f/qc2h/7/ivf++4bz/u964/73guv+837n/veC6/73guv+94Lr/veC6/7zf + uf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rd + tv+/4r3/vN+5/r3guv+94Lr/vN+5/7zfuf++4Lv/t9uz/6rKn//C07j//v7+//z8+//N28T/qMec/7ba + sv/B47//p8qd/7nOrv/q8Of///////7+/v/g6dv/rcih/63Rpf+94bv/v+K9/7veuP+94Lr/vN+5/73g + uv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAA + AACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+73rj/wuXB/7HVq/+pyJ7/z97I/9Pg + zf+ryZ//stas/8LkwP+94Lr/vuG8/6PGmP+90rT/6/Dn///////8/fv/3+rb/6/Ko/+u0ab/vOC5/7/h + vP+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAA + AAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/7zfuf+94Lr/u964/7/j + vf+53LX/o8SY/6PFmP+53LX/wOO+/7veuP+837n/veC6/8Djvv+lyZv/uc+v/+rv5////////f79/+bs + 4f+tx6H/rNCl/8Djvv+837n/vN+5/73guv+94Lr/veC6/7zfuf6/4r3/ut22/5e7iOuHq3IsAAAAAJW5 + hQYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3Isl7uI67rdtv+/4r3/vN+5/r3guv+94Lr/veC6/73g + uv+94Lr/vN+5/73guv+84Lr/ut22/7rdtv+84Lr/veC6/7zfuf+837n/veC6/73guv+/4rz/p8ue/7bO + q//r8ej///////7+/v/l7OH/ssun/6jNoP/B47//vN+5/7zfuf+94Lr/veC6/7zfuf6/4r3/ut22/5e7 + iOuHq3IsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAlLiEBgAAAACHq3Itl7uI67rdtv+/4r3/vN+5/r3g + uv+94Lr/veC6/73guv+837n/veC6/7zfuf+94Lr/vuG8/77hvP+94Lr/vN+5/73guv+94Lr/vN+5/7zf + uf+/4bz/vOC5/6jLnv+zy6j/7/Ps///////09vL/tcup/6PImf/C5MD/vN+5/7zfuf+94Lr/veC6/7zf + uf6/4r3/ut22/5e7iOuHq3ItAAAAAJS4hAYAAAAAAAAAAAAAAAAAAAAAlbmFBgAAAACHq3MsmLuI57rd + tv+/4r3/vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/73guv+837n/vN+5/7zfuf+837n/veC6/7zf + uf+837n/veC6/73guv+73rj/weO//7ndtf+qzKH/uc6t/9bhzv/A07b/sM+n/7fbs/++4Lv/vN+5/7zf + uf+94Lr/veC6/7zfuf6/4r3/ut22/5i7iOeHq3MsAAAAAJW5hQYAAAAAAAAAAAAAAAAAAAAAk7eDBgAA + AACGqnEwlbmG9rrdtv+/4r3+vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/u963/8Djvv+94Lr/qMqe/6vHnv+nyJv/ttqy/8Hk + v/+83rj/veC6/73guv+94Lr/veC6/7zfuf6/4r3+ut22/5W5hvaGqnEwAAAAAJO3gwYAAAAAAAAAAAAA + AAAAAAAAkraCBwAAAACFqnI1lLiF/7nctf+/4r39vN+4/r3guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+94Lr/veC6/73guv+837n/veC6/7zfuf+837n/vN+5/7zfuf+837n/veC6/7veuP++4Lv/wOK+/7HV + q/+94Lr/v+K9/7veuP+94Lr/vN+5/73guv+94Lr/veC6/7zfuP6/4r39udy1/5S4hf+FqnI1AAAAAJK2 + ggcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv+84Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/73g + uv+837n/vN+5/73gu/+837n/vN+5/73guv+837n/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7 + iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACHrXU0lruI/7ndtv+/4r39vN+5/r3g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv+94Ln/veC6/73guv+837n/vN+5/7zfuf+94Lv/vuG8/77h + vP+94Lv/vN+5/7zfuf+837n/veC6/73guv+94Lr/vN+5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf + uf6/4r39ud22/5a7iP+HrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nd + tv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/7zfuf+94Lr/vN+5/7zfuf+837n/weS//7zf + uf+sz6P/oMWW/6DFlv+sz6T/vN+5/8Hkv/+837n/vN+5/7zfuf+94Lr/veC6/7zfuf+94Lr/veC6/73g + uv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAA + AACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/veC6/73guv+837n/veC6/77h + u/+63bf/qMyg/5vBkP+awpD/mMGP/5fBj/+awpH/m8GQ/6jMn/+63rf/vuG7/73guv+837n/veC6/73g + uv+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5hQcAAAAAAAAAAAAA + AAAAAAAAlLmFBwAAAACHrXU0lruH/7ndtv+/4r39vN+5/r3guv+94Lr/veC6/73guv+94Lr/vN+5/7zf + uf+837n/veC5/7rdtv+kyJr/krmF/5G7h/+ZxJL/n8qa/57Kmv+ZxJL/kbqG/5K5hf+kyZr/ut23/7zg + uf+84Ln/vN+5/7zfuf+94Lr/veC6/73guv+94Lr/veC6/7zfuf6/4r39ud22/5a7h/+HrXU0AAAAAJS5 + hQcAAAAAAAAAAAAAAAAAAAAAk7iEBwAAAACHrXU0lruH/7nctf+/4r39u9+4/rzfuf+837n/vN+5/7zf + uf+837n/vN+5/7zfuP++4bv/vN+5/6XJm/+QuIL/mMOR/6POoP+eyZn/nciY/57ImP+eyZn/o86g/5jD + kf+QuIP/psmd/7zfuf++4bv/vN+4/7zfuf+837n/vN+5/7zfuf+837n/vN+5/7vfuP6/4r39udy1/5a7 + h/+HrXU0AAAAAJO4hAcAAAAAAAAAAAAAAAAAAAAAlLmFBwAAAACIrXU0lruI/7rdtv/A4779vN+5/r3g + uv+94Lr/veC6/73guv+94Lr/veC6/73guv/A4r7/uNu0/4+1gP+Yw5H/oMyd/53Hl/+dyJj/nciY/53I + mP+dyJj/nceX/6DMnf+Yw5H/j7WA/7nbtf/A4r7/vOC5/73guv+94Lr/veC6/73guv+94Lr/veC6/7zf + uf7A4779ut22/5a7iP+IrXU0AAAAAJS5hQcAAAAAAAAAAAAAAAAAAAAAlLmGBwAAAACIrnY0l7yJ/7ve + uP/B5MD9veG7/r7hvP++4bz/vuG8/77hvP++4bz/vuG7/8Djvv+837n/qc6h/5S9iv+axZT/n8qb/53I + mP+eyZn/nsmZ/57Jmf+eyZn/nciY/5/Km/+axZT/lLyJ/6rOof+837n/wOO+/77hu/++4bz/vuG8/77h + vP++4bz/vuG8/77hu/7B5MD9u964/5e8if+IrnY0AAAAAJS5hgcAAAAAAAAAAAAAAAAAAAAAh6tyBwAA + AACApGk1iKx0/53BkP+hxZX9n8OT/6DElP+gxJT/oMSU/6DElP+gxJT/n8OT/6LGl/+avo3/i7F7/5nE + kv+eyZn/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+eyZn/mcOS/4uxev+avo3/osaX/5/D + k/+gxJT/oMSU/6DElP+gxJT/oMSU/5/Dk/+gxJX9ncGQ/4isdP+ApGk1AAAAAIercwcAAAAAAAAAAAAA + AAAAAAAAia12BgAAAAB9oWYtjK957qrOov+iyZr+mMCO/pjBj/6YwY//mMGP/5jBj/+YwY//mMGP/5nC + kP+Wv4z/kruI/5zHl/+eyZn/nciY/53ImP+eyZn/nsmZ/57Jmf+eyZn/nciY/53ImP+eyZr/nMiX/5K7 + h/+Wv4z/mcKQ/5jBj/+YwY//mMGP/5jBj/+YwY//mMGP/pjBjv6jypr+qs6i/4yvee59oWUtAAAAAImt + dQYAAAAAAAAAAAAAAAAAAAAAjbJ8BQAAAAB1mlwhkraCwr/ivf613LT/os2e/Z7Kmv+gy5z/n8ub/5/L + m/+fy5v/n8ub/5/Lm/+gy5z/ocye/57Jmf+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+dyJj/nsmZ/6HMnv+gy5z/n8ub/5/Lm/+fy5v/n8ub/5/Lm/+gy5z/nsqa/6LNnv223LT/v+K9/pK2 + gcJ1mlwhAAAAAI6yfAUAAAAAAAAAAAAAAAAAAAAAgadsAwAAAABTfC8Phqxzfq7Sp/W427T/p8+i/JrG + lf6eyZn/nciY/53ImP+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/nciY/57JmP+eyZn/nsmZ/57J + mf+eyZn/nsmY/53ImP+eyZn/nciY/53Il/+dyJj/nciY/53ImP+dyJj/nciY/53ImP+eyZn/msaV/qfP + ovy427P/rtGm9YetdH1UfDIPAAAAAIKobQMAAAAAAAAAAAAAAAAAAAAAAAAAANT33wEAAAAAfKFlIpe7 + itm32bH/r9ar/ZvGlf6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/m8aV/q/Wq/232bH/lruH2XimZiEAAAAA1efOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyw + ewMAAAAAdZpeComtd7S016/9tty0/6HLnP2dyJj+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+dyJj+ocuc/bfdtP+01679ia11tXWaWwoAAAAAjLB5AwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIOpcAIAAAAAWYE6BX6kaXyv0afuut23/6nRpfubx5b/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bx5b/qdGk+7rdtv+u0abugKRqeluAOwUAAAAAhalxAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebWySbv47GtNau/7LYsPubx5b+nsmZ/p7I + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciZ/57Jmf6bx5b+stiv+7PWrf+bv43FeppfIwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMs3wBAAAAAAAAAACDq3GgrNGl/7vg + uf6gypv9nsmZ/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/57Jmf+gypv9u+C5/q3Q + pf+FqXCfAAAAAAAAAACOsnwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIq3IBAAAAAAAA + AAB7oWR0qM2f6Lzguf+q0aX8nciX/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/53I + l/+q0qX8u+C5/6nNoOd8oGZzAAAAAAAAAACIqnMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABojlAoncGRuLPWrf+02rH6nMeX/pzIl/6dyJj+nciY/p3ImP6dyJj+nciY/p3I + mP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I + mP6dyJj+nMiX/pzHl/602rH6s9at/53BkbhpjEsnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJm6iAIAAAAAh6x0f6bJm/+74Lr8oMqc/pvHlv6bx5b+nMeW/pzH + lv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzHlv6cx5b+nMeW/pzH + lv6cx5b+nMeW/pzHlv6bx5b+m8eW/qDLnP674Lr8psmb/4esdH8AAAAAmbqIAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIisdQIAAAAAd5xfZaHElebF6MX8u9+5+brf + uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rrf + uPq637j6ut+4+rrfuPq637j6ut+4+rrfuPq637j6ut+4+rvgufnF6MX8ocSV5necXmQAAAAAiKx0AgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+obAEAAAAAapRRJpG3 + gamixpb/qMuf/KnMn/6py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nL + n/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcuf/6nLn/+py5//qcyf/qjLn/yixpb/kbaBqGuS + UCUAAAAAgKdsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACet4sCAAAAAH2lZ0KGq3KVjrN+ho6yfYiNsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6y + fYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiOsn2IjrJ9iI6yfYiNsn2IjrJ9iI6z + foaGq3KVfqRoQgAAAACWuoQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIatcgGQtX8DmLyKA5i8igOXu4kDmLyKA5i8 + igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8igOYvIoDmLyKA5i8 + igOYvIoDmLyKA5i8igOXu4kDmLyKA5i8igOQtX8DhqxzAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///////wAA////////AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA + AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf + AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA + AAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf + AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAD8AAPwA + AAAAPwAA/gAAAAB/AAD+AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/4AAAAH/ + AAD/gAAAAf8AAP/AAAAD/wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/pGgBAAAAAHugZE6DqG1jhKpvW4Spbl2EqW5dhKluXYSp + bl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSpbl2EqW5dhKluXYSp + bl2EqW5dhKpvW4OobWN7oGROAAAAAH+kaAEAAAAAAAAAAJq+jQQAAAAAjbF7vqjLnv+s0KP7qs6h/qvO + ov+rzqL/q86i/6vOov+rzqL/q86i/6vOov+qzqL/qs6i/6vOov+rzqL/q86i/6vOov+rzqL/q86i/6vO + ov+rzqL/q86i/6rOof6s0KP7qMue/42xe74AAAAAmr6NBAAAAAAAAAAArM+jBAAAAACZvYqtveC6/8Ll + wfjA4777weO//MDjv/vA47/7weO/+8Djv/vB47/7wOO++8Hjv/vA4777weO/+8Hjv/vB47/7wOO/+8Dj + v/vA47/7wOO/+8Djv/vB47/8wOO++8Llwfi94Lr/mb2KrQAAAACsz6MEAAAAAAAAAACny54EAAAAAJa6 + hrK427P/veC6+7ret/673rj+u964/rveuP673rf+u964/rrdt/6937r+u9+4/r3guv673rj+u963/rve + t/673rj+u964/rveuP673rj+u964/rveuP663rf+veC6+7jbs/+WuoayAAAAAKfLngQAAAAAAAAAAKjM + nwQAAAAAlrqHsbnctf++4bz7vN+5/r3guv+94Lr+veC6/7zfuf+73rj/vuG8/7ndtv+oyp7/rdCl/77i + vP+837r/vN+5/7zfuv+94Lr/veC6/73guv+94Lr+veC6/7zfuf6+4bz7udy1/5a6h7EAAAAAqMyfBAAA + AAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+veC6/7zfuf6837n+u964/r/hvP643bX+qsqg/tXf + zf7C1Lj+q8+j/r/ivf6837n+vN+5/r3guv6837n+vN+5/rzfuf694Lr/vN+5/r7hu/u53LT/lrqHsQAA + AACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG8+7zfuf694Lr/vN+5/rveuP+/4bz/uNy1/6vL + of/b5dX///////n6+f/C1bn/q8+j/7/ivf+837n/vN+5/73guv+94Lr/vN+5/r3guv+837n+vuG8+7nc + tP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnctP++4bz7vN+5/r3guv+837j+vuG8/7jc + tf+qyaD/3+nb///////n7eP/9ff0//3+/f/F17v/q86h/7/jvf+837n/vN+5/7zfuf+94Lr+veC6/7zf + uf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAAAACWuoexudy0/77hu/u837n+vN+5/73f + uv663rf/q8uh/+Ho2///////4ure/6TEmf+50K//9/j1//39/f/G1r3/q86j/7/ivf+837r/vN+4/7zf + uf694Lr/vN+5/r7hvPu53LT/lrqHsQAAAACozJ8EAAAAAAAAAACozJ8EAAAAAJa6h7G53LT/vuG7+7zf + uf6837n/vd+6/rret/+qyaD/5uzh/+ju5P+ryaD/u9+5/7DUqv+5z6//+Pn3//39/P/D1rr/q8+j/77i + vP+837n/vN+5/r3guv+837n+vuG8+7nctP+WuoexAAAAAKjMnwQAAAAAAAAAAKjMnwQAAAAAlrqHsbnc + tP++4bz7vN+5/r3guv+837j+vuG7/7jdtf+tzKT/rsyl/7ndtf++4Lv/v+K9/6/TqP+70bH/9ffz//3+ + /f/H177/rM+k/7/ivP+83rj+veC6/7zfuf6+4bz7udy0/5a6h7EAAAAAqMyfBAAAAAAAAAAAqMyfBAAA + AACWuoexudy0/77hu/u837n+veC6/7zfuf673rj/vuG7/7ndtv+53bb/vuG7/7veuP+837n/wOO+/67T + qP+40K7/9vn1///////A0rb/q9Ck/8Djvv673rj/vN+5/r7hu/u53LT/lrqHsQAAAACozJ8EAAAAAAAA + AACpzJ8EAAAAAJe6h6+53LX/vuG8+7zfuf694Lr/vN+5/rzfuf+837j/veC6/73gu/+837j/vN+5/7zf + uf+83rj/wOO+/63Spv+90rP/3+fY/7jRr/+z167/vuG8/rvfuP+837n+vuG8+7nctf+XuoevAAAAAKnM + nwQAAAAAAAAAAKfKngQAAAAAlLiFu7jbtP++4bv6vN+5/r3guv+94Lr+vN+5/7zguv+837n/vN+5/73f + uv+837n/vN+4/7veuP+73rj/wOO+/7LUq/+oyJz/tdiw/7/ivf+73rj+veC6/7zfuf6+4bv6uNu0/5S4 + hbsAAAAAp8qeBAAAAAAAAAAApsudBAAAAAGUuYbBuNu0/77hu/q837n/veC6/rzfuf694Lr/veC5/73g + uv+84Lr/u964/7zfuf++4bz/vuG8/7zfuf+73rj/vuG8/7vfuf++4bv/u964/7zfuf694Lr+vN+5/77h + u/q427T/lLmGwQAAAAGmy50EAAAAAAAAAACny50EAAAAAJW7h8G43LT/vuG8+rzfuf+94Lr+vN+5/rzf + uf+837n/vN+5/7veuP+/4rz/vuC7/7XYsP+12LD/veC7/7/ivf+73rj/vd+6/7zfuf+837n/veC6/r3g + uv6837n/vuG8+rjctP+Vu4fBAAAAAKfLnQQAAAAAAAAAAKfLnQQAAAAAlbqGwbjctP++4bz6vN+5/73g + uv694Lr+veC6/7zfuf+837n/vuG7/7LWrf+ix5j/mcGP/5nBkP+ix5j/stas/77hu/+837n/vN+5/7zf + uf+94Lr+veC6/rzfuf++4bz6uNy0/5W6hsEAAAAAp8udBAAAAAAAAAAAp8ucBAAAAACVuobBt9uz/73g + u/q73rj/vN+4/rzfuP673rj/u963/73guv+u0qf/k7uH/5XAjv+dyJj/nciY/5XAjf+Tu4f/r9Ko/73g + uv+73rf/u964/7zfuP6837j+u964/73gu/q327P/lbqGwQAAAACny5wEAAAAAAAAAACozKAEAAAAAJa7 + iMG73rf/wOO/+r7hu/++4bz/vuG8/r7hu//A477/vN64/5O6h/+axpX/oMuc/53Hl/+dx5f/oMuc/5rG + lf+Uuof/vN65/8Djvv++4bv/vuG8/r7hvP++4bv/wOO/+rvet/+Wu4jBAAAAAKjMnwQAAAAAAAAAAKDE + lAQAAAABkbWBwa/SqP+22bH6tNeu/7TXr/6016//tNeu/7bZsf+jx5n/lb+N/57Jmv+cx5f/nciY/53I + mP+cx5f/nsma/5W/jP+jx5n/ttmx/7TXrv+016//tNev/rTXrv+22bH6r9Ko/5G2gcEAAAABn8SVBAAA + AAAAAAAAl7uIBAAAAACKrXe5ocaX/5rBkPqYv43+mMCO/5jAjf6YwI7/mMCO/5C4hP+bxpb/nciY/53I + mP+dyJj/nciY/53ImP+dyJj/m8eW/5C4g/+YwI7/mMCO/5jAjf6YwI7/mL+N/prCkPqhxpf/iq13uQAA + AACXu4kEAAAAAAAAAACny58DAAAAAJC0f4i43LX/qNGl+5zIl/6eypr/ncmZ/p3Jmf+eyZn/n8qc/53I + mP+dyJj/nsmY/57Jmf+eyZn/nsmY/53ImP+dyJj/n8qb/57Jmf+dyZn/ncmZ/p7Kmv+cyJf+qNGl+7nc + tf+QtH6HAAAAAKjMngMAAAAAAAAAAJa7iQEAAAAAdZxeLKfKneix163/m8aV/Z7Imf+dyJj+nciY/53I + mP+dyJj/nciY/53ImP+dyJj/nsmZ/57Jmf+dyJj/nciY/53ImP+dyJj/nciY/53ImP+dyJj+nsiZ/5vG + lf2x163/psmb6HSeXiwAAAAAlryIAQAAAAAAAAAAAAAAAAAAAAAAAAADmLuKvbjctf+hy5z7nMiX/p7J + mf+eyZn+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/p7J + mf+cyJf+ocuc+7jctf+Yu4m9AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAu924AgAAAACNsntlsdOq/arS + p/yaxpX9nsmZ/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3ImP6dyJj+nciY/p3I + mP6dyJj+nsmZ/prGlf2q0qb8sNOp/I6yfGQAAAAAt9yzAgAAAAAAAAAAAAAAAAAAAACBqG0CAAAAAGWP + Syiix5jntduz/5zHl/yeyJn/nsmZ/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57J + mf+eyZn/nsmZ/57Jmf6eyJn/nMeX/LXbs/+jxpjnZ4xKKAAAAACDp20CAAAAAAAAAAAAAAAAAAAAAHSZ + WwEAAAAABC4AB5q/jZ+12bD/oMqb+5jEk/6bxpX+msaV/prGlf6axpX+msaV/prGlf6axpX+msaV/prG + lf6axpX+msaV/prGlf6axpX+m8aV/pjEk/6gy5v7tdmw/5u/jp4CJgAHAAAAAHSYWwEAAAAAAAAAAAAA + AAAAAAAAAAAAAIqudwIAAAAAfqNoWK7Rpv+027T6pM6g+6fRo/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQ + o/un0KP7p9Cj+6fQo/un0KP7p9Cj+6fQo/un0KP7pM6g+7TctPqu0ab/fqNoWAAAAACKrncCAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAeaBjAQAAAABnj0wmncGQz6/SqP+v0qf9r9Gn/6/Rp/+v0af/r9Gn/6/R + p/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0af/r9Gn/6/Rp/+v0qf9r9Ko/53BkM9njUolAAAAAHqf + YgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8o2Y+iK12Zoywe12Lr3pfjK96X4yv + el+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfjK96X4yvel+Mr3pfi696X4ywe12IrXZmfaNmPgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////gAAAH4AAAB+AAAAfgAAAH4AAAB+AA + AAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AAAAfgAAAH4AAAB+AA + AAfwAAAP8AAAD/gAAB/4AAAf+AAAH/wAAD/8AAA///////////8oAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH2iZxiGq3E8iK1zNoesczeHrHM3h6xyN4arcTeHrHM3h6xzN4es + czeHrHM3iK1zNoarcTx9omcYAAAAAAAAAACUuIRer9Oo/7TXrvaz1q35s9at+bTXrvm12LD5s9at+bPW + rfmz1q35s9at+bTXrvav06j/lLiEXgAAAAAAAAAAm7+NXbrdtv+/4r77vuG7/r/ivf+737j/stas/73h + u/+/4b3/vuG8/77hvP6/4r77ut22/5u/jV0AAAAAAAAAAJm9i12427P/veC6+73guv623LP+wNq5/ubs + 4f631rH+ud63/r3guv6837n+veC7+7jbs/+ZvYtdAAAAAAAAAACZvYtduNu0/77hvPu43bX+wdq7/u3x + 6f7a5tX+6/Dn/rjWsf653rb+veC6/r3gu/u427T/mb2LXQAAAAAAAAAAmb2LXbjbtP++4bz7uN21/sLa + vP7F3L//rdSn/87gyf/t8er/vNm3/rret/6+4bv7uNu0/5m9i10AAAAAAAAAAJm9i12427T/veC7+73g + uv653bX+uN21/7/ivf+y2K3/z+HJ/9PgzP6z2K/+v+K9+7jbs/+ZvYtdAAAAAAAAAACXvIpjt9uz/77h + u/u837n/veC6/r7gu/++4bv/wOO+/7fbs/+117D+veC6/77hu/u327P/l7yKYwAAAAAAAAAAmL2KZbfa + s/+94Lv7u9+4/73guv663bb/qs+k/6rPo/+73rj/vuG7/rveuP+94Lv7t9qz/5i9imUAAAAAAAAAAJi9 + i2W53LX/wOK++7/hvP+937n+nsWV/5nEk/+ZxJL/nsWV/73fuf6/4bz/wOK++7nctf+YvYtlAAAAAAAA + AACTtoJlp8yf/6fNoPupzqH/oceY/pnEk/+fypr/n8qa/5nEk/+hx5j+qM6h/6fNoPuozJ//k7aCZQAA + AAAAAAAAkbN/NKjOovubx5b/msaV/pvHlv6eyJn+nciY/p3ImP6eyZn+m8eW/prGlf6bx5b/qM6i+5G0 + fjQAAAAAAAAAAAAAAACpzaHBpM2g/53ImPyeyZn+nsmZ/p7Jmf6eyZn+nsmZ/p7Jmf6dyJj8pM2f/6nN + oMEAAAAAAAAAAKvPowMAAAAAn8OTcKnRpf+bx5b8ncmY/p3ImP+dyJj/nciY/53ImP+dyJj+m8eW/KnR + pf+gwpNvAAAAAKvPowOMsXsBAAAAAIKlayKozaDrqc+j/ajOofmozqH6qM6h+qjOofqozqH6qM6h+anP + o/2ozaDqgqVrIgAAAACNsXsBAAAAAAAAAAAAAAAAiq93LZq7ijuauok4mrqJOZq6iTmauok5mrqJOZq6 + iTiau4o7iq53LQAAAAAAAAAAAAAAAP//AADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD + AADAAwAAwAMAAMADAADgBwAA4AcAAP//AAA= + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fHistory.Designer.cs b/Handler/Project/Dialog/fHistory.Designer.cs new file mode 100644 index 0000000..11c6696 --- /dev/null +++ b/Handler/Project/Dialog/fHistory.Designer.cs @@ -0,0 +1,544 @@ +namespace Project.Dialog +{ + partial class fHistory + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fHistory)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.btExport = new System.Windows.Forms.Button(); + this.dtED = new System.Windows.Forms.DateTimePicker(); + this.dtSD = new System.Windows.Forms.DateTimePicker(); + this.tbSearch = new System.Windows.Forms.ComboBox(); + this.btSearch = new System.Windows.Forms.Button(); + this.cm = new System.Windows.Forms.ContextMenuStrip(this.components); + this.목록저장ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.sendDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tbFind = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.dv = new arCtl.arDatagridView(); + this.sTIMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ETIME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.jTYPEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.BATCH = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.sIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.SID0 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rID0DataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lOCDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qTYDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qtymax = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.vNAMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.VLOT = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.CUSTCODE = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PARTNO = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PRNVALID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DataSet1(); + this.ta = new Project.DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter(); + this.panel2 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.cm.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dv)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Gainsboro; + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.button2); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.btExport); + this.panel1.Controls.Add(this.dtED); + this.panel1.Controls.Add(this.dtSD); + this.panel1.Controls.Add(this.tbSearch); + this.panel1.Controls.Add(this.btSearch); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(954, 75); + this.panel1.TabIndex = 0; + // + // button3 + // + this.button3.Location = new System.Drawing.Point(254, 8); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(42, 59); + this.button3.TabIndex = 13; + this.button3.Text = ">>"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(8, 8); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(42, 59); + this.button2.TabIndex = 12; + this.button2.Text = "<<"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(302, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(149, 23); + this.label1.TabIndex = 11; + this.label1.Text = "Enter search keyword"; + // + // btExport + // + this.btExport.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btExport.Image = ((System.Drawing.Image)(resources.GetObject("btExport.Image"))); + this.btExport.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btExport.Location = new System.Drawing.Point(683, 11); + this.btExport.Name = "btExport"; + this.btExport.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0); + this.btExport.Size = new System.Drawing.Size(145, 56); + this.btExport.TabIndex = 10; + this.btExport.Tag = "0"; + this.btExport.Text = "Export(&O)"; + this.btExport.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btExport.UseVisualStyleBackColor = true; + this.btExport.Click += new System.EventHandler(this.btExport_Click); + // + // dtED + // + this.dtED.Location = new System.Drawing.Point(56, 38); + this.dtED.Name = "dtED"; + this.dtED.Size = new System.Drawing.Size(192, 26); + this.dtED.TabIndex = 2; + // + // dtSD + // + this.dtSD.Location = new System.Drawing.Point(56, 9); + this.dtSD.Name = "dtSD"; + this.dtSD.Size = new System.Drawing.Size(192, 26); + this.dtSD.TabIndex = 1; + // + // tbSearch + // + this.tbSearch.Font = new System.Drawing.Font("Calibri", 12F); + this.tbSearch.FormattingEnabled = true; + this.tbSearch.Location = new System.Drawing.Point(302, 40); + this.tbSearch.Name = "tbSearch"; + this.tbSearch.Size = new System.Drawing.Size(219, 27); + this.tbSearch.TabIndex = 0; + this.tbSearch.Tag = "0"; + // + // btSearch + // + this.btSearch.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btSearch.Image = ((System.Drawing.Image)(resources.GetObject("btSearch.Image"))); + this.btSearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btSearch.Location = new System.Drawing.Point(525, 11); + this.btSearch.Name = "btSearch"; + this.btSearch.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0); + this.btSearch.Size = new System.Drawing.Size(155, 56); + this.btSearch.TabIndex = 9; + this.btSearch.Tag = "0"; + this.btSearch.Text = "Search(F5)"; + this.btSearch.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btSearch.UseVisualStyleBackColor = true; + this.btSearch.Click += new System.EventHandler(this.btSearch_Click); + // + // cm + // + this.cm.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.목록저장ToolStripMenuItem, + this.toolStripMenuItem1, + this.sendDataToolStripMenuItem}); + this.cm.Name = "cm"; + this.cm.Size = new System.Drawing.Size(129, 76); + // + // 목록저장ToolStripMenuItem + // + this.목록저장ToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("목록저장ToolStripMenuItem.Image"))); + this.목록저장ToolStripMenuItem.Name = "목록저장ToolStripMenuItem"; + this.목록저장ToolStripMenuItem.Size = new System.Drawing.Size(128, 22); + this.목록저장ToolStripMenuItem.Text = "Export"; + this.목록저장ToolStripMenuItem.Click += new System.EventHandler(this.목록저장ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(125, 6); + // + // sendDataToolStripMenuItem + // + this.sendDataToolStripMenuItem.ForeColor = System.Drawing.Color.Black; + this.sendDataToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("sendDataToolStripMenuItem.Image"))); + this.sendDataToolStripMenuItem.Name = "sendDataToolStripMenuItem"; + this.sendDataToolStripMenuItem.Size = new System.Drawing.Size(128, 22); + this.sendDataToolStripMenuItem.Text = "Print"; + this.sendDataToolStripMenuItem.Click += new System.EventHandler(this.sendDataToolStripMenuItem_Click); + // + // tbFind + // + this.tbFind.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tbFind.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbFind.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbFind.ImeMode = System.Windows.Forms.ImeMode.Alpha; + this.tbFind.Location = new System.Drawing.Point(0, 0); + this.tbFind.Name = "tbFind"; + this.tbFind.Size = new System.Drawing.Size(898, 40); + this.tbFind.TabIndex = 3; + this.tbFind.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tbFind.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbiSearch_KeyDown); + // + // statusStrip1 + // + this.statusStrip1.Location = new System.Drawing.Point(0, 583); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(954, 22); + this.statusStrip1.TabIndex = 5; + this.statusStrip1.Text = "statusStrip1"; + // + // dv + // + this.dv.A_DelCurrentCell = true; + this.dv.A_EnterToTab = true; + this.dv.A_KoreanField = null; + this.dv.A_UpperField = null; + this.dv.A_ViewRownumOnHeader = true; + this.dv.AllowUserToAddRows = false; + this.dv.AllowUserToDeleteRows = false; + this.dv.AutoGenerateColumns = false; + this.dv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.sTIMEDataGridViewTextBoxColumn, + this.ETIME, + this.jTYPEDataGridViewTextBoxColumn, + this.BATCH, + this.sIDDataGridViewTextBoxColumn, + this.SID0, + this.rIDDataGridViewTextBoxColumn, + this.rID0DataGridViewTextBoxColumn, + this.lOCDataGridViewTextBoxColumn, + this.qTYDataGridViewTextBoxColumn, + this.qtymax, + this.vNAMEDataGridViewTextBoxColumn, + this.VLOT, + this.CUSTCODE, + this.PARTNO, + this.dataGridViewCheckBoxColumn1, + this.PRNVALID, + this.Column1}); + this.dv.ContextMenuStrip = this.cm; + this.dv.DataSource = this.bs; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle7.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle7.Padding = new System.Windows.Forms.Padding(3); + dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv.DefaultCellStyle = dataGridViewCellStyle7; + this.dv.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv.Location = new System.Drawing.Point(0, 75); + this.dv.Name = "dv"; + this.dv.ReadOnly = true; + dataGridViewCellStyle8.Font = new System.Drawing.Font("Calibri", 9.75F); + this.dv.RowsDefaultCellStyle = dataGridViewCellStyle8; + this.dv.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Calibri", 9.75F); + this.dv.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dv.Size = new System.Drawing.Size(954, 468); + this.dv.TabIndex = 2; + // + // sTIMEDataGridViewTextBoxColumn + // + this.sTIMEDataGridViewTextBoxColumn.DataPropertyName = "STIME"; + dataGridViewCellStyle1.Format = "MM-dd HH:mm:ss"; + this.sTIMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.sTIMEDataGridViewTextBoxColumn.HeaderText = "Start"; + this.sTIMEDataGridViewTextBoxColumn.Name = "sTIMEDataGridViewTextBoxColumn"; + this.sTIMEDataGridViewTextBoxColumn.ReadOnly = true; + // + // ETIME + // + this.ETIME.DataPropertyName = "ETIME"; + dataGridViewCellStyle2.Format = "MM-dd HH:mm:ss"; + this.ETIME.DefaultCellStyle = dataGridViewCellStyle2; + this.ETIME.HeaderText = "End"; + this.ETIME.Name = "ETIME"; + this.ETIME.ReadOnly = true; + // + // jTYPEDataGridViewTextBoxColumn + // + this.jTYPEDataGridViewTextBoxColumn.DataPropertyName = "JTYPE"; + this.jTYPEDataGridViewTextBoxColumn.HeaderText = "Type"; + this.jTYPEDataGridViewTextBoxColumn.Name = "jTYPEDataGridViewTextBoxColumn"; + this.jTYPEDataGridViewTextBoxColumn.ReadOnly = true; + // + // BATCH + // + this.BATCH.DataPropertyName = "BATCH"; + this.BATCH.HeaderText = "BATCH"; + this.BATCH.Name = "BATCH"; + this.BATCH.ReadOnly = true; + // + // sIDDataGridViewTextBoxColumn + // + this.sIDDataGridViewTextBoxColumn.DataPropertyName = "SID"; + this.sIDDataGridViewTextBoxColumn.HeaderText = "SID"; + this.sIDDataGridViewTextBoxColumn.Name = "sIDDataGridViewTextBoxColumn"; + this.sIDDataGridViewTextBoxColumn.ReadOnly = true; + // + // SID0 + // + this.SID0.DataPropertyName = "SID0"; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.SID0.DefaultCellStyle = dataGridViewCellStyle3; + this.SID0.HeaderText = "*"; + this.SID0.Name = "SID0"; + this.SID0.ReadOnly = true; + // + // rIDDataGridViewTextBoxColumn + // + this.rIDDataGridViewTextBoxColumn.DataPropertyName = "RID"; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.rIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle4; + this.rIDDataGridViewTextBoxColumn.HeaderText = "RID"; + this.rIDDataGridViewTextBoxColumn.Name = "rIDDataGridViewTextBoxColumn"; + this.rIDDataGridViewTextBoxColumn.ReadOnly = true; + // + // rID0DataGridViewTextBoxColumn + // + this.rID0DataGridViewTextBoxColumn.DataPropertyName = "RID0"; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.rID0DataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle5; + this.rID0DataGridViewTextBoxColumn.HeaderText = "*"; + this.rID0DataGridViewTextBoxColumn.Name = "rID0DataGridViewTextBoxColumn"; + this.rID0DataGridViewTextBoxColumn.ReadOnly = true; + // + // lOCDataGridViewTextBoxColumn + // + this.lOCDataGridViewTextBoxColumn.DataPropertyName = "LOC"; + this.lOCDataGridViewTextBoxColumn.HeaderText = "L/R"; + this.lOCDataGridViewTextBoxColumn.Name = "lOCDataGridViewTextBoxColumn"; + this.lOCDataGridViewTextBoxColumn.ReadOnly = true; + // + // qTYDataGridViewTextBoxColumn + // + this.qTYDataGridViewTextBoxColumn.DataPropertyName = "QTY"; + this.qTYDataGridViewTextBoxColumn.HeaderText = "QTY"; + this.qTYDataGridViewTextBoxColumn.Name = "qTYDataGridViewTextBoxColumn"; + this.qTYDataGridViewTextBoxColumn.ReadOnly = true; + // + // qtymax + // + this.qtymax.DataPropertyName = "qtymax"; + this.qtymax.HeaderText = "(MAX)"; + this.qtymax.Name = "qtymax"; + this.qtymax.ReadOnly = true; + // + // vNAMEDataGridViewTextBoxColumn + // + this.vNAMEDataGridViewTextBoxColumn.DataPropertyName = "VNAME"; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.vNAMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle6; + this.vNAMEDataGridViewTextBoxColumn.HeaderText = "Vender"; + this.vNAMEDataGridViewTextBoxColumn.Name = "vNAMEDataGridViewTextBoxColumn"; + this.vNAMEDataGridViewTextBoxColumn.ReadOnly = true; + // + // VLOT + // + this.VLOT.DataPropertyName = "VLOT"; + this.VLOT.HeaderText = "Vendor #"; + this.VLOT.Name = "VLOT"; + this.VLOT.ReadOnly = true; + // + // CUSTCODE + // + this.CUSTCODE.DataPropertyName = "VNAME"; + this.CUSTCODE.HeaderText = "SUP"; + this.CUSTCODE.Name = "CUSTCODE"; + this.CUSTCODE.ReadOnly = true; + // + // PARTNO + // + this.PARTNO.DataPropertyName = "PARTNO"; + this.PARTNO.HeaderText = "PARTNO"; + this.PARTNO.Name = "PARTNO"; + this.PARTNO.ReadOnly = true; + // + // dataGridViewCheckBoxColumn1 + // + this.dataGridViewCheckBoxColumn1.DataPropertyName = "PRNATTACH"; + this.dataGridViewCheckBoxColumn1.HeaderText = "Attach"; + this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1"; + this.dataGridViewCheckBoxColumn1.ReadOnly = true; + this.dataGridViewCheckBoxColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewCheckBoxColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + // + // PRNVALID + // + this.PRNVALID.DataPropertyName = "PRNVALID"; + this.PRNVALID.HeaderText = "Validation"; + this.PRNVALID.Name = "PRNVALID"; + this.PRNVALID.ReadOnly = true; + this.PRNVALID.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.PRNVALID.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column1.HeaderText = "Remarks"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + // + // bs + // + this.bs.DataMember = "K4EE_Component_Reel_Result"; + this.bs.DataSource = this.dataSet1; + this.bs.Sort = "wdate desc"; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // ta + // + this.ta.ClearBeforeFill = true; + // + // panel2 + // + this.panel2.Controls.Add(this.tbFind); + this.panel2.Controls.Add(this.button1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel2.Location = new System.Drawing.Point(0, 543); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(954, 40); + this.panel2.TabIndex = 6; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button1.Location = new System.Drawing.Point(898, 0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(56, 40); + this.button1.TabIndex = 11; + this.button1.Tag = "0"; + this.button1.Text = "KEY"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // fHistory + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(954, 605); + this.Controls.Add(this.dv); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.statusStrip1); + this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Name = "fHistory"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Data History"; + this.Load += new System.EventHandler(this.fHistory_Load); + this.panel1.ResumeLayout(false); + this.cm.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dv)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + private System.Windows.Forms.Label label1; + + #endregion + private System.Windows.Forms.Panel panel1; + private arCtl.arDatagridView dv; + private System.Windows.Forms.BindingSource bs; + private DataSet1 dataSet1; + private System.Windows.Forms.Button btSearch; + private System.Windows.Forms.ComboBox tbSearch; + private System.Windows.Forms.DateTimePicker dtSD; + private System.Windows.Forms.DateTimePicker dtED; + private System.Windows.Forms.TextBox tbFind; + private System.Windows.Forms.Button btExport; + private System.Windows.Forms.ContextMenuStrip cm; + private System.Windows.Forms.ToolStripMenuItem 목록저장ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem sendDataToolStripMenuItem; + private System.Windows.Forms.StatusStrip statusStrip1; + private DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter ta; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.DataGridViewTextBoxColumn sTIMEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn ETIME; + private System.Windows.Forms.DataGridViewTextBoxColumn jTYPEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn BATCH; + private System.Windows.Forms.DataGridViewTextBoxColumn sIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn SID0; + private System.Windows.Forms.DataGridViewTextBoxColumn rIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn rID0DataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn lOCDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn qTYDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn qtymax; + private System.Windows.Forms.DataGridViewTextBoxColumn vNAMEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn VLOT; + private System.Windows.Forms.DataGridViewTextBoxColumn CUSTCODE; + private System.Windows.Forms.DataGridViewTextBoxColumn PARTNO; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewCheckBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn PRNVALID; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fHistory.cs b/Handler/Project/Dialog/fHistory.cs new file mode 100644 index 0000000..7e3706f --- /dev/null +++ b/Handler/Project/Dialog/fHistory.cs @@ -0,0 +1,245 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fHistory : Form + { + public StdLabelPrint.LabelPrint PrinterL = null; + // public StdLabelPrint.LabelPrint PrinterR = null; + public fHistory() + { + InitializeComponent(); + //Pub.init(); + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) this.Close(); + else if (e1.KeyCode == Keys.F5) btSearch.PerformClick(); + }; + this.tbSearch.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Enter) btSearch.PerformClick(); }; + this.dv.CellFormatting += (s1, e1) => + { + if (e1.RowIndex >= 0 && e1.ColumnIndex >= 0) + { + var dv = s1 as DataGridView; + //var cell = dv.Rows[e1.RowIndex].Cells["dvc_upload"]; + //if (cell.Value != null) + //{ + // if (cell.Value.ToString() == "X") + // dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Red; + // else + // dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Black; + //} + //else dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Black; + } + }; + this.dv.DataError += dv_DataError; + + this.Text =$"Result Viewer ({SETTING.Data.McName})"; + ///this.Text = string.Format("{0} ver{1} - {2}", Application.ProductName, ""); + } + + void dv_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + + private void fHistory_Load(object sender, EventArgs e) + { + + dtSD.Value = DateTime.Now; + dtED.Value = DateTime.Now; + + //PrinterL = new StdLabelPrint.LabelPrint(SETTING.Data.PrinterName); + //PrinterR = new StdLabelPrint.LabelPrint("PrinterR"); + //ApplyZplCode(); + + refreshList(); + + } + + void refreshList() + { + //검색일자 검색 + if (dtED.Value < dtSD.Value) + { + UTIL.MsgE("End date is earlier than start date"); + dtSD.Value = dtED.Value; + dtSD.Focus(); + return; + } + //저장소초기화 + this.dataSet1.K4EE_Component_Reel_Result.Clear(); + + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + wat.Restart(); + + //자료를 검색한다. + var search = tbSearch.Text.Trim(); + if (search.isEmpty()) search = "%"; + else search = "%" + search + "%"; + + ta.FillBySearch(this.dataSet1.K4EE_Component_Reel_Result, SETTING.Data.McName, dtSD.Value.ToShortDateString(), dtED.Value.ToShortDateString(), search); + + wat.Stop(); + + tbSearch.Focus(); + tbSearch.SelectAll(); + dv.AutoResizeColumns(); + + } + private void btSearch_Click(object sender, EventArgs e) + { + refreshList(); + } + + private void tbiSearch_KeyDown(object sender, KeyEventArgs e) + { + //내부검색기능 + if (e.KeyCode == Keys.Enter) + { + FindData(); + } + + } + void FindData() + { + string searchkey = tbFind.Text.Trim(); + if (searchkey.isEmpty()) + { + bs.Filter = ""; + tbFind.BackColor = SystemColors.Control; + } + else + { + string filter = "rid0 like '%{0}%' or sid0 like '%{0}%' or qr like '%{0}%' or vlot like '%{0}%'"; + filter = string.Format(filter, searchkey); + try + { + bs.Filter = filter; + tbFind.BackColor = Color.Lime; + } + catch + { + bs.Filter = ""; + tbFind.BackColor = Color.Pink; + } + } + tbFind.Focus(); + tbFind.SelectAll(); + } + private void btExport_Click(object sender, EventArgs e) + { + saveXLS(); + } + void saveXLS() + { + + var license = ("Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9").Split('/'); + var xls = new libxl.XmlBook(); + xls.setKey(license[0], license[1]); + xls.addSheet("Result"); + var Sheet = xls.getSheet(0); + + int row = 0; + for (int i = 0; i < this.dv.Columns.Count; i++) + { + var col = this.dv.Columns[i]; + Sheet.writeStr(row, i, col.HeaderText); + } + row += 1; + foreach (DataGridViewRow dr in this.dv.Rows) + { + for (int i = 0; i < this.dv.Columns.Count; i++) + { + var propertyName = dv.Columns[i].DataPropertyName; + if (propertyName.isEmpty()) + { + Sheet.writeStr(row, i, dr.Cells[i].FormattedValue.ToString());// dr[colname].ToString()); + } + else + { + var dType = this.dataSet1.K4EE_Component_Reel_Result.Columns[propertyName].DataType; + if (dType == typeof(float)) Sheet.writeNum(row, i, (float)dr.Cells[i].Value); + else if (dType == typeof(double)) Sheet.writeNum(row, i, (double)dr.Cells[i].Value); + else if (dType == typeof(int)) Sheet.writeNum(row, i, (int)dr.Cells[i].Value); + else Sheet.writeStr(row, i, dr.Cells[i].FormattedValue.ToString());// dr[colname].ToString()); + } + + } + row += 1; + } + Sheet.setAutoFitArea(0, 0, row, dv.Columns.Count); + + string filename = "export_{0}~{1}.xlsx"; + filename = string.Format(filename, dtSD.Value.ToString("yyyyMMdd"), dtED.Value.ToString("yyyyMMdd")); + + var sd = new SaveFileDialog(); + sd.Filter = "xlsx|*.xlsx"; + sd.FileName = filename; + sd.RestoreDirectory = true; + if (sd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; + + try + { + + xls.save(sd.FileName); + PUB.log.Add("Export Data : " + sd.FileName); + if (UTIL.MsgQ("The following file has been created.\n\n" + sd.FileName + "\n\nWould you like to check the file?") == DialogResult.Yes) + UTIL.RunExplorer(sd.FileName); + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + } + + } + private void 목록저장ToolStripMenuItem_Click(object sender, EventArgs e) + { + saveXLS(); + } + + private void sendDataToolStripMenuItem_Click(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.K4EE_Component_Reel_ResultRow; + + using(var f = new Dialog.fManualPrint(dr.SID,dr.VLOT, dr.QTY.ToString(),dr.MFGDATE,dr.RID, dr.VNAME, dr.PARTNO)) + { + f.ShowDialog(); + } + } + + + private void button1_Click(object sender, EventArgs e) + { + var str = tbFind.Text.Trim(); + var f = new AR.Dialog.fTouchKeyFull("Enter search term", str); + if (f.ShowDialog() != DialogResult.OK) return; + tbFind.Text = f.tbInput.Text.Trim(); + FindData(); + } + + private void button2_Click(object sender, EventArgs e) + { + var sd = dtSD.Value.AddDays(-1); + dtSD.Value = sd; + dtED.Value = sd; + } + + private void button3_Click(object sender, EventArgs e) + { + var sd = dtED.Value.AddDays(1); + dtSD.Value = sd; + dtED.Value = sd; + } + } +} diff --git a/Handler/Project/Dialog/fHistory.resx b/Handler/Project/Dialog/fHistory.resx new file mode 100644 index 0000000..e7d2db7 --- /dev/null +++ b/Handler/Project/Dialog/fHistory.resx @@ -0,0 +1,2004 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN + 0AAADdABEGw9BwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALxSURBVEhL5ZTL + T1NBGMVZuPI/8H9whxgFDdVUEzX1URa6AjGEKAZDjbEoKBihiGAExSBQSktBoLys4RGQShVofSBFQDCK + EZSFQQiifVAoHDvD3HqLkNp7kY2nOcl3Tzrfb765nYb830rOUUOIr+ZpO1gLYSJNghVZk11cg/R83RPW + JngJBdsdLuSU1JDJLaxVcBIKJhIFFwMmEgznN2kfM/nMiZ9x+crNEniu2rAUFFzoxGuZtQ0s8mVOKycj + 4mf8fDUJBotVUOBo9UWsp1nbwOIWxGlToOmqg95qhLI2x69Z/mMdql40IbOpkD4nValQ87IF8bor9Lnc + 0oh0411as7aBxTXvG3+LT1MTsIzaMLfgRmLldZpXWh9h2j6D5gEzXPNz0HTX43R5GhaXFnGjpZjWS95P + VnORMPCMYxal3oljNZfoNIpqFc17xwbROfKc1kXmahSYKmg9OjkOw6tW3GxVw70wj1Nll0WAn9XSmm8C + Iidg/dhP6xi1kuZGm8m7qSHUv27DwJd3vu+ztoHFLVgLTHzuQQb0FiOcbhe0PQ00UzXf9675gf7PI/T9 + 62119LqxtoHFNefA5Kib3nTigiGb5rqeRu9xltDaNj4M07CV1uRoyRG7PfNIabhNodslMj8zxOriwIMT + 7+l76/7QC4fbibMV12jeMvAUX2envJsxwz7nRGFnFc2JyRF/d/6kx8+B1XUm6r8Gx+tSoe1u8F6Nhzhf + neVrHlOqxJ0Ovd914kyu0K02Da0Fg8U6aPB6/mUKBpNdc+bEz/j5atqwiVW5BRTANx/Md1ikrIghlyVm + Yo/HgwRFKuIUaT7gSkcnJNvDpcfMEolkE0MuS+w7djpdOBGbiMSU7D+gZ5Qq9659UUOhMtlmhvut9fhx + fZuaxsGok0jOvOeDKjMKFsOl8snQ3fItDOUvAhZrQ7sVrV19iDxwHNfyyqgjpHL7NsmhrQzzbxW257A8 + Yn+Ug5jULN4Y7ZAeUezcezSJPfIUEvILA5nT3LqWQaIAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK + XQAACl0B/If0DAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAM3SURBVEhLtZZZ + TxNRFMeJRuMaY6Iv+qRG426ivOCDr8YP4BdQg/HRKJQCHaat2paWlpYudqcz3ehGlYgp2hJAKd1sywMS + wASklIISDLtEOs4lNz7oWDow/SUnzcw99//vnHPvnSljAhQ176uRmU7XSPQ36sX6U+AaDjEPiqK7EIXt + EV/TNig0tudUnuCs6U3/PPgF1+A+qrRVgjw4ZefUig2Xn6mdo3hXfDmaWSXSc8Q/EZlaIcjxJZ7GMcKW + mC7CqdsHabHcEeq9MwOTy5SGf0f46xIh0Htz3BbsNpSgDyozXRcafbPx3Dqlyf8C5AuM3lmOAr8GpYrn + rsu1m6d2jA1kVijFtwpQIXL+CO2eIwr8oSOUWqQSLTZsoeQC0ozdh5LFwdc4BxMz9Er8d8SnfxI8jTMF + JbcGVakOiYztWSoxuiEw+LIoqj0ApQvDlmjPa7yhHJUQ3VC5gzl2k+4clC4Mq0l309wZnqMSohsmUoct + NlZA6cKAf6hyM/PEandwuqpRewZKFwb0hKkei4y+KVpnOf+lMxnNrlGKFRvRqVWC3B0JKFkcYB/j7+I7 + 2sdYIEp/H4OTi6u0f+mfWKQU3Sr6xxcIrspO/+QCfeFIWz+JDN78ds7q5zp3liU1X4FyxQEOELJEidaO + 3jVbIAwWSJ7e28mTpf12Ygm1RxC5JY2//bjeGRkiDP7QUr2stYcs2zDWFftR6H2MBWLzXLV9qFqkvwDl + iuOJRHusQYF9tgfCG8DU3NGz2iDHA6DfoFccmeUBX+VMUn2BcMn75Pg92j2tFhlPIApstO19BJr2riHN + lj4Ude2FKX9g7JsLiJBPOuEKxfLAFJSZI7fEH0td+2EK81Q1ms9ylXjG0x0ngClZ5l+IHEs9FWMHYQrz + 1Ir1V7kt1oyvJ7lp6uiKbJCmw2CBwRTmYcssFTyVLevvS22auoOxPFneMfYL03GYwjx1EsMtnto24/+Q + 3jT1dCcIcmGN10ktJ2EK89QI1Ee5SmvmFTRtJ8sMyg16DVNKA7ltyputr78BU39fGphmWULdJThcOsC+ + RBV4Sm7t+I4qrZN1UmM5HCo9lVrtHrCiyac/DG+VmLKy39JXNTjPcJ2cAAAAAElFTkSuQmCC + + + + 181, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN + 0AAADdABEGw9BwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFPSURBVDhPlZJf + S8JgGMX3qbruC9RHKIIgqvsSglwXRVBRUhHWLHMFZXYhdGEjy9JYipRBZSqW9I8RSCDmn6vT3seVU96c + /uDA+7x7ztkZTLDNSWhHosMTE3iwh1awnQWXD+KyrBq2Or8BSi5Iaj4z2E65UtVDDmBf2m4M6ZPG0KkM + aw12cZVNIPGSRDCpol8aR/TpluZwOo5FxY3LzDVGZBGfhTw/oFgpkXH9fB/Dsp0WB90T2LjwYsgzibcv + DfMBF0KPUX5AoVxsqLgVOURae4YvHqA5reVwfBfG6ulu6wBZ9VMDZ2iPGn1XS3TvvzmhlqM7U/yASCaO + 5EcWZ3rFgU0b7t8z9NZQKkaG6aM1pPRG7MwN6FSGtUar/6B5Zjy85vkB7dLV3UMy7O01MPNvgBUrTvef + 2aRZCrCSV1Hp22ccLpO5VzQ6dAYz1s2C8AOKH12z48KW+wAAAABJRU5ErkJggg== + + + + + R0lGODlhEAAQAIQfAJfL/HKQrsDf/ezx9uXt9cfj/omwyldwkbvd/UlVa/L2+mOc4bba/KPQ+6vU+4m7 + 7FJhe7TR4F6Z4ENLXNTh6rHX/JrA1qjL3mif4tvn7ykxQz5FVeLp8Hyhvf///////yH/C05FVFNDQVBF + Mi4wAwEBAAAh+QQBAAAfACwAAAAAEAAQAAAIvQA9CBxIcOCHgx4yRIhwwYIFAwY6dAgQwAPCCBkIDNC4 + kYDHBwcseohAoIBJkwJSKngAUuAFBScLpESAQIFNCAItwEQpAAMCBgwqKMDpQSdPBBgWBHUwVKABmBii + LpgqwQHTBE4V9Ey6QILXBg0IYPXQYcDMoF/BEpggsCzNpRLANgDAga2HAAN+LpULAECGDQIDKPhZwSrY + vgAGAPZwgIKCjhwic8gwIIKGwAcyQ4CQIMGECRs2aCBasDTBgAA7 + + + + 249, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 117, 17 + + + 17, 17 + + + 366, 17 + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fImp.Designer.cs b/Handler/Project/Dialog/fImp.Designer.cs new file mode 100644 index 0000000..552a187 --- /dev/null +++ b/Handler/Project/Dialog/fImp.Designer.cs @@ -0,0 +1,315 @@ +namespace Project.Dialog +{ + partial class fImp + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.numericUpDown3 = new System.Windows.Forms.NumericUpDown(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.numericUpDown2 = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.label2 = new System.Windows.Forms.Label(); + this.tbUpdate = new System.Windows.Forms.Button(); + this.btPreView = new System.Windows.Forms.Button(); + this.btSelect = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.prb1 = new System.Windows.Forms.ToolStripProgressBar(); + this.lbMsg = new System.Windows.Forms.ToolStripStatusLabel(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.listView1 = new System.Windows.Forms.ListView(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.statusStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.panel1.Controls.Add(this.numericUpDown3); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.numericUpDown2); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.numericUpDown1); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.tbUpdate); + this.panel1.Controls.Add(this.btPreView); + this.panel1.Controls.Add(this.btSelect); + this.panel1.Controls.Add(this.textBox1); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1048, 77); + this.panel1.TabIndex = 0; + // + // numericUpDown3 + // + this.numericUpDown3.Location = new System.Drawing.Point(435, 42); + this.numericUpDown3.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.numericUpDown3.Name = "numericUpDown3"; + this.numericUpDown3.Size = new System.Drawing.Size(100, 21); + this.numericUpDown3.TabIndex = 12; + this.numericUpDown3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(392, 47); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(37, 12); + this.label5.TabIndex = 11; + this.label5.Text = "Sheet"; + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.label4.AutoSize = true; + this.label4.ForeColor = System.Drawing.Color.White; + this.label4.Location = new System.Drawing.Point(934, 56); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(105, 12); + this.label4.TabIndex = 10; + this.label4.Text = "▼ Column Setting"; + // + // numericUpDown2 + // + this.numericUpDown2.Location = new System.Drawing.Point(219, 42); + this.numericUpDown2.Maximum = new decimal(new int[] { + -1530494977, + 232830, + 0, + 0}); + this.numericUpDown2.Name = "numericUpDown2"; + this.numericUpDown2.Size = new System.Drawing.Size(100, 21); + this.numericUpDown2.TabIndex = 8; + this.numericUpDown2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.numericUpDown2.ValueChanged += new System.EventHandler(this.numericUpDown2_ValueChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(193, 47); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(14, 12); + this.label3.TabIndex = 7; + this.label3.Text = "~"; + this.label3.Click += new System.EventHandler(this.label3_Click); + // + // numericUpDown1 + // + this.numericUpDown1.Location = new System.Drawing.Point(79, 42); + this.numericUpDown1.Maximum = new decimal(new int[] { + -1530494977, + 232830, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(100, 21); + this.numericUpDown1.TabIndex = 6; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.numericUpDown1.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(12, 47); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(59, 12); + this.label2.TabIndex = 5; + this.label2.Text = "Start Row"; + // + // tbUpdate + // + this.tbUpdate.Location = new System.Drawing.Point(703, 14); + this.tbUpdate.Name = "tbUpdate"; + this.tbUpdate.Size = new System.Drawing.Size(109, 23); + this.tbUpdate.TabIndex = 4; + this.tbUpdate.Text = "Update Data"; + this.tbUpdate.UseVisualStyleBackColor = true; + this.tbUpdate.Click += new System.EventHandler(this.tbUpdate_Click); + // + // btPreView + // + this.btPreView.Location = new System.Drawing.Point(622, 14); + this.btPreView.Name = "btPreView"; + this.btPreView.Size = new System.Drawing.Size(75, 23); + this.btPreView.TabIndex = 3; + this.btPreView.Text = "PreView"; + this.btPreView.UseVisualStyleBackColor = true; + this.btPreView.Click += new System.EventHandler(this.button2_Click); + // + // btSelect + // + this.btSelect.Location = new System.Drawing.Point(541, 14); + this.btSelect.Name = "btSelect"; + this.btSelect.Size = new System.Drawing.Size(75, 23); + this.btSelect.TabIndex = 2; + this.btSelect.Text = "Select"; + this.btSelect.UseVisualStyleBackColor = true; + this.btSelect.Click += new System.EventHandler(this.button1_Click); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(78, 15); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(457, 21); + this.textBox1.TabIndex = 1; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(16, 19); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 0; + this.label1.Text = "filename"; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 77); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Padding = new System.Windows.Forms.Padding(3, 3, 3, 0); + this.flowLayoutPanel1.Size = new System.Drawing.Size(1048, 62); + this.flowLayoutPanel1.TabIndex = 9; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.prb1, + this.lbMsg}); + this.statusStrip1.Location = new System.Drawing.Point(0, 521); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1048, 22); + this.statusStrip1.TabIndex = 1; + this.statusStrip1.Text = "statusStrip1"; + // + // prb1 + // + this.prb1.Name = "prb1"; + this.prb1.Size = new System.Drawing.Size(300, 16); + // + // lbMsg + // + this.lbMsg.Name = "lbMsg"; + this.lbMsg.Size = new System.Drawing.Size(16, 17); + this.lbMsg.Text = "..."; + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView1.Location = new System.Drawing.Point(0, 77); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(1048, 444); + this.dataGridView1.TabIndex = 2; + // + // listView1 + // + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(0, 139); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(1048, 382); + this.listView1.TabIndex = 3; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // fImp + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1048, 543); + this.Controls.Add(this.listView1); + this.Controls.Add(this.flowLayoutPanel1); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.panel1); + this.Name = "fImp"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fImp"; + this.Load += new System.EventHandler(this.fImp_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button btSelect; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.Button tbUpdate; + private System.Windows.Forms.Button btPreView; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.NumericUpDown numericUpDown2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.NumericUpDown numericUpDown1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.ToolStripStatusLabel lbMsg; + private System.Windows.Forms.ToolStripProgressBar prb1; + private System.Windows.Forms.NumericUpDown numericUpDown3; + private System.Windows.Forms.Label label5; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fImp.cs b/Handler/Project/Dialog/fImp.cs new file mode 100644 index 0000000..3eeee6e --- /dev/null +++ b/Handler/Project/Dialog/fImp.cs @@ -0,0 +1,441 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fImp : Form + { + DataTable dt; + public fImp(DataTable dt_, string title, string[] collist) + { + InitializeComponent(); + this.dt = dt_; + foreach (var col in collist) + { + var uc = new UserControl1(); + uc.label1.Text = col; + uc.numericUpDown1.Value = 0; + uc.Size = new Size(163, 29); + uc.numericUpDown1.Tag = col; + uc.numericUpDown1.ValueChanged += NumericUpDown1_ValueChanged; + uc.numericUpDown1.BackColor = Color.LightGray; + this.flowLayoutPanel1.Controls.Add(uc); + } + this.Text = "Excel Import(" + title + ")"; + } + + private void NumericUpDown1_ValueChanged(object sender, EventArgs e) + { + //값에 따라서 색상을 달리한다. + var ctl = sender as NumericUpDown; + var col = ctl.Tag.ToString(); + if (ctl.Value == 0) + ctl.BackColor = Color.LightGray; + else + ctl.BackColor = Color.Lime; + UpdateColName(); + } + + void UpdateColName() + { + //reset name + for (int i = 1; i <= this.listView1.Columns.Count; i++) + listView1.Columns[i - 1].Text = "COL" + i.ToString(); + + //remap name + foreach (UserControl1 ctl in this.flowLayoutPanel1.Controls) + { + var colname = ctl.label1.Text; + var colNo = (int)ctl.numericUpDown1.Value; + if (colNo < 1) continue; + listView1.Columns[colNo - 1].Text = colname; + } + } + + private void button1_Click(object sender, EventArgs e) + { + var od = new OpenFileDialog(); + od.RestoreDirectory = true; + if (od.ShowDialog() == DialogResult.OK) + { + this.textBox1.Text = od.FileName; + btPreView.PerformClick(); + } + } + + private void button2_Click(object sender, EventArgs e) + { + var fn = this.textBox1.Text.Trim(); + var ext = System.IO.Path.GetExtension(fn); + libxl.Book book; + + if (ext == "xls") book = new libxl.BinBook(); + else book = new libxl.XmlBook(); + + //Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9 + book.setKey("Amkor Technology", "windows-242f240302c3e50d6cb1686ba2q4k0o9"); + book.load(fn); + var sheet = book.getSheet((int)numericUpDown3.Value); + var cols = sheet.lastCol(); + var rows = sheet.lastRow(); + if (numericUpDown1.Value < 1) numericUpDown1.Value = 0; + + if(numericUpDown2.Value > rows) this.numericUpDown2.Value = rows; + else if(numericUpDown2.Value < 1) this.numericUpDown2.Value = rows; + + var sn = (int)numericUpDown1.Value; + var en = (int)numericUpDown2.Value; + + if (sn < 1) + { + MessageBox.Show("Start row number must be greater than 0"); + return; + } + if (en < sn) + { + MessageBox.Show("End row number must be greater than start number"); + return; + } + + this.listView1.Columns.Clear(); + for (int i = 1; i <= cols; i++) + { + this.listView1.Columns.Add("col" + i.ToString()); + } + + var previewcnt = 20; + this.listView1.Items.Clear(); + var maxrow = Math.Min(previewcnt, en); + for (int i = sn; i <= maxrow; i++) + { + var data0 = sheet.readStr(i - 1, 0); + var lv = this.listView1.Items.Add(data0); + for (int j = 1; j < cols; j++) + { + var data1 = sheet.readStr(i - 1, j); + lv.SubItems.Add(data1.ToString()); + } + } + this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); + lbMsg.Text = $"Preview displays up to {previewcnt} items"; + } + + private void numericUpDown2_ValueChanged(object sender, EventArgs e) + { + + } + + private void label3_Click(object sender, EventArgs e) + { + + } + + private void fImp_Load(object sender, EventArgs e) + { + + } + + void AddData(DataSet1.Component_Reel_SIDConvDataTable dt2, string v_101, string v_103, string v_106, string v_108, string v_103_2, ref int cntI, ref int cntE) + { + var newdr = dt2.NewComponent_Reel_SIDConvRow(); + if (string.IsNullOrEmpty(v_101) == false) newdr.M101 = v_101; + if (string.IsNullOrEmpty(v_103) == false) newdr.M103 = v_103; + if (string.IsNullOrEmpty(v_106) == false) newdr.M106 = v_106; + if (string.IsNullOrEmpty(v_108) == false) newdr.M108 = v_108; + if (string.IsNullOrEmpty(v_103_2) == false) newdr.M103_2 = v_103_2; + dt2.AddComponent_Reel_SIDConvRow(newdr); + cntI += 1; + } + + void UpdateData(DataSet1.Component_Reel_SIDConvDataTable dt2, + List list, + string mainValue, string column, + string v_101, string v_103, string v_106, string v_108, string v_103_2, ref int cntI, ref int cntE) + { + //데이터를 업데이트해준다. + foreach (var item in list) + { + //103값이 있는경우 처리해야한다 + if (string.IsNullOrEmpty(mainValue) == false) + { + //값이 비어있다면 기록하고 없다면 추가한다. + if (item[column] == null || string.IsNullOrEmpty(item[column].ToString())) + { + item[column] = mainValue; + item.EndEdit(); + cntE += 1; + } + else if (item[column].ToString() != mainValue) + AddData(dt2, v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); + } + } + } + + private void tbUpdate_Click(object sender, EventArgs e) + { + //자료등록메세지 + var dlg = MessageBox.Show(string.Format("Do you want to register {0} records?", this.numericUpDown2.Value), "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (dlg == DialogResult.Yes) + { + //먼저 컬럼 목록을 가져온다 + Dictionary collist = new Dictionary(); + foreach (UserControl1 uc in this.flowLayoutPanel1.Controls) + { + var col = uc.label1.Text; + var no = (int)uc.numericUpDown1.Value; + if (no == 0) continue; + if (collist.Where(t => t.Value == no).Any()) + { + MessageBox.Show(string.Format("Column {0} is already assigned", no)); + return; + } + collist.Add(col, no); + } + + if (collist.Count < 1) + { + MessageBox.Show("No columns have been assigned"); + return; + } + + + var fn = this.textBox1.Text.Trim(); + var ext = System.IO.Path.GetExtension(fn); + libxl.Book book; + if (ext == "xls") book = new libxl.BinBook(); + else book = new libxl.XmlBook(); + + //Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9 + book.setKey("Amkor Technology", "windows-242f240302c3e50d6cb1686ba2q4k0o9"); + book.load(fn); + var sheet = book.getSheet((int)numericUpDown3.Value); + + var sn = (int)numericUpDown1.Value; + var en = (int)numericUpDown2.Value; + this.prb1.Value = 0; + this.prb1.Maximum = en; + var cntI = 0; + var cntSkip = 0; + var cntD = 0; + var cntE = 0; + for (int i = sn; i <= en; i++) + { + this.prb1.Value = i; + this.lbMsg.Text = string.Format("{0}/{1} Added:{2},SKIP:{3},Duplicate:{4}", i, en, cntI, cntSkip, cntD); + if (i % 10 == 0) Application.DoEvents(); + + Dictionary datalist = new Dictionary(); + foreach (var coldata in collist) + { + var colname = coldata.Key; + var colno = coldata.Value; + + var data0 = sheet.readStr(i - 1, colno - 1); + datalist.Add(colname, data0); + } + + //데이터를 다 기록했다 이중 기준값인 SID + if (dt is DataSet1.Component_Reel_SIDInfoDataTable) + { + //sid 열의 값을 취한다. + if (datalist.Where(t => t.Key == "SID").Any() == false) continue; + var sid = datalist.Where(t => t.Key == "SID").First().Value; + + var custcode = datalist.Where(t => t.Key == "CustCode").First().Value; + if (custcode == null) custcode = string.Empty; + else custcode = custcode.PadLeft(4, '0'); + + var partno = datalist.Where(t => t.Key == "PartNo").First().Value; + if (partno == null) partno = string.Empty; + + + partno = partno.Trim(); + custcode = custcode.Trim(); + sid = sid.Trim(); + + var tata = new DataSet1TableAdapters.Component_Reel_SIDInfoTableAdapter(); + + //이 sid 값이 있는지 체크한다. + var cnt = tata.CheckData(sid, custcode, partno); + //var dt2 = dt as DataSet1.Component_Reel_SIDInfoDataTable; + //var sidlist = dt2.Where(t => t.SID == sid && t.PartNo == partno && t.CustCode == custcode); + if(cnt == 0) + { + //없다면 추가해준다. + //var newdr = dt2.NewComponent_Reel_SIDInfoRow(); + //newdr.SID = sid; + //newdr.PartNo = partno; + //newdr.CustCode = custcode; + //newdr.Remark = "신규추가" + DateTime.Now.ToShortTimeString(); + //dt2.AddComponent_Reel_SIDInfoRow(newdr); + cntI += 1; + + tata.Insert(sid, custcode, string.Empty, string.Empty, partno, string.Empty, DateTime.Now.ToString()); + //Boolean bInsert = false; + //foreach (var item in datalist) + //{ + // if (string.IsNullOrEmpty(item.Value) == false) + // { + // if (item.Key.ToLower() == "custcode") + // { + // var itemvalue = item.Value.ToString(); + // itemvalue = itemvalue.PadLeft(4, '0'); + // newdr[item.Key] = itemvalue; + // } + // else + // { + // newdr[item.Key] = item.Value; + // } + // if (item.Key.ToUpper() != "SID") bInsert = true; + // } + + //} + //if (bInsert) + //{ + // newdr.Remark = "신규추가" + DateTime.Now.ToShortTimeString(); + // dt2.AddComponent_Reel_SIDInfoRow(newdr); + // cntI += 1; + //} + //else newdr.Delete(); + } + else + { + //여러개가 잇다면 모두 처리해준다. + //foreach (var dr in sidlist) + //{ + // Boolean update = false; + // foreach (var item in datalist) + // { + // var itemvalue = item.Value.Trim(); + // if (string.IsNullOrEmpty(itemvalue)) continue; + // if (item.Key.ToLower() == "custcode") + // { + // itemvalue = itemvalue.PadLeft(4, '0'); + // } + // var curValue = dr[item.Key]; + // if (curValue == null) + // { + // dr[item.Key] = item.Value; + // update = true; + // } + // else if (curValue.ToString() != itemvalue) + // { + // dr["remark"] = string.Format("[{2}] {0}->{1}", curValue, itemvalue, item.Key); + // dr[item.Key] = itemvalue; + // update = true; + // } + // } + // if (update) cntSkip += 1; + //} + } + + } + else if (dt is DataSet1.Component_Reel_SIDConvDataTable) + { + var dt2 = dt as DataSet1.Component_Reel_SIDConvDataTable; + + var v_101 = string.Empty; + var v_103 = string.Empty; + var v_103_2 = string.Empty; + var v_106 = string.Empty; + var v_108 = string.Empty; + + var d_101 = datalist.Where(t => t.Key == "M101").FirstOrDefault(); + var d_103 = datalist.Where(t => t.Key == "M103").FirstOrDefault(); + var d_106 = datalist.Where(t => t.Key == "M106").FirstOrDefault(); + var d_108 = datalist.Where(t => t.Key == "M108").FirstOrDefault(); + var d_103_2 = datalist.Where(t => t.Key == "M103_2").FirstOrDefault(); + + if (d_101.Key != null) v_101 = d_101.Value.Trim(); + if (d_103.Key != null) v_103 = d_103.Value.Trim(); + if (d_106.Key != null) v_106 = d_106.Value.Trim(); + if (d_108.Key != null) v_108 = d_108.Value.Trim(); + if (d_103_2.Key != null) v_103_2 = d_103_2.Value.Trim(); + + + //101값이 있다면? + if (string.IsNullOrEmpty(v_101) == false) + { + var list = dt2.Where(t => t.M101 == v_101).ToList(); + if (list.Any() == false) AddData(dt2, v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //값이 없으니 추가 해야 한다 + else + { + UpdateData(dt2, list, v_103, "M103", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_106, "M106", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_108, "M108", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103_2, "M103_2", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + } + } + + //103값이 있다면? + if (string.IsNullOrEmpty(v_103) == false) + { + var list = dt2.Where(t => t.M103 == v_103).ToList(); + if (list.Any() == false) AddData(dt2, v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //값이 없으니 추가 해야 한다 + else + { + UpdateData(dt2, list, v_101, "M101", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_106, "M106", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_108, "M108", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103_2, "M103_2", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + } + } + //106값이 있다면? + if (string.IsNullOrEmpty(v_106) == false) + { + var list = dt2.Where(t => t.M106 == v_106).ToList(); + if (list.Any() == false) AddData(dt2, v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //값이 없으니 추가 해야 한다 + else + { + UpdateData(dt2, list, v_101, "M101", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103, "M103", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_108, "M108", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103_2, "M103_2", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + } + } + //108값이 있다면? + if (string.IsNullOrEmpty(v_108) == false) + { + var list = dt2.Where(t => t.M108 == v_108).ToList(); + if (list.Any() == false) AddData(dt2, v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //값이 없으니 추가 해야 한다 + else + { + UpdateData(dt2, list, v_101, "M101", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103, "M103", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_106, "M106", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103_2, "M103_2", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + } + } + //103_2값이 있다면? + if (string.IsNullOrEmpty(v_103_2) == false) + { + var list = dt2.Where(t => t.M103_2 == v_103_2).ToList(); + if (list.Any() == false) AddData(dt2, v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //값이 없으니 추가 해야 한다 + else + { + UpdateData(dt2, list, v_101, "M101", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_103, "M103", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_106, "M106", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + UpdateData(dt2, list, v_108, "M108", v_101, v_103, v_106, v_108, v_103_2, ref cntI, ref cntE); //데이터를 업데이트해준다. + } + } + } + + } + this.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); + lbMsg.Text = string.Format("The following amounts of data have been changed\n" + + "Added:{0},Duplicate:{1},SKIP:{2}\n" + + "Click 'Save' on the main screen to apply changes", cntI, cntD, cntSkip); + MessageBox.Show(lbMsg.Text); + if (cntI > 0 || cntD > 0) DialogResult = DialogResult.OK; + } + } + } +} diff --git a/Handler/Project/Dialog/fImp.resx b/Handler/Project/Dialog/fImp.resx new file mode 100644 index 0000000..174ebc7 --- /dev/null +++ b/Handler/Project/Dialog/fImp.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fLoaderInfo.Designer.cs b/Handler/Project/Dialog/fLoaderInfo.Designer.cs new file mode 100644 index 0000000..ef82b8b --- /dev/null +++ b/Handler/Project/Dialog/fLoaderInfo.Designer.cs @@ -0,0 +1,1237 @@ +namespace Project.Dialog +{ + partial class fLoaderInfo + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fLoaderInfo)); + this.tbSID = new System.Windows.Forms.TextBox(); + this.tbVLOT = new System.Windows.Forms.TextBox(); + this.tbQTY = new System.Windows.Forms.TextBox(); + this.tbMFG = new System.Windows.Forms.TextBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lvbcdList = new System.Windows.Forms.ListView(); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.cmbarc = new System.Windows.Forms.ContextMenuStrip(this.components); + this.회전기준바코드로설정ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.panel7 = new System.Windows.Forms.Panel(); + this.tbBarcode = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.lstErrmsg = new System.Windows.Forms.ListBox(); + this.btOK = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.tbRID = new System.Windows.Forms.TextBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.linkLabel10 = new System.Windows.Forms.LinkLabel(); + this.tbQtyMax = new System.Windows.Forms.TextBox(); + this.lnkBatch = new System.Windows.Forms.LinkLabel(); + this.tbBatch = new System.Windows.Forms.TextBox(); + this.tbRID0 = new System.Windows.Forms.Label(); + this.button4 = new System.Windows.Forms.Button(); + this.btIDChk = new System.Windows.Forms.Button(); + this.tbSidFind = new System.Windows.Forms.Button(); + this.btPartChk = new System.Windows.Forms.Button(); + this.linkLabel7 = new System.Windows.Forms.LinkLabel(); + this.linkLabel5 = new System.Windows.Forms.LinkLabel(); + this.linkLabel4 = new System.Windows.Forms.LinkLabel(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.btDateSelecte = new System.Windows.Forms.Button(); + this.lbQTY0 = new System.Windows.Forms.Label(); + this.lbSID0 = new System.Windows.Forms.Label(); + this.tbpartno = new System.Windows.Forms.TextBox(); + this.btSidConv = new System.Windows.Forms.Button(); + this.btNewID = new System.Windows.Forms.Button(); + this.btChkQty = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.linkLabel8 = new System.Windows.Forms.LinkLabel(); + this.TbCustCode = new System.Windows.Forms.TextBox(); + this.btCustomAutoInput = new System.Windows.Forms.Button(); + this.panel4 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label2 = new System.Windows.Forms.Label(); + this.pb8 = new System.Windows.Forms.Label(); + this.pb2 = new System.Windows.Forms.Label(); + this.pb4 = new System.Windows.Forms.Label(); + this.pb6 = new System.Windows.Forms.Label(); + this.pb7 = new System.Windows.Forms.Label(); + this.pb9 = new System.Windows.Forms.Label(); + this.pb3 = new System.Windows.Forms.Label(); + this.pb1 = new System.Windows.Forms.Label(); + this.label26 = new System.Windows.Forms.Label(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.linkLabel6 = new System.Windows.Forms.LinkLabel(); + this.tbVName = new System.Windows.Forms.TextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.button5 = new System.Windows.Forms.Button(); + this.linkLabel9 = new System.Windows.Forms.LinkLabel(); + this.tbCustName = new System.Windows.Forms.TextBox(); + this.panel6 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.tmAutoConfirm = new System.Windows.Forms.Timer(this.components); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.copyToClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1.SuspendLayout(); + this.cmbarc.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.panel4.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel5.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.panel6.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // tbSID + // + this.tbSID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.tbSID.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbSID.Location = new System.Drawing.Point(102, 90); + this.tbSID.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbSID.Name = "tbSID"; + this.tbSID.Size = new System.Drawing.Size(135, 31); + this.tbSID.TabIndex = 1; + this.tbSID.Tag = "SID"; + this.tbSID.Click += new System.EventHandler(this.tbDate_Click); + // + // tbVLOT + // + this.tbVLOT.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbVLOT.Location = new System.Drawing.Point(102, 143); + this.tbVLOT.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbVLOT.Name = "tbVLOT"; + this.tbVLOT.Size = new System.Drawing.Size(294, 31); + this.tbVLOT.TabIndex = 1; + this.tbVLOT.Tag = "VLOT"; + this.tbVLOT.Click += new System.EventHandler(this.tbDate_Click); + // + // tbQTY + // + this.tbQTY.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbQTY.Location = new System.Drawing.Point(288, 90); + this.tbQTY.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbQTY.Name = "tbQTY"; + this.tbQTY.Size = new System.Drawing.Size(108, 31); + this.tbQTY.TabIndex = 1; + this.tbQTY.Tag = "QTY"; + this.tbQTY.Click += new System.EventHandler(this.tbDate_Click); + // + // tbMFG + // + this.tbMFG.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbMFG.Location = new System.Drawing.Point(102, 176); + this.tbMFG.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbMFG.Name = "tbMFG"; + this.tbMFG.Size = new System.Drawing.Size(294, 31); + this.tbMFG.TabIndex = 3; + this.tbMFG.Tag = "MFGDATE"; + this.tbMFG.Click += new System.EventHandler(this.tbDate_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lvbcdList); + this.groupBox1.Controls.Add(this.panel7); + this.groupBox1.Controls.Add(this.lstErrmsg); + this.groupBox1.Controls.Add(this.btOK); + this.groupBox1.Controls.Add(this.panel3); + this.groupBox1.Controls.Add(this.button2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Right; + this.groupBox1.Location = new System.Drawing.Point(806, 5); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(5); + this.groupBox1.Size = new System.Drawing.Size(373, 871); + this.groupBox1.TabIndex = 5; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Barcode Data List"; + // + // lvbcdList + // + this.lvbcdList.CheckBoxes = true; + this.lvbcdList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader4, + this.columnHeader1, + this.columnHeader2}); + this.lvbcdList.ContextMenuStrip = this.cmbarc; + this.lvbcdList.Dock = System.Windows.Forms.DockStyle.Fill; + this.lvbcdList.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lvbcdList.FullRowSelect = true; + this.lvbcdList.GridLines = true; + this.lvbcdList.HideSelection = false; + this.lvbcdList.Location = new System.Drawing.Point(5, 185); + this.lvbcdList.Name = "lvbcdList"; + this.lvbcdList.Size = new System.Drawing.Size(363, 372); + this.lvbcdList.TabIndex = 1; + this.lvbcdList.UseCompatibleStateImageBehavior = false; + this.lvbcdList.View = System.Windows.Forms.View.Details; + this.lvbcdList.SelectedIndexChanged += new System.EventHandler(this.lvbcdList_SelectedIndexChanged); + // + // columnHeader4 + // + this.columnHeader4.Text = "Ang"; + this.columnHeader4.Width = 80; + // + // columnHeader1 + // + this.columnHeader1.Text = "Value"; + this.columnHeader1.Width = 240; + // + // columnHeader2 + // + this.columnHeader2.Text = "S"; + this.columnHeader2.Width = 50; + // + // cmbarc + // + this.cmbarc.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.회전기준바코드로설정ToolStripMenuItem, + this.copyToClipboardToolStripMenuItem}); + this.cmbarc.Name = "cmbarc"; + this.cmbarc.Size = new System.Drawing.Size(248, 70); + // + // 회전기준바코드로설정ToolStripMenuItem + // + this.회전기준바코드로설정ToolStripMenuItem.Name = "회전기준바코드로설정ToolStripMenuItem"; + this.회전기준바코드로설정ToolStripMenuItem.Size = new System.Drawing.Size(247, 22); + this.회전기준바코드로설정ToolStripMenuItem.Text = "Set as rotation reference barcode"; + this.회전기준바코드로설정ToolStripMenuItem.Click += new System.EventHandler(this.회전기준바코드로설정ToolStripMenuItem_Click); + // + // panel7 + // + this.panel7.Controls.Add(this.tbBarcode); + this.panel7.Controls.Add(this.label3); + this.panel7.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel7.Location = new System.Drawing.Point(5, 557); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(363, 65); + this.panel7.TabIndex = 7; + // + // tbBarcode + // + this.tbBarcode.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.tbBarcode.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbBarcode.Location = new System.Drawing.Point(0, 30); + this.tbBarcode.Name = "tbBarcode"; + this.tbBarcode.Size = new System.Drawing.Size(363, 35); + this.tbBarcode.TabIndex = 1; + this.tbBarcode.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tbBarcode.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbBarcode_KeyDown); + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Top; + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(363, 30); + this.label3.TabIndex = 0; + this.label3.Text = "Barcode"; + // + // lstErrmsg + // + this.lstErrmsg.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lstErrmsg.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lstErrmsg.FormattingEnabled = true; + this.lstErrmsg.ItemHeight = 21; + this.lstErrmsg.Location = new System.Drawing.Point(5, 622); + this.lstErrmsg.Name = "lstErrmsg"; + this.lstErrmsg.Size = new System.Drawing.Size(363, 151); + this.lstErrmsg.TabIndex = 5; + // + // btOK + // + this.btOK.BackColor = System.Drawing.Color.DarkSeaGreen; + this.btOK.Dock = System.Windows.Forms.DockStyle.Bottom; + this.btOK.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btOK.Location = new System.Drawing.Point(5, 773); + this.btOK.Name = "btOK"; + this.btOK.Size = new System.Drawing.Size(363, 93); + this.btOK.TabIndex = 4; + this.btOK.Text = "◆ Input Complete ◆"; + this.btOK.UseVisualStyleBackColor = false; + this.btOK.Click += new System.EventHandler(this.btOK_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.label10); + this.panel3.Controls.Add(this.label11); + this.panel3.Controls.Add(this.label9); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(5, 157); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(363, 28); + this.panel3.TabIndex = 3; + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.Gold; + this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label10.Dock = System.Windows.Forms.DockStyle.Fill; + this.label10.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label10.Location = new System.Drawing.Point(119, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(125, 28); + this.label10.TabIndex = 1; + this.label10.Text = "QR"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label11 + // + this.label11.BackColor = System.Drawing.Color.Lime; + this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label11.Dock = System.Windows.Forms.DockStyle.Right; + this.label11.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label11.Location = new System.Drawing.Point(244, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(119, 28); + this.label11.TabIndex = 2; + this.label11.Text = "DataMatrix"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.WhiteSmoke; + this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label9.Dock = System.Windows.Forms.DockStyle.Left; + this.label9.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label9.Location = new System.Drawing.Point(0, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(119, 28); + this.label9.TabIndex = 0; + this.label9.Text = "1D"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Top; + this.button2.ForeColor = System.Drawing.Color.DarkBlue; + this.button2.Location = new System.Drawing.Point(5, 107); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(363, 50); + this.button2.TabIndex = 2; + this.button2.Text = "◀ \"Input\" to barcode output info"; + this.button2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.ForeColor = System.Drawing.Color.DimGray; + this.label1.Location = new System.Drawing.Point(5, 33); + this.label1.Name = "label1"; + this.label1.Padding = new System.Windows.Forms.Padding(5); + this.label1.Size = new System.Drawing.Size(363, 74); + this.label1.TabIndex = 0; + this.label1.Text = resources.GetString("label1.Text"); + // + // tbRID + // + this.tbRID.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbRID.Location = new System.Drawing.Point(102, 36); + this.tbRID.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbRID.Name = "tbRID"; + this.tbRID.Size = new System.Drawing.Size(294, 31); + this.tbRID.TabIndex = 7; + this.tbRID.Tag = "ID"; + this.tbRID.Click += new System.EventHandler(this.tbDate_Click); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.linkLabel10); + this.groupBox2.Controls.Add(this.tbQtyMax); + this.groupBox2.Controls.Add(this.lnkBatch); + this.groupBox2.Controls.Add(this.tbBatch); + this.groupBox2.Controls.Add(this.tbRID0); + this.groupBox2.Controls.Add(this.button4); + this.groupBox2.Controls.Add(this.btIDChk); + this.groupBox2.Controls.Add(this.tbSidFind); + this.groupBox2.Controls.Add(this.btPartChk); + this.groupBox2.Controls.Add(this.linkLabel7); + this.groupBox2.Controls.Add(this.linkLabel5); + this.groupBox2.Controls.Add(this.linkLabel4); + this.groupBox2.Controls.Add(this.linkLabel3); + this.groupBox2.Controls.Add(this.linkLabel2); + this.groupBox2.Controls.Add(this.linkLabel1); + this.groupBox2.Controls.Add(this.btDateSelecte); + this.groupBox2.Controls.Add(this.lbQTY0); + this.groupBox2.Controls.Add(this.lbSID0); + this.groupBox2.Controls.Add(this.tbpartno); + this.groupBox2.Controls.Add(this.btSidConv); + this.groupBox2.Controls.Add(this.btNewID); + this.groupBox2.Controls.Add(this.btChkQty); + this.groupBox2.Controls.Add(this.tbRID); + this.groupBox2.Controls.Add(this.tbVLOT); + this.groupBox2.Controls.Add(this.tbMFG); + this.groupBox2.Controls.Add(this.tbSID); + this.groupBox2.Controls.Add(this.tbQTY); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Location = new System.Drawing.Point(0, 0); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(556, 297); + this.groupBox2.TabIndex = 8; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Barcode information"; + this.groupBox2.Enter += new System.EventHandler(this.groupBox2_Enter); + // + // linkLabel10 + // + this.linkLabel10.AutoSize = true; + this.linkLabel10.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel10.Location = new System.Drawing.Point(328, 250); + this.linkLabel10.Name = "linkLabel10"; + this.linkLabel10.Size = new System.Drawing.Size(66, 20); + this.linkLabel10.TabIndex = 36; + this.linkLabel10.TabStop = true; + this.linkLabel10.Text = "MaxQTY"; + this.linkLabel10.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel10_LinkClicked); + // + // tbQtyMax + // + this.tbQtyMax.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbQtyMax.Location = new System.Drawing.Point(399, 245); + this.tbQtyMax.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbQtyMax.Name = "tbQtyMax"; + this.tbQtyMax.Size = new System.Drawing.Size(142, 31); + this.tbQtyMax.TabIndex = 35; + this.tbQtyMax.Tag = "PARTNO"; + // + // lnkBatch + // + this.lnkBatch.AutoSize = true; + this.lnkBatch.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lnkBatch.Location = new System.Drawing.Point(40, 251); + this.lnkBatch.Name = "lnkBatch"; + this.lnkBatch.Size = new System.Drawing.Size(57, 20); + this.lnkBatch.TabIndex = 34; + this.lnkBatch.TabStop = true; + this.lnkBatch.Text = "BATCH"; + this.lnkBatch.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkBatch_LinkClicked); + // + // tbBatch + // + this.tbBatch.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbBatch.Location = new System.Drawing.Point(102, 246); + this.tbBatch.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbBatch.Name = "tbBatch"; + this.tbBatch.Size = new System.Drawing.Size(222, 31); + this.tbBatch.TabIndex = 33; + this.tbBatch.Tag = "PARTNO"; + // + // tbRID0 + // + this.tbRID0.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.tbRID0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbRID0.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbRID0.ForeColor = System.Drawing.Color.Gold; + this.tbRID0.Location = new System.Drawing.Point(102, 67); + this.tbRID0.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); + this.tbRID0.Name = "tbRID0"; + this.tbRID0.Size = new System.Drawing.Size(294, 19); + this.tbRID0.TabIndex = 32; + this.tbRID0.Tag = ""; + this.tbRID0.Text = "-- Original Data --"; + this.tbRID0.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // button4 + // + this.button4.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.button4.Location = new System.Drawing.Point(344, 210); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(52, 31); + this.button4.TabIndex = 31; + this.button4.Text = "N/A"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click_1); + // + // btIDChk + // + this.btIDChk.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btIDChk.ForeColor = System.Drawing.Color.Red; + this.btIDChk.Location = new System.Drawing.Point(484, 36); + this.btIDChk.Name = "btIDChk"; + this.btIDChk.Size = new System.Drawing.Size(57, 50); + this.btIDChk.TabIndex = 30; + this.btIDChk.Text = "Check"; + this.btIDChk.UseVisualStyleBackColor = true; + this.btIDChk.Visible = false; + this.btIDChk.Click += new System.EventHandler(this.btIDCheck_Click); + // + // tbSidFind + // + this.tbSidFind.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbSidFind.Location = new System.Drawing.Point(484, 89); + this.tbSidFind.Name = "tbSidFind"; + this.tbSidFind.Size = new System.Drawing.Size(57, 32); + this.tbSidFind.TabIndex = 29; + this.tbSidFind.Text = "Find"; + this.tbSidFind.UseVisualStyleBackColor = true; + this.tbSidFind.Click += new System.EventHandler(this.button7_Click); + // + // btPartChk + // + this.btPartChk.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.btPartChk.Location = new System.Drawing.Point(399, 211); + this.btPartChk.Name = "btPartChk"; + this.btPartChk.Size = new System.Drawing.Size(142, 30); + this.btPartChk.TabIndex = 25; + this.btPartChk.Text = "Auto Input"; + this.btPartChk.UseVisualStyleBackColor = true; + this.btPartChk.Click += new System.EventHandler(this.btPart_Click); + // + // linkLabel7 + // + this.linkLabel7.AutoSize = true; + this.linkLabel7.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel7.Location = new System.Drawing.Point(24, 216); + this.linkLabel7.Name = "linkLabel7"; + this.linkLabel7.Size = new System.Drawing.Size(73, 20); + this.linkLabel7.TabIndex = 23; + this.linkLabel7.TabStop = true; + this.linkLabel7.Text = "PART NO"; + this.linkLabel7.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel7_LinkClicked); + // + // linkLabel5 + // + this.linkLabel5.AutoSize = true; + this.linkLabel5.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel5.Location = new System.Drawing.Point(14, 181); + this.linkLabel5.Name = "linkLabel5"; + this.linkLabel5.Size = new System.Drawing.Size(83, 20); + this.linkLabel5.TabIndex = 23; + this.linkLabel5.TabStop = true; + this.linkLabel5.Text = "MFG DATE"; + this.linkLabel5.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel5_LinkClicked); + // + // linkLabel4 + // + this.linkLabel4.AutoSize = true; + this.linkLabel4.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel4.Location = new System.Drawing.Point(242, 95); + this.linkLabel4.Name = "linkLabel4"; + this.linkLabel4.Size = new System.Drawing.Size(40, 21); + this.linkLabel4.TabIndex = 23; + this.linkLabel4.TabStop = true; + this.linkLabel4.Text = "QTY"; + this.linkLabel4.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel4_LinkClicked); + // + // linkLabel3 + // + this.linkLabel3.AutoSize = true; + this.linkLabel3.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel3.Location = new System.Drawing.Point(7, 146); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(90, 20); + this.linkLabel3.TabIndex = 23; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "Vender LOT"; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel2.Location = new System.Drawing.Point(65, 95); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(32, 20); + this.linkLabel2.TabIndex = 23; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "SID"; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked); + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel1.Location = new System.Drawing.Point(36, 41); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(61, 20); + this.linkLabel1.TabIndex = 23; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "REEL ID"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // btDateSelecte + // + this.btDateSelecte.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.btDateSelecte.Location = new System.Drawing.Point(399, 176); + this.btDateSelecte.Name = "btDateSelecte"; + this.btDateSelecte.Size = new System.Drawing.Size(142, 31); + this.btDateSelecte.TabIndex = 22; + this.btDateSelecte.Text = "Select"; + this.btDateSelecte.UseVisualStyleBackColor = true; + this.btDateSelecte.Click += new System.EventHandler(this.button4_Click); + // + // lbQTY0 + // + this.lbQTY0.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbQTY0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbQTY0.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbQTY0.ForeColor = System.Drawing.Color.Gold; + this.lbQTY0.Location = new System.Drawing.Point(288, 122); + this.lbQTY0.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); + this.lbQTY0.Name = "lbQTY0"; + this.lbQTY0.Size = new System.Drawing.Size(108, 19); + this.lbQTY0.TabIndex = 17; + this.lbQTY0.Tag = ""; + this.lbQTY0.Text = "-- Original Data --"; + this.lbQTY0.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbSID0 + // + this.lbSID0.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbSID0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbSID0.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbSID0.ForeColor = System.Drawing.Color.Gold; + this.lbSID0.Location = new System.Drawing.Point(102, 122); + this.lbSID0.Margin = new System.Windows.Forms.Padding(5, 0, 5, 0); + this.lbSID0.Name = "lbSID0"; + this.lbSID0.Size = new System.Drawing.Size(135, 19); + this.lbSID0.TabIndex = 16; + this.lbSID0.Tag = ""; + this.lbSID0.Text = "-- Original Data --"; + this.lbSID0.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbpartno + // + this.tbpartno.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbpartno.Location = new System.Drawing.Point(102, 211); + this.tbpartno.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbpartno.Name = "tbpartno"; + this.tbpartno.Size = new System.Drawing.Size(239, 31); + this.tbpartno.TabIndex = 15; + this.tbpartno.Tag = "PARTNO"; + this.tbpartno.Click += new System.EventHandler(this.tbDate_Click); + // + // btSidConv + // + this.btSidConv.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btSidConv.Location = new System.Drawing.Point(399, 89); + this.btSidConv.Name = "btSidConv"; + this.btSidConv.Size = new System.Drawing.Size(82, 32); + this.btSidConv.TabIndex = 11; + this.btSidConv.Text = "SID Convert"; + this.btSidConv.UseVisualStyleBackColor = true; + this.btSidConv.Click += new System.EventHandler(this.button3_Click); + // + // btNewID + // + this.btNewID.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btNewID.Location = new System.Drawing.Point(399, 36); + this.btNewID.Name = "btNewID"; + this.btNewID.Size = new System.Drawing.Size(82, 50); + this.btNewID.TabIndex = 9; + this.btNewID.Text = "Generate"; + this.btNewID.UseVisualStyleBackColor = true; + this.btNewID.Click += new System.EventHandler(this.btNewID_Click); + // + // btChkQty + // + this.btChkQty.Enabled = false; + this.btChkQty.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btChkQty.ForeColor = System.Drawing.Color.Red; + this.btChkQty.Location = new System.Drawing.Point(399, 122); + this.btChkQty.Name = "btChkQty"; + this.btChkQty.Size = new System.Drawing.Size(142, 51); + this.btChkQty.TabIndex = 8; + this.btChkQty.Text = "Server Quantity Check"; + this.btChkQty.UseVisualStyleBackColor = true; + this.btChkQty.Visible = false; + this.btChkQty.Click += new System.EventHandler(this.btReqQty_Click); + // + // button9 + // + this.button9.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button9.Location = new System.Drawing.Point(116, 193); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(96, 31); + this.button9.TabIndex = 31; + this.button9.Text = "Select"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // linkLabel8 + // + this.linkLabel8.AutoSize = true; + this.linkLabel8.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel8.Location = new System.Drawing.Point(13, 76); + this.linkLabel8.Name = "linkLabel8"; + this.linkLabel8.Size = new System.Drawing.Size(126, 21); + this.linkLabel8.TabIndex = 28; + this.linkLabel8.TabStop = true; + this.linkLabel8.Text = "Customer Code"; + this.linkLabel8.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel8_LinkClicked); + // + // TbCustCode + // + this.TbCustCode.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.TbCustCode.Font = new System.Drawing.Font("맑은 고딕", 11F); + this.TbCustCode.Location = new System.Drawing.Point(13, 104); + this.TbCustCode.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.TbCustCode.Name = "TbCustCode"; + this.TbCustCode.Size = new System.Drawing.Size(199, 27); + this.TbCustCode.TabIndex = 27; + this.TbCustCode.Tag = "SUPPLY"; + // + // btCustomAutoInput + // + this.btCustomAutoInput.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.btCustomAutoInput.Location = new System.Drawing.Point(13, 193); + this.btCustomAutoInput.Name = "btCustomAutoInput"; + this.btCustomAutoInput.Size = new System.Drawing.Size(97, 31); + this.btCustomAutoInput.TabIndex = 26; + this.btCustomAutoInput.Text = "Auto Input"; + this.btCustomAutoInput.UseVisualStyleBackColor = true; + this.btCustomAutoInput.Click += new System.EventHandler(this.btCustAutoInput_Click); + // + // panel4 + // + this.panel4.Controls.Add(this.tableLayoutPanel1); + this.panel4.Controls.Add(this.tabControl1); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(10, 355); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(776, 484); + this.panel4.TabIndex = 24; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.tableLayoutPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 3; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.Controls.Add(this.label2, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.pb8, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.pb2, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.pb4, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.pb6, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.pb7, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.pb9, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.pb3, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.pb1, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.label26, 0, 0); + this.tableLayoutPanel1.Location = new System.Drawing.Point(582, 3); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 4; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(191, 191); + this.tableLayoutPanel1.TabIndex = 21; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.ForeColor = System.Drawing.Color.White; + this.label2.Location = new System.Drawing.Point(67, 88); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(56, 50); + this.label2.TabIndex = 22; + this.label2.Tag = "4"; + this.label2.Text = "♣"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label2.Click += new System.EventHandler(this.label2_Click_1); + // + // pb8 + // + this.pb8.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb8.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb8.ForeColor = System.Drawing.Color.White; + this.pb8.Location = new System.Drawing.Point(67, 37); + this.pb8.Name = "pb8"; + this.pb8.Size = new System.Drawing.Size(56, 50); + this.pb8.TabIndex = 0; + this.pb8.Tag = "8"; + this.pb8.Text = "↑"; + this.pb8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb8.Click += new System.EventHandler(this.label22_Click); + // + // pb2 + // + this.pb2.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb2.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb2.ForeColor = System.Drawing.Color.White; + this.pb2.Location = new System.Drawing.Point(67, 139); + this.pb2.Name = "pb2"; + this.pb2.Size = new System.Drawing.Size(56, 51); + this.pb2.TabIndex = 0; + this.pb2.Tag = "2"; + this.pb2.Text = "↓"; + this.pb2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb2.Click += new System.EventHandler(this.label22_Click); + // + // pb4 + // + this.pb4.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb4.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb4.ForeColor = System.Drawing.Color.White; + this.pb4.Location = new System.Drawing.Point(4, 88); + this.pb4.Name = "pb4"; + this.pb4.Size = new System.Drawing.Size(56, 50); + this.pb4.TabIndex = 0; + this.pb4.Tag = "4"; + this.pb4.Text = "←"; + this.pb4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb4.Click += new System.EventHandler(this.label22_Click); + // + // pb6 + // + this.pb6.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb6.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb6.ForeColor = System.Drawing.Color.White; + this.pb6.Location = new System.Drawing.Point(130, 88); + this.pb6.Name = "pb6"; + this.pb6.Size = new System.Drawing.Size(57, 50); + this.pb6.TabIndex = 0; + this.pb6.Tag = "6"; + this.pb6.Text = "→"; + this.pb6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb6.Click += new System.EventHandler(this.label22_Click); + // + // pb7 + // + this.pb7.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb7.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb7.ForeColor = System.Drawing.Color.White; + this.pb7.Location = new System.Drawing.Point(4, 37); + this.pb7.Name = "pb7"; + this.pb7.Size = new System.Drawing.Size(56, 50); + this.pb7.TabIndex = 0; + this.pb7.Tag = "7"; + this.pb7.Text = "↖"; + this.pb7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb7.Click += new System.EventHandler(this.label22_Click); + // + // pb9 + // + this.pb9.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb9.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb9.ForeColor = System.Drawing.Color.White; + this.pb9.Location = new System.Drawing.Point(130, 37); + this.pb9.Name = "pb9"; + this.pb9.Size = new System.Drawing.Size(57, 50); + this.pb9.TabIndex = 0; + this.pb9.Tag = "9"; + this.pb9.Text = "↗"; + this.pb9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb9.Click += new System.EventHandler(this.label22_Click); + // + // pb3 + // + this.pb3.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb3.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb3.ForeColor = System.Drawing.Color.White; + this.pb3.Location = new System.Drawing.Point(130, 139); + this.pb3.Name = "pb3"; + this.pb3.Size = new System.Drawing.Size(57, 51); + this.pb3.TabIndex = 0; + this.pb3.Tag = "3"; + this.pb3.Text = "↘"; + this.pb3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb3.Click += new System.EventHandler(this.label22_Click); + // + // pb1 + // + this.pb1.Dock = System.Windows.Forms.DockStyle.Fill; + this.pb1.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pb1.ForeColor = System.Drawing.Color.White; + this.pb1.Location = new System.Drawing.Point(4, 139); + this.pb1.Name = "pb1"; + this.pb1.Size = new System.Drawing.Size(56, 51); + this.pb1.TabIndex = 0; + this.pb1.Tag = "1"; + this.pb1.Text = "↙"; + this.pb1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.pb1.Click += new System.EventHandler(this.label22_Click); + // + // label26 + // + this.label26.BackColor = System.Drawing.Color.Gold; + this.tableLayoutPanel1.SetColumnSpan(this.label26, 3); + this.label26.Dock = System.Windows.Forms.DockStyle.Fill; + this.label26.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label26.Location = new System.Drawing.Point(1, 1); + this.label26.Margin = new System.Windows.Forms.Padding(0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(189, 35); + this.label26.TabIndex = 10; + this.label26.Text = "Attach Position"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label26.Click += new System.EventHandler(this.label26_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(776, 484); + this.tabControl1.TabIndex = 22; + // + // tabPage1 + // + this.tabPage1.Location = new System.Drawing.Point(4, 39); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(768, 441); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Front Image"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Location = new System.Drawing.Point(4, 39); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(768, 441); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Rear Image"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // linkLabel6 + // + this.linkLabel6.AutoSize = true; + this.linkLabel6.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel6.Location = new System.Drawing.Point(13, 20); + this.linkLabel6.Name = "linkLabel6"; + this.linkLabel6.Size = new System.Drawing.Size(112, 21); + this.linkLabel6.TabIndex = 23; + this.linkLabel6.TabStop = true; + this.linkLabel6.Text = "Vender Name"; + this.linkLabel6.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel6_LinkClicked); + // + // tbVName + // + this.tbVName.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbVName.Location = new System.Drawing.Point(13, 48); + this.tbVName.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbVName.Name = "tbVName"; + this.tbVName.Size = new System.Drawing.Size(199, 27); + this.tbVName.TabIndex = 13; + this.tbVName.Tag = "SUPPLY"; + this.tbVName.Click += new System.EventHandler(this.tbDate_Click); + this.tbVName.TextChanged += new System.EventHandler(this.tbSupply_TextChanged); + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.panel1.Location = new System.Drawing.Point(801, 5); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(5, 871); + this.panel1.TabIndex = 9; + // + // panel2 + // + this.panel2.Controls.Add(this.panel4); + this.panel2.Controls.Add(this.panel5); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(5, 5); + this.panel2.Name = "panel2"; + this.panel2.Padding = new System.Windows.Forms.Padding(10); + this.panel2.Size = new System.Drawing.Size(796, 849); + this.panel2.TabIndex = 10; + // + // panel5 + // + this.panel5.Controls.Add(this.groupBox2); + this.panel5.Controls.Add(this.groupBox3); + this.panel5.Controls.Add(this.panel6); + this.panel5.Dock = System.Windows.Forms.DockStyle.Top; + this.panel5.Location = new System.Drawing.Point(10, 10); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(776, 345); + this.panel5.TabIndex = 35; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.button5); + this.groupBox3.Controls.Add(this.linkLabel9); + this.groupBox3.Controls.Add(this.tbCustName); + this.groupBox3.Controls.Add(this.tbVName); + this.groupBox3.Controls.Add(this.button9); + this.groupBox3.Controls.Add(this.linkLabel6); + this.groupBox3.Controls.Add(this.linkLabel8); + this.groupBox3.Controls.Add(this.TbCustCode); + this.groupBox3.Controls.Add(this.btCustomAutoInput); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Right; + this.groupBox3.Location = new System.Drawing.Point(556, 0); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(220, 297); + this.groupBox3.TabIndex = 32; + this.groupBox3.TabStop = false; + this.groupBox3.Enter += new System.EventHandler(this.groupBox3_Enter); + // + // button5 + // + this.button5.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.button5.Location = new System.Drawing.Point(161, 17); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(52, 31); + this.button5.TabIndex = 34; + this.button5.Text = "N/A"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click_2); + // + // linkLabel9 + // + this.linkLabel9.AutoSize = true; + this.linkLabel9.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel9.Location = new System.Drawing.Point(13, 133); + this.linkLabel9.Name = "linkLabel9"; + this.linkLabel9.Size = new System.Drawing.Size(130, 21); + this.linkLabel9.TabIndex = 33; + this.linkLabel9.TabStop = true; + this.linkLabel9.Text = "Customer Name"; + this.linkLabel9.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel9_LinkClicked); + // + // tbCustName + // + this.tbCustName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.tbCustName.Font = new System.Drawing.Font("맑은 고딕", 11F); + this.tbCustName.Location = new System.Drawing.Point(13, 161); + this.tbCustName.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbCustName.Name = "tbCustName"; + this.tbCustName.Size = new System.Drawing.Size(199, 27); + this.tbCustName.TabIndex = 32; + this.tbCustName.Tag = "SUPPLY"; + // + // panel6 + // + this.panel6.Controls.Add(this.button3); + this.panel6.Controls.Add(this.button1); + this.panel6.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel6.Location = new System.Drawing.Point(0, 297); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(776, 48); + this.panel6.TabIndex = 0; + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Fill; + this.button3.Font = new System.Drawing.Font("맑은 고딕", 11.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button3.Location = new System.Drawing.Point(0, 0); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(401, 48); + this.button3.TabIndex = 34; + this.button3.Text = "Auto input data from job results"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click_1); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 11.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(401, 0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(375, 48); + this.button1.TabIndex = 33; + this.button1.Text = "Select data from job results"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click_1); + // + // tmAutoConfirm + // + this.tmAutoConfirm.Interval = 500; + this.tmAutoConfirm.Tick += new System.EventHandler(this.tmAutoConfirm_Tick); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1}); + this.statusStrip1.Location = new System.Drawing.Point(5, 854); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(796, 22); + this.statusStrip1.TabIndex = 11; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(118, 17); + this.toolStripStatusLabel1.Text = "toolStripStatusLabel1"; + // + // copyToClipboardToolStripMenuItem + // + this.copyToClipboardToolStripMenuItem.Name = "copyToClipboardToolStripMenuItem"; + this.copyToClipboardToolStripMenuItem.Size = new System.Drawing.Size(247, 22); + this.copyToClipboardToolStripMenuItem.Text = "Copy To Clipboard"; + this.copyToClipboardToolStripMenuItem.Click += new System.EventHandler(this.copyToClipboardToolStripMenuItem_Click); + // + // fLoaderInfo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 30F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1184, 881); + this.Controls.Add(this.panel2); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.groupBox1); + this.DoubleBuffered = true; + this.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.Name = "fLoaderInfo"; + this.Padding = new System.Windows.Forms.Padding(5); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Barcode Data Element"; + this.Load += new System.EventHandler(this.fLoaderInfo_Load); + this.groupBox1.ResumeLayout(false); + this.cmbarc.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.panel3.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.panel4.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.panel6.ResumeLayout(false); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox tbSID; + private System.Windows.Forms.TextBox tbVLOT; + private System.Windows.Forms.TextBox tbQTY; + private System.Windows.Forms.TextBox tbMFG; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ListView lvbcdList; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.TextBox tbRID; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button btChkQty; + private System.Windows.Forms.Button btNewID; + private System.Windows.Forms.Button btSidConv; + private System.Windows.Forms.TextBox tbVName; + private System.Windows.Forms.TextBox tbpartno; + private System.Windows.Forms.Label lbQTY0; + private System.Windows.Forms.Label lbSID0; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label pb8; + private System.Windows.Forms.Label pb2; + private System.Windows.Forms.Label pb4; + private System.Windows.Forms.Label pb6; + private System.Windows.Forms.Label pb7; + private System.Windows.Forms.Label pb9; + private System.Windows.Forms.Label pb3; + private System.Windows.Forms.Label pb1; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Button btDateSelecte; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.LinkLabel linkLabel7; + private System.Windows.Forms.LinkLabel linkLabel6; + private System.Windows.Forms.LinkLabel linkLabel5; + private System.Windows.Forms.LinkLabel linkLabel4; + private System.Windows.Forms.LinkLabel linkLabel3; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Button btPartChk; + private System.Windows.Forms.Button btCustomAutoInput; + private System.Windows.Forms.LinkLabel linkLabel8; + private System.Windows.Forms.TextBox TbCustCode; + private System.Windows.Forms.Button tbSidFind; + private System.Windows.Forms.Button btIDChk; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Button btOK; + private System.Windows.Forms.LinkLabel linkLabel9; + private System.Windows.Forms.TextBox tbCustName; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ListBox lstErrmsg; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Timer tmAutoConfirm; + private System.Windows.Forms.ContextMenuStrip cmbarc; + private System.Windows.Forms.ToolStripMenuItem 회전기준바코드로설정ToolStripMenuItem; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Label tbRID0; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.TextBox tbBarcode; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.LinkLabel lnkBatch; + private System.Windows.Forms.TextBox tbBatch; + private System.Windows.Forms.LinkLabel linkLabel10; + private System.Windows.Forms.TextBox tbQtyMax; + private System.Windows.Forms.ToolStripMenuItem copyToClipboardToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fLoaderInfo.cs b/Handler/Project/Dialog/fLoaderInfo.cs new file mode 100644 index 0000000..a4af4b3 --- /dev/null +++ b/Handler/Project/Dialog/fLoaderInfo.cs @@ -0,0 +1,2322 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; +using SATOPrinterAPI; + +namespace Project.Dialog +{ + public partial class fLoaderInfo : Form + { + string PrintPos = ""; + + public fLoaderInfo(Dictionary errlist) + { + InitializeComponent(); + PUB.flag.set(eVarBool.FG_WAIT_LOADERINFO, true, "_LOAD"); + this.FormClosed += FLoaderInfo_FormClosed; + this.lstErrmsg.Items.Clear(); + this.WindowState = FormWindowState.Maximized; + this.label9.Text = "1D(11)"; + this.label10.Text = "QR(1)"; + this.label11.Text = "DataMatrix(2)"; + if (errlist != null) + { + + foreach (var item in errlist) + AddErrorMessage($"[{item.Key}] {item.Value}"); + } + if (PUB.Result.vModel.IgnoreBatch) tbBatch.Enabled = false; + if (PUB.Result.vModel.IgnorePartNo) tbpartno.Enabled = false; + linkLabel7.Enabled = tbpartno.Enabled; + button4.Enabled = tbpartno.Enabled; + btPartChk.Enabled = tbpartno.Enabled; + lnkBatch.Enabled = tbBatch.Enabled; + } + + void AddErrorMessage(string msg) + { + if (this.lstErrmsg.InvokeRequired) + { + this.lstErrmsg.BeginInvoke(new Action(() => + { + //동일한 태그를 가진 항목이 존재하는가? + if (lstErrmsg.FindString(msg) < 0) + lstErrmsg.Items.Add(string.Format("{0}", msg)); + })); + } + else + { + //동일한 태그를 가진 항목이 존재하는가? + if (lstErrmsg.FindString(msg) < 0) + lstErrmsg.Items.Add(string.Format("{0}", msg)); + } + } + + private void FLoaderInfo_FormClosed(object sender, FormClosedEventArgs e) + { + + + PUB.flag.set(eVarBool.FG_WAIT_LOADERINFO, false, "_CLOSE"); + + PUB.Result.ItemDataC.VisionData.PropertyChanged -= VisionData_PropertyChanged; + + //사용자가 정보를 정확히 입력하지 않고 닫았다 + if (PUB.Result.ItemDataC.VisionData.Confirm == false) + { + if (PUB.sm.Step == eSMStep.RUN) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INCOMPLETE_LOADERDATA, eNextStep.PAUSE, 1); + } + } + } + + private void fLoaderInfo_Load(object sender, EventArgs e) + { + //현재 바코드가 읽었단 자료를 모두 표시한다. + var item = PUB.Result.ItemDataC; + this.tbRID.Text = item.VisionData.RID; + this.tbRID0.Text = item.VisionData.RID0; + NewReelId = item.VisionData.RIDNew; + + lvbcdList.Columns.Clear(); + lvbcdList.Columns.Add("각도", 60); + lvbcdList.Columns.Add("값", 250); + lvbcdList.Columns.Add("*", 45); + + + //sid전환기능은 옵션의 상태값에 연결 + if (PUB.sm.Step != eSMStep.IDLE) + btSidConv.Enabled = VAR.BOOL[eVarBool.Opt_SIDConvert]; + + //if (Pub.Result.JobType == "13" ) + //{ + // if (Pub.Result.ItemData[1].VisionData.SID.StartsWith("103")) + // { + // tbSID.Text = Pub.Result.ItemData[1].VisionData.SID; + // } + // else + // { + // var msg = $"13작업이나 입력된 SID가 103이 아니여서 적용하지 않습니다. sid:{Pub.Result.ItemData[1].VisionData.SID}"; + // Pub.AddSystemLog(Application.ProductVersion, "LoaderInfo", msg); + // Pub.log.AddAT(msg); + // } + //} + //else + //{ + tbSID.Text = item.VisionData.SID; + lbSID0.Text = item.VisionData.SID0; + + if (lbSID0.Text.isEmpty() == false) + lbSID0.Tag = lbSID0.Text; + + tbVLOT.Text = item.VisionData.VLOT; + + //수량메뉴얼입력칸 + + + if (VAR.BOOL[eVarBool.Opt_UserQtyRQ]) + { + if (item.VisionData.QTYRQ == true) + { + //수동입력이나 바코드에서 RQ값이 들어있는 상태이니 그것을 사용한다. + //lock (Pub.Result.ItemData[1].VisionData.barcodelist) + { + var rqBcd = item.VisionData.barcodelist.Where(t => t.Value.Data.StartsWith("RQ")).FirstOrDefault(); + if (rqBcd.Value != null) + { + var newqty = rqBcd.Value.Data.Substring(2).Trim(); + PUB.log.Add($"Quantity updated {tbQTY.Text}->{newqty}"); + tbQTY.Text = newqty; + } + else + { + PUB.log.AddAT("RQ was set but the value is not in the code list, quantity will not be filled"); + } + } + + + + } + else + { + //Clear quantity value for manual input case + PUB.log.Add($"Quantity updated {tbQTY.Text}-> (cleared for manual input)"); + tbQTY.Text = string.Empty; + } + } + else + { + PUB.log.Add($"Quantity updated {tbQTY.Text}->{item.VisionData.QTY}"); + tbQTY.Text = item.VisionData.QTY; + } + + lbQTY0.Text = item.VisionData.QTY0; + tbMFG.Text = item.VisionData.MFGDATE; + tbVName.Text = item.VisionData.VNAME; + tbpartno.Text = item.VisionData.PARTNO; + + TbCustCode.Text = item.VisionData.CUSTCODE; //210317 + tbCustName.Text = item.VisionData.CUSTNAME; + tbBatch.Text = item.VisionData.BATCH; + tbQtyMax.Text = item.VisionData.QTYMAX; + + //Label position info display - 210127 -- delete(220706) + //DisplayLabelPos(PUB.Result.ItemData[1].VisionData.LabelPositionData); + + //Print info display + this.PrintPos = item.VisionData.PrintPositionData; + if (PUB.flag.get(eVarBool.Opt_DisablePrinter)) this.PrintPos = "8"; + if (this.PrintPos.isEmpty() && item.VisionData.SID.isEmpty() == false) + { + //If print position is empty, query server to find data - 231005 + var taresult = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter(); + this.PrintPos = taresult.GetPrintPosition(AR.SETTING.Data.McName, item.VisionData.SID); + } + DisplayPrintPos(this.PrintPos); + + this.lvbcdList.Items.Clear(); + + //키엔스로부터 읽은 바코드 목록을 표시한다(우측) + func_displaybcdlist(); + + selectInput(this.tbRID); + + //자동판단데이터 확인; (101-103d우선처리) + //이제 모든 sid변환은 1,3컬럼만 사용한다, 22-01-04 + if (PUB.Result.JobType2 == "13" && tbSID.Text.StartsWith("10")) func_sidconv(true); + + //기본값 적용 220712 + if (tbVName.Text.isEmpty()) + if (PUB.Result.vModel.Def_Vname.isEmpty() == false) + tbVName.Text = PUB.Result.vModel.Def_Vname; + + if (tbMFG.Text.isEmpty()) + if (PUB.Result.vModel.Def_MFG.isEmpty() == false) + tbMFG.Text = PUB.Result.vModel.Def_MFG; + + //자동완료이며, 사용자 확인이 off된상태, 수량입력도 false 된 상태여야함 + if (VAR.BOOL[eVarBool.Option_AutoConf] && + VAR.BOOL[eVarBool.Opt_UserConfim] == false && + VAR.BOOL[eVarBool.Opt_UserQtyRQ] == false && + PUB.Result.JobFirst == false) + { + //자료가 모두 있는지 확인한다. + tmAutoConfirm.Start(); + } + + + item.VisionData.PropertyChanged += VisionData_PropertyChanged; + } + + delegate void UpdateTextHandler(Control ctrl, string value); + public void UpdateText(Control ctrl, string value) + { + if (ctrl is Label || ctrl is TextBox) + { + if (ctrl.InvokeRequired) + { + ctrl.BeginInvoke(new UpdateTextHandler(UpdateText), new object[] { ctrl, value }); + } + else if (ctrl is Label) + ((Label)ctrl).Text = value; + else if (ctrl is TextBox) + ((TextBox)ctrl).Text = value; + } + + } + + private void VisionData_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + //값이 바뀌었으나 현재 값이 입력되지 않았따면 처리해준다. 220712 + var item = PUB.Result.ItemDataC; + + if (e.PropertyName.Equals("QTY0") && lbQTY0.Text.isEmpty()) + UpdateText(lbQTY0, item.VisionData.QTY0); + + if (e.PropertyName.Equals("QTY") && this.tbQTY.Text.isEmpty()) + UpdateText(tbQTY, item.VisionData.QTY); + + if (e.PropertyName.Equals("MFGDATE") && tbMFG.Text.isEmpty()) + UpdateText(tbMFG, item.VisionData.MFGDATE); + + if (e.PropertyName.Equals("VNAME") && tbVName.Text.isEmpty()) + UpdateText(tbVName, item.VisionData.VNAME); + + if (e.PropertyName.Equals("PARTNO") && tbpartno.Text.isEmpty()) + UpdateText(tbpartno, item.VisionData.PARTNO); + + if (e.PropertyName.Equals("CUSTCODE") && TbCustCode.Text.isEmpty()) + UpdateText(TbCustCode, item.VisionData.CUSTCODE); //210317 + + if (e.PropertyName.Equals("CUSTNAME") && tbCustName.Text.isEmpty()) + UpdateText(tbCustName, item.VisionData.CUSTNAME); + + if (e.PropertyName.Equals("SID") && tbSID.Text.isEmpty()) + UpdateText(tbSID, item.VisionData.SID); + + if (e.PropertyName.Equals("RID") && tbRID.Text.isEmpty()) + UpdateText(tbRID, item.VisionData.RID); + + if (e.PropertyName.Equals("RID0") && tbRID0.Text.isEmpty()) + UpdateText(tbRID0, item.VisionData.RID0); + + if (e.PropertyName.Equals("SID0") && lbSID0.Text.isEmpty()) + UpdateText(lbSID0, item.VisionData.SID0); + + if (e.PropertyName.Equals("VLOT") && tbVLOT.Text.isEmpty()) + UpdateText(tbVLOT, item.VisionData.VLOT); + } + + void func_displaybcdlist() + { + var itemc = PUB.Result.ItemDataC; + var angok = itemc.VisionData.BaseAngle(out string msg, out Class.KeyenceBarcodeData bcd); + lock (itemc.VisionData.barcodelist) + { + var no = 1; + lvbcdList.Items.Clear(); //기존꺼 삭제 + foreach (var bcddata in itemc.VisionData.barcodelist) + { + var item = bcddata.Value; + var lv = this.lvbcdList.Items.Add(item.Angle.ToString("N1")); + lv.SubItems.Add(item.Data); + lv.SubItems.Add(item.barcodeSymbol + item.barcodeSource); + //.SubItems.Add(item.barcodeSource); + //lv.SubItems.Add(item.CenterPX.X.ToString()); + //lv.SubItems.Add(item.CenterPX.Y.ToString()); + if (item.RegExConfirm) + { + if (item.RefExApply > 0) + lv.ForeColor = Color.Blue; + else + lv.ForeColor = Color.Black; + } + else lv.ForeColor = Color.DimGray; + + if (item.barcodeSymbol == "1") lv.BackColor = Color.Gold; + else if (item.barcodeSymbol == "2") lv.BackColor = Color.Lime; + else lv.BackColor = Color.WhiteSmoke; + + //회전에 사용할 데이터라면 체크를 해준다. + if (angok && bcd.Data == item.Data) + { + if (this.lvbcdList.CheckedItems.Count == 0) + lv.Checked = true; + } + else lv.Checked = false; + + + + + no += 1; + } + } + } + private void button1_Click(object sender, EventArgs e) + { + + } + + private void label6_Click(object sender, EventArgs e) + { + + } + + string TagStr = string.Empty; + void selectInput(Control c) + { + TagStr = string.Empty; + if (c is TextBox) + { + var tb = c as TextBox; + TagStr = tb.Tag.ToString(); + } + else if (c is Label) + { + var lb = c as Label; + TagStr = lb.Tag.ToString(); + } + + //동일태그를 가진 textbox 의 배경색을 업데이트한다 + foreach (Control tb in groupBox2.Controls) + { + if (tb is TextBox) + { + if (tb.Tag.ToString() == TagStr) + { + tb.BackColor = Color.SkyBlue; + } + else tb.BackColor = SystemColors.Control; + } + } + } + + private void button2_Click(object sender, EventArgs e) + { + //if (this.listView1.FocusedItem == null) + //{ + // Util.MsgE("입력할 바코드 값을 먼저 선택하세요"); + // return; + //} + if (this.TagStr.isEmpty()) + { + UTIL.MsgE("Please click the field to enter data first"); + return; + } + var lvitem = this.lvbcdList.FocusedItem; + if (lvitem == null) return; + + var lvValue = lvitem.SubItems[1].Text.Trim(); + if (lvValue.isEmpty()) + { + UTIL.MsgE("The selected data has no value\n\nPlease select other data"); + return; + } + + //선택자료가 ; 으로 분류가능하면 추가로 팝업 + if (lvValue.Split(';').Length > 1) + { + var ff = new Dialog.fSelectDataList(lvValue.Split(';')); + if (ff.ShowDialog() == DialogResult.OK) + { + lvValue = ff.SelectedValue; + } + else return; + } + else if (lvValue.Split(',').Length > 1) + { + var ff = new Dialog.fSelectDataList(lvValue.Split(',')); + if (ff.ShowDialog() == DialogResult.OK) + { + lvValue = ff.SelectedValue; + } + else return; + } + + if (TagStr == "RID" || TagStr == "ID") + { + tbRID.Text = lvValue; + } + else if (TagStr == "SID") + { + tbSID.Text = lvValue; + + //If SID value is applied, also check print position + if (this.PrintPos.isEmpty() || this.PrintPos == "5" && lvValue.isEmpty() == false) + { + try + { + using (var ta = new DataSet1TableAdapters.K4EE_Component_Reel_Print_InformationTableAdapter()) + { + var dr = ta.GetBySID(PUB.MCCode, lvValue).FirstOrDefault(); + if (dr != null) //자료가잇는 경우에만 적용 + { + this.PrintPos = dr.PrintPosition; + this.DisplayPrintPos(this.PrintPos); + } + } + } + catch (Exception ex) + { + UTIL.MsgE("SID:" + lvValue + " failed to load print position value\n" + ex.Message); + } + } + } + else if (TagStr == "VLOT") + { + tbVLOT.Text = lvValue; + } + else if (TagStr == "QTY") + { + PUB.log.Add($"Quantity updated {tbQTY.Text}->{lvValue}"); + tbQTY.Text = lvValue; + } + else if (TagStr == "MFGDATE") + { + tbMFG.Text = lvValue; + } + else if (TagStr == "SUPPLY") + { + tbVName.Text = lvValue; + } + else if (TagStr == "PARTNO") + { + tbpartno.Text = lvValue; + } + } + + private void button3_Click(object sender, EventArgs e) + { + CancleAutoConfirm(); + //Pub.Result.JobEndTime + //If SID is changed, put original value in sid0 + if (tbSID.Text.isEmpty()) + { + UTIL.MsgE("SID is missing"); + tbSID.Focus(); + return; + } + func_sidconv(false); + } + + void CancleAutoConfirm() + { + if (VAR.BOOL[eVarBool.Option_AutoConf]) + { + btOK.Text = "◆ Input Complete ◆"; + tmAutoConfirm.Stop(); + } + } + + void func_sidconv(Boolean auto) + { + var sid = tbSID.Text.Trim(); + + + if (auto) + { + //Query from database + try + { + var dr = PUB.Result.DTSidConvert.Where(t => t.SIDFrom == sid); + if (dr.Any() == true) //Conversion table data exists + { + if (dr.Count() == 1) + { + //Create only when original has no value + if (lbSID0.Text.isEmpty()) + { + lbSID0.Tag = tbSID.Text; //Since conversion info exists, put current info into original value + lbSID0.Text = tbSID.Text; //Original value + } + tbSID.Text = dr.First().SIDTo; //Put converted value into current value + var drsid = dr.First(); + PUB.log.Add(string.Format("SID auto conversion {0}->{1}", drsid.SIDFrom, drsid.SIDTo)); + } + else + { + PUB.log.AddE(string.Format("SID auto conversion failed {0}, found SID conversion info count:{1}", sid, dr.Count())); + PUB.Result.DTSidConvertMultiList.Add(sid); + } + } + else + { + PUB.Result.DTSidConvertEmptyList.Add(sid); + PUB.log.Add(string.Format("SID auto conversion failed - no conversion data sid:{0}", sid)); + } + + } + catch (Exception ex) + { + PUB.log.AddE("SID conversion operation failed message:" + ex.Message); + } + } + else + { + var f = new Dialog.fNewSID(sid); + if (f.ShowDialog() != DialogResult.OK) return; + + if (lbSID0.Tag == null || lbSID0.Tag.ToString().isEmpty()) //Is there previously converted info? + { + //원본값 백업 + lbSID0.Tag = tbSID.Text; + lbSID0.Text = tbSID.Text; + + //from & to + PUB.Result.LastSIDFrom = tbSID.Text.Trim(); + PUB.Result.LastSIDTo = f.NewSID.Trim(); + + PUB.log.Add($"Entering last record due to manual SID selection from={PUB.Result.LastSIDFrom},to={PUB.Result.LastSIDTo}"); + } + + PUB.Result.LastSIDCnt = f.FindSIDCount; + tbSID.Text = f.NewSID; + } + + UpdateSID(auto); + + } + + /// + /// 데이터베이스의 정보를 UI에 반영한다 + /// + /// + void UpdateSID(Boolean auto = false) + { + //고칠게 없다. + if (TbCustCode.Text.isEmpty() == false && tbpartno.Text.isEmpty() == false && this.PrintPos.isEmpty() == false) + { + return; + } + + //sid 가 변경되었으나 해당 sid 인쇄위치 및 customer / part no 값을 확인 합니다. + var taSID = new DataSet1TableAdapters.K4EE_Component_Reel_SID_InformationTableAdapter(); + var taPRN = new DataSet1TableAdapters.K4EE_Component_Reel_Print_InformationTableAdapter(); + + try + { + var sid = this.tbSID.Text.Trim(); + + var dr = taSID.GetBySID(PUB.MCCode, sid).FirstOrDefault(); + var drP = taPRN.GetBySID(PUB.MCCode, sid).FirstOrDefault(); + + if (dr == null) return; + + var msg = "SID 변경으로 인해 다음 자료를 입력할까요?"; + Boolean bupdate = false; + if (dr.CustCode.isEmpty() == false && dr.CustCode != TbCustCode.Text) + { + msg += "\nCustomer Code : " + dr.CustCode; + msg += "\nCustomer Name : " + dr.CustName; + bupdate = true; + } + + if (dr.PartNo.isEmpty() == false && dr.PartNo != tbpartno.Text)// tbpartno.Text.isEmpty()) + { + msg += "\nPart No : " + dr.PartNo; + bupdate = true; + } + + if (drP.PrintPosition.isEmpty() == false) + { + msg += "\nPrint Position : " + drP.PrintPosition; + bupdate = true; + } + if (bupdate == false) + { + //Util.MsgE("변경 가능한 자료가 없습니다"); + return; + } + + //Display on screen - apply without asking in auto mode + if (auto == false && UTIL.MsgQ(msg) != DialogResult.Yes) return; + if (dr.CustCode.isEmpty() == false && TbCustCode.Text != dr.CustCode) + { + TbCustCode.Text = dr.CustCode; + tbCustName.Text = dr.CustName; + } + + if (dr.PartNo.isEmpty() == false && tbpartno.Text != dr.PartNo) + { + this.tbpartno.Text = dr.PartNo; + } + + if (drP.PrintPosition.isEmpty() == false) + { + this.PrintPos = drP.PrintPosition; + DisplayPrintPos(this.PrintPos); + } + + //이 SID의 최근 MFGDate 와 Qty 를 추가 체크한다 210326 + if (tbMFG.Text.isEmpty() || tbQTY.Text.isEmpty()) + { + func_CheckDateQty(); + } + } + catch (Exception ex) + { + PUB.log.AddE($"SID information update failed: {ex.Message}"); + } + taSID.Dispose(); + taPRN.Dispose(); + } + + Boolean func_CheckDateQty() + { + Boolean bwarn = false; + + var sid = this.tbSID.Text.Trim(); + if (sid.isEmpty()) return false; //sid가 없다. + + //최근 6시간안에서 동일한 데이터를 찾아서 제안 해준다 + var sd = DateTime.Now.AddHours(-1); + var sql = "select * from K4EE_Component_Reel_Result with (nolock)" + + " where jtype = @jtype and sid = @sid and isnull(QR,'') <> '' and stime >= @sd" + + " order by wdate desc"; + var ps = new SqlParameter[] { + new SqlParameter("jtype", PUB.Result.JobType2), + new SqlParameter("sid", sid), + new SqlParameter("sd", sd), + }; + + DataSet1.K4EE_Component_Reel_ResultRow preData = null; + var preDatas = DBHelper.Get(sql, ps); + if (preDatas.Rows.Count > 0) preData = preDatas.Rows[0] as DataSet1.K4EE_Component_Reel_ResultRow; + + + + //기존자료가 없다면 취소 + if (preData == null) return false; + var amkorid = new StdLabelPrint.CAmkorSTDBarcode(preData.QR); + + if (preData.VNAME != tbVName.Text) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},mfgdata={1}", sid, amkorid.MFGDate)); + tbVName.Text = preData.VNAME; + bwarn = true; + //if (func_existbcddata(amkorid.MFGDate) == false) + { + AddErrorMessage("V.Name updated from previous record"); + PUB.log.Add("'V.Name' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + } + } + + + if (amkorid.MFGDate.isEmpty() == false && tbMFG.Text.isEmpty()) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},mfgdata={1}", sid, amkorid.MFGDate)); + tbMFG.Text = amkorid.MFGDate; + bwarn = true; + if (func_existbcddata(amkorid.MFGDate) == false) + { + AddErrorMessage("MFG updated from previous record"); + PUB.log.Add("'MFG Date' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + } + } + + if (amkorid.QTY > 0 && tbQTY.Text.isEmpty()) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + PUB.log.Add($"Quantity updated {tbQTY.Text}->{amkorid.QTY}"); + tbQTY.Text = amkorid.QTY.ToString(); + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},qty={1}", sid, amkorid.QTY)); + bwarn = true; + if (func_existbcddata(amkorid.QTY.ToString()) == false) + { + AddErrorMessage("QTY updated from previous record"); + PUB.log.Add("'Qty' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + } + + } + + if (amkorid.PARTNO.isEmpty() == false && tbpartno.Text.isEmpty()) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + tbpartno.Text = amkorid.PARTNO; + bwarn = true; + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},PARTNO={1}", sid, amkorid.PARTNO)); + if (func_existbcddata(amkorid.PARTNO) == false) + { + AddErrorMessage("PartNo updated from previous record"); + PUB.log.Add("'Part No' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + } + + } + + //Customer + if (amkorid.RID.Length > 10 && amkorid.RID.Substring(2, 4) != TbCustCode.Text.Trim()) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + TbCustCode.Text = amkorid.RID.Substring(2, 4); + bwarn = true; + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},VLOT={1}", sid, amkorid.VLOT)); + if (func_existbcddata(TbCustCode.Text) == false) + { + AddErrorMessage("Customer Code updated from previous record"); + PUB.log.Add("'Customer Code' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + + + } + btCustomAutoInput.PerformClick(); + } + + + if (amkorid.VLOT.isEmpty() == false && tbVLOT.Text.isEmpty()) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + tbVLOT.Text = amkorid.VLOT; + bwarn = true; + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},VLOT={1}", sid, amkorid.VLOT)); + if (func_existbcddata(amkorid.VLOT) == false) + { + AddErrorMessage("VLOT updated from previous record"); + PUB.log.Add("'Vender LOT' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + } + + } + + if (amkorid.VENDERNAME.isEmpty() == false && tbVName.Text.isEmpty()) + { + //해당 mfgdae 가 바코드목록에 잇다면 바로 적용 + //업다면 적용하고 적용 메세지 표시한다 + tbVName.Text = amkorid.VENDERNAME; + bwarn = true; + //Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},VENDERNAME={1}", sid, amkorid.VENDERNAME)); + if (func_existbcddata(amkorid.VENDERNAME) == false) + { + AddErrorMessage("VNAME updated from previous record"); + PUB.log.Add("'Vender Name' value entered from previous record\n" + + "Previous work time: " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" + + "SID : " + preData.SID + "\n" + + "MFG Date : " + amkorid.MFGDate + "\n" + + "Part No : " + amkorid.PARTNO + "\n" + + "Vender Lot : " + amkorid.VLOT + "\n" + + "Vender Name : " + amkorid.VENDERNAME + "\n" + + "QTY : " + amkorid.QTY.ToString(), true); + } + + } + + return bwarn; + + } + /// + /// Check if the data exists in Keyence barcode list + /// + /// + /// + Boolean func_existbcddata(string data) + { + var lv = lvbcdList.FindItemWithText(data); + return lv != null; + } + + private void btReqQty_Click(object sender, EventArgs e) + { + var msg = string.Empty; + var rid = tbRID.Text.Trim(); + if (rid.isEmpty()) + { + UTIL.MsgE("Reel ID is required"); + return; + } + if (AR.SETTING.Data.OnlineMode == false) + { + UTIL.MsgE("Cannot be used in offline mode"); + return; + } + + var cnt = 0;// (Amkor.RestfulService.get_stock_count(rid, out msg)); + if (cnt > 0) + { + var oldCnt = int.Parse(tbQTY.Text.Replace(",", "")); + var newCnt = (int)cnt; + if (oldCnt == newCnt) + { + //Quantities are same, no processing needed + } + else + { + //If numbers are different? + if (UTIL.MsgQ(string.Format("Do you want to change the quantity?\nCurrent: {0}\nServer: {1}", tbQTY.Text, newCnt)) == DialogResult.Yes) + { + PUB.log.Add($"Quantity updated {tbQTY.Text}->{newCnt}"); + tbQTY.Text = newCnt.ToString(); + } + } + } + else + { + UTIL.MsgE("Server quantity check failed\n\n" + msg); + } + } + + private void tbSupply_TextChanged(object sender, EventArgs e) + { + + } + + + private void label13_Click(object sender, EventArgs e) + { + //라벨위치 + //라벨위치느느 클릭해서 고칠필요 없다 + } + + + private void label22_Click(object sender, EventArgs e) + { + //부착위치 + var lb = sender as Label; + PrintPos = lb.Tag.ToString(); + DisplayPrintPos(PrintPos); + } + + void DisplayPrintPos(string v) + { + var lbs = new Label[] { pb7, pb8, pb9, pb4, pb6, pb1, pb2, pb3 }; + foreach (Label item in lbs) + if (item.Tag.ToString() == v) item.BackColor = Color.Blue; + else item.BackColor = Color.FromArgb(64, 64, 64); + } + + + //라벨은 여러 위치에서 발견될 수 있다 + //void DisplayLabelPos(byte[] labelpos) + //{ + // var lbs = new Label[] { lbl1, lbl2, lbl3, lbl4, lbl6, lbl7, lbl8, lbl9 }; + // for (int i = 0; i < labelpos.Length; i++) + // lbs[i].BackColor = labelpos[i] > 0 ? Color.Blue : Color.FromArgb(64, 64, 64); + //} + + bool NewReelId = false; + private void btNewID_Click(object sender, EventArgs e) + { + //var id = TbCustCode.Text; // string.Empty; + //if (id.Length != 4) + //{ + // UTIL.MsgE($"올바른 고객번호를 입력하세요\n" + + // $"고객번호는 4자리여야 합니다\n" + + // $"값 : {id}\n" + + // $"길이 : {id.Length}"); + // return; + //} + //if (tbRID.Text.Length > 4) id = tbRID.Text.Substring(0, 4); + + //already check + bool MakeNewID = true; + if (tbRID0.Text.isEmpty() == false && tbRID.Text.isEmpty() == false) + { + if (UTIL.MsgQ($"This is a newly generated ReelID. Do you want to generate it again?") != DialogResult.Yes) + { + MakeNewID = false; + } + } + + //웹서비스로 생성한다. + if (MakeNewID) + { + var sid = tbSID.Text.Trim(); + if (sid.isEmpty()) + { + UTIL.MsgE("No SID"); + return; + } + + //WMS generates from DB + var newid = PUB.MakeNewREELID(sid); + if (newid.success == false) + { + UTIL.MsgE($"No ReelID Data\n{newid.message}", true); + return; + } + + //remain original reel id + if (this.tbRID0.Text.isEmpty() && tbRID.Text.isEmpty() == false) + this.tbRID0.Text = tbRID.Text.Trim(); + + this.tbRID.Text = newid.newid; + NewReelId = true; + PUB.log.AddI($"New REELID:{newid.newid}(LoaderInfo)"); + } + } + + private void tbDate_Click(object sender, EventArgs e) + { + selectInput(sender as TextBox); + } + + private void button4_Click(object sender, EventArgs e) + { + DateTime dt = DateTime.Now; + var dtstr = this.tbMFG.Text.Trim().Replace("-", "").Replace("/", ""); + if (dtstr.Length == 8) + { + dt = new DateTime( + int.Parse(dtstr.Substring(0, 4)), + int.Parse(dtstr.Substring(4, 2)), + int.Parse(dtstr.Substring(6, 2))); + } + + var f = new Dialog.fSelectDay(dt); + if (f.ShowDialog() == DialogResult.OK) + { + this.tbMFG.Text = f.dt.ToShortDateString(); + } + } + + private void groupBox2_Enter(object sender, EventArgs e) + { + + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //클릭하면 입력창을 띄운다 + UTIL.TouchKeyShow(tbRID, "Input REEL ID"); + } + + private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbSID, "INPUT SID"); + } + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbVLOT, "INPUT VENDER LOT"); + } + + private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbQTY, "INPUT QTY"); + } + + private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbMFG, "INPUT MFG DATE"); + } + + private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbVName, "INPUT SUPPLY NAME"); + } + + private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //tbpartno + UTIL.TouchKeyShow(tbpartno, "INPUT CUSTOMER PART NO."); + } + + private void btPart_Click(object sender, EventArgs e) + { + //파트번호자동입력(sid 를 가지고 테이블에서 찾는다) + if (tbSID.Text.isEmpty()) + { + UTIL.MsgE("SID value is required", true); + return; + } + var sid = tbSID.Text.Trim(); + using (var db = new DataSet1TableAdapters.K4EE_Component_Reel_SID_InformationTableAdapter()) + { + var dr = db.GetBySID(PUB.MCCode, sid).FirstOrDefault(); + if (dr == null) + { + UTIL.MsgE("No information found for this SID"); + return; + } + + //파트번호가 잇어야 한다. + if (dr.PartNo != null || dr.PartNo.isEmpty()) + { + UTIL.MsgE("Part No value is not entered for this SID"); + return; + } + + var partno = dr.PartNo.Trim(); + if (tbpartno.Text.isEmpty()) tbpartno.Text = partno; + else + { + var dlg = UTIL.MsgQ(string.Format("Would you like to change the Part NO value?\n" + + "Existing : " + tbpartno.Text + "\n" + + "New : " + partno)); + if (dlg == DialogResult.Yes) tbpartno.Text = dr.PartNo; + } + } + + } + + private void btCustAutoInput_Click(object sender, EventArgs e) + { + using (var db = new DataSet1TableAdapters.K4EE_Component_Reel_SID_InformationTableAdapter()) + { + + var sid = tbSID.Text.Trim(); + if (sid.isEmpty()) + { + UTIL.MsgE("SID value is required", true); + return; + } + + var dr = db.GetBySID(PUB.MCCode, sid).FirstOrDefault(); + if (dr == null || dr.CustCode.isEmpty()) + { + UTIL.MsgE("No information found for this SID"); + return; + } + + //찾은데이터에서 값을 확인한다. + //Util.MsgI(string.Format("Customer/Vender 정보가 업데이트 되었습니다\n" + + // "Customer : {0}\n" + + // "Customer Name : {1}\n" + + // "Vender Name : {2}", dr.CustCode, dr.CustName, dr.VenderName)); + + //벤더네임은 vlot값을 가지고 한다. 210504 + var vlot = this.tbVLOT.Text.Trim(); + if (vlot.isEmpty() == false) + { + using (var taResult = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter()) + { + var dr2 = taResult.GetByLastVLotOne(AR.SETTING.Data.McName, vlot).FirstOrDefault(); + if (dr2 != null) + { + tbVName.Text = dr2.VNAME; + } + } + } + TbCustCode.Text = dr.CustCode; + tbCustName.Text = dr.CustName; + + } + + + } + + private void linkLabel8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(TbCustCode, "INPUT SUPPLY CODE"); + } + + private void button7_Click(object sender, EventArgs e) + { + //진수석님 데이터에서 찾아본다. + var custcode = TbCustCode.Text.Trim(); + var partno = tbpartno.Text.Trim(); + if (partno.isEmpty()) + { + UTIL.MsgE("The following information is required to find SID\n" + + "1. Part No"); + return; + } + + //각 상황에 따라 다르다. + using (var db = new DataSet1TableAdapters.K4EE_Component_Reel_SID_InformationTableAdapter()) + { + var amksid = string.Empty; + var dtSIDInfo = db.GetData(PUB.MCCode); + + if (custcode.isEmpty() == false && partno.isEmpty() == false) + { + var dr = dtSIDInfo.Where(t => t.CustCode == custcode && t.PartNo == partno && string.IsNullOrEmpty(t.SID) == false).FirstOrDefault(); + if (dr != null && dr.SID.isEmpty() == false) + { + amksid = dr.SID; + } + else + { + UTIL.MsgE("Cannot confirm SID corresponding to registered Customer Code/Part No\n" + + "Customer Code : " + custcode + "\n" + + "Part No : " + partno); + return; + } + } + else if (custcode.isEmpty() == false) + { + var drow = dtSIDInfo.Where(t => t.CustCode == custcode && string.IsNullOrEmpty(t.SID) == false).ToList(); + if (drow == null || drow.Count < 1) + { + UTIL.MsgE("Cannot find SID for the registered Customer Code\nCustomer: " + custcode); + return; + } + var f = new fSelectDataList(drow.Select(t => t.SID).ToArray()); + if (f.ShowDialog() == DialogResult.OK) + { + amksid = f.SelectedValue; + } + else + { + UTIL.MsgE("User selection was canceled"); + return; + } + } + else if (partno.isEmpty() == false) + { + var drow = dtSIDInfo.Where(t => t.PartNo == partno && string.IsNullOrEmpty(t.SID) == false).ToList(); + if (drow == null || drow.Count < 1) + { + UTIL.MsgE("Cannot find SID for the registered Part No\n" + "Part No: " + partno); + return; + } + + var sidarr = drow.Select(t => t.SID).ToList(); + var lst = new List(); + foreach (var item in sidarr) + { + var m101 = string.Empty; + var m103 = item.Trim(); + var m106 = string.Empty; + lst.Add(m101 + ";" + m103 + ";" + m106); + } + var f = new Dialog.fSelectSID(lst); + if (f.ShowDialog() == DialogResult.OK) + { + var returndata = f.Value.Split(';'); + amksid = returndata[1].Trim(); + } + else + { + UTIL.MsgE("User selection was canceled"); + return; + } + } + + if (amksid.isEmpty() == false) + { + PUB.log.Add(string.Format("Amkor SID search code={0},part={1},sid={2}", custcode, partno, amksid)); + tbSID.Text = amksid; + UpdateSID(); + } + else + { + PUB.log.Add(string.Format("SID search failed - no SID found\n" + + "Cust:{0}\n" + + "PartNo:{1}", custcode, partno)); + } + } + + + + + } + + private void btIDCheck_Click(object sender, EventArgs e) + { + //중복검사 + var rid = tbRID.Text.Trim(); + if (rid.isEmpty()) + { + UTIL.MsgE("Reel ID value is missing"); + return; + } + if (AR.SETTING.Data.OnlineMode == false) + { + UTIL.MsgE("Cannot be used in offline mode"); + return; + } + + UTIL.MsgE("WMS function not available"); + //var result = Amkor.RestfulService.get_existed_matl_by_id(rid); + //if (result.Complete == false) + //{ + // UTIL.MsgE(result.Message); + //} + //else + //{ + // if (result.Result == true) + // { + // UTIL.MsgE($"This ID is a duplicate ID\nValue: {rid}"); + // return; + // } + // else + // { + // UTIL.MsgI($"해당 ID는 중복되지 않았습니다\n{rid}"); + // } + //} + } + + private void button9_Click(object sender, EventArgs e) + { + var f = new Dialog.fSelectCustInfo(); + if (f.ShowDialog() == DialogResult.OK) + { + this.tbCustName.Text = f.CustName; + this.TbCustCode.Text = f.CustCode; + PUB.log.Add(string.Format("User directly selected Customer {0}:{1}", tbCustName.Text, TbCustCode.Text)); + } + } + + Boolean CheckRID() + { + var rid = tbRID.Text.Trim(); + if (rid.Length < 10) return false; + //var cut = TbCustCode.Text.Trim(); + //if (rid.Substring(2, 4) != cut) + //{ + // return false; + //} + return true; + } + Boolean autoconf = false; + Boolean warn = false; + Boolean samesidwarn = false; + private void btOK_Click(object sender, EventArgs e) + { + bool topmost = this.TopMost; + //var IsBypas = VAR.STR[eVarString.JOB_TYPE] == "BP"; + if (System.Diagnostics.Debugger.IsAttached) + this.TopMost = false; + + var itemC = PUB.Result.ItemDataC; + + //manu 목록에 없다면 추가 해준다. + var manuName = tbVName.Text.Trim().ToLower(); + if (manuName.isEmpty() == false) + { + lock (PUB.Result.dsList) + { + if (PUB.Result.dsList.Supply.Where(t => t.TITLE.ToLower() == manuName).Any() == false) + { + //기존 manu 목록에 없으니 추가한다. + var newdr = PUB.Result.dsList.Supply.NewSupplyRow(); + newdr.TITLE = tbVName.Text.Trim(); + PUB.Result.dsList.Supply.AddSupplyRow(newdr); + PUB.Result.SaveListDB(); + } + } + } + + //회전용데이터가 여러개 있다면 처리하지 않는다. + #region "Rotate Data" + if (this.lvbcdList.CheckedItems.Count != 1) + { + PUB.AddSystemLog(Application.ProductVersion, "MAIN", $"회전 기준데이터가 {this.lvbcdList.CheckedItems.Count}건 입니다"); + UTIL.MsgE("Only one rotation reference data should be selected"); + return; + } + if (this.lvbcdList.CheckedItems.Count == 1) + { + var bcddata = lvbcdList.CheckedItems[0].SubItems[1].Text; + lock (itemC.VisionData.barcodelist) + { + foreach (var item in itemC.VisionData.barcodelist) + { + if (item.Value.Data == bcddata) + { + PUB.log.Add(string.Format("Rotation reference barcode value {0}", item.Value.Data)); + item.Value.UserActive = true; + } + else item.Value.UserActive = false; + } + } + } + #endregion + + //마지막에 작업한 데이터와 비교 ?? 220104 + //if (tbSID.Text == PUB.Result.LastSIDTo && tbVName.Text != PUB.Result.LastVName) + //{ + // PUB.Result.LastVName = tbVName.Text; + // PUB.log.Add($"Vname 값을 저장하여 연속작업시 사용합니다 sid:{tbSID.Text},vname:{tbVName.Text}"); + //} + + //필수값 입력 확인 + #region "Check iNput Data" + if (tbSID.Text.isEmpty()) + { + UTIL.MsgE("SID is not entered"); + tbSID.Focus(); + return; + } + if (tbVLOT.Text.isEmpty()) + { + UTIL.MsgE("VLOT is not entered"); + tbVLOT.Focus(); + return; + } + if (tbQTY.Text.isEmpty()) + { + UTIL.MsgE("QTY is not entered"); + tbQTY.Focus(); + return; + } + if (tbMFG.Text.isEmpty()) + { + UTIL.MsgE("MFG-DATE is not entered"); + tbMFG.Focus(); + return; + } + if (tbRID.Text.isEmpty()) + { + UTIL.MsgE("REEL ID is not entered"); + tbRID.Focus(); + return; + } + if (PUB.Result.vModel.IgnorePartNo == false && this.tbpartno.Text.isEmpty()) + { + UTIL.MsgE("PART No is not entered"); + tbpartno.Focus(); + return; + } + if (PUB.OPT_BYPASS() == false && PUB.Result.vModel.DisablePrinter == false && this.PrintPos.isEmpty()) + { + UTIL.MsgE("Print attachment position is not specified"); + return; + } + if (PUB.OPT_BYPASS() == false && this.tbVName.Text.isEmpty()) + { + UTIL.MsgE("Vendor Name is not entered"); + return; + } + #endregion + + //현재 작업모드와 SID가 일치하는지 확인한다. + var sidNew = this.tbSID.Text.Trim(); + var sidOld = this.lbSID0.Text.Trim();//.Tag == null ? string.Empty : lbSID0.Text;v + var partNo = this.tbpartno.Text.Trim(); + var custCode = this.TbCustCode.Text.Trim(); + + if (VAR.BOOL[eVarBool.Opt_NewReelID] && (tbRID.Text.isEmpty() || NewReelId == false)) + { + UTIL.MsgE("New Reel ID generation mode.\nPlease generate REEL ID."); + this.TopMost = topmost; + return; + } + + //sid전환모드 확인 230510 + if (VAR.BOOL[eVarBool.Opt_SIDConvert]) + { + if (lbSID0.Tag == null || lbSID0.Text.Length != 9) + { + UTIL.MsgE("SID conversion mode. Please perform SID conversion"); + this.TopMost = topmost; + return; + } + } + + + //신규릴 모드일때에만 CustomerCode 값을 체크한다 + if (VAR.BOOL[eVarBool.Opt_NewReelID] && CheckRID() == false) + { + PUB.AddSystemLog(Application.ProductVersion, "MAIN", $"Reel ID 의 Customer Code 값이 현재 값과 일치하지 않습니다(RID:{tbRID.Text}/CUST:{TbCustCode.Text})"); + UTIL.MsgE("Reel ID Customer Code value does not match the current value\nRegenerate REEL ID if necessary"); + this.TopMost = topmost; + return; + } + + //자동 실행이나 LOT값이 변경되면 자동 실행을 취소한다 + var lot = this.tbVLOT.Text.Trim(); + if (warn == false && autoconf == true) + { + if (AR.SETTING.Data.OnlineMode) + { + var taQ = new DataSet1TableAdapters.QueriesTableAdapter(); + var LastLot = taQ.GetLastVLotFromSID(sidNew); + if (LastLot.isEmpty() == false && LastLot.Equals(lot) == false) + { + UTIL.MsgE("Previous LOT value does not match. Auto confirmation is canceled\n" + + $"Previous LOT:{LastLot}, New LOT:{lot}"); + warn = true; + this.TopMost = topmost; + return; + } + } + } + + + + //모든자료는 존재한다 저장가능하다 + if (AR.SETTING.Data.OnlineMode) + { + //시드정보테이블의 데이터를 역으로 저장한 경우 + if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && VAR.BOOL[eVarBool.Opt_SID_WriteServer]) + { + Dictionary wheres = new Dictionary(); + Dictionary columns = new Dictionary(); + + //조건절생성 + if (VAR.BOOL[eVarBool.Opt_SID_Where_CustCode]) wheres.Add("CustCode", TbCustCode.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Where_PartNo]) wheres.Add("PartNo", tbpartno.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Where_SID]) wheres.Add("SID", tbSID.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) wheres.Add("VenderLot", tbVLOT.Text); + + //Make Target COlumns + if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode]) columns.Add("CustCode", TbCustCode.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo]) columns.Add("PartNo", tbpartno.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_PrintPos]) columns.Add("PrintPosition", this.PrintPos); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID]) + { + //SID변환기능이 동작한상태에서는 변환된 SID정보를 저장하지 않는다 230510 + if (VAR.BOOL[eVarBool.Opt_SIDConvert]) + { + PUB.log.AddAT($"SID information will not be updated due to SID conversion feature usage"); + } + else columns.Add("SID", tbSID.Text); + } + if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName]) columns.Add("VenderName", tbVName.Text); + ServerWriteINF(columns, wheres); + } + + + //시드변환정보 저장 + if (VAR.BOOL[eVarBool.Opt_SIDConvert] && VAR.BOOL[eVarBool.Opt_SID_WriteServer]) + { + var SIDO = lbSID0.Text.Trim(); + var SIDN = tbSID.Text.Trim(); + if (SIDO.Equals(SIDN) == false && SIDO.isEmpty() == false && SIDN.isEmpty() == false && SIDO.Length == 9 && SIDO.Length == SIDN.Length) + { + Dictionary wheres = new Dictionary(); + Dictionary columns = new Dictionary(); + + //조건절생성 + wheres.Add("SIDFrom", SIDO); + + //Make Target COlumns + columns.Add("SIDTo", SIDN); + columns.Add("SIDFrom", SIDO); //250106 + ServerWriteCNV(columns, wheres); + } + } + else PUB.log.AddI($"Seed conversion information(SID) will not be saved"); + + //시드변환테이블에 데이터를 저장하는 경우이다. + if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && VAR.BOOL[eVarBool.Opt_Conv_WriteServer]) + { + Dictionary wheres = new Dictionary(); + Dictionary columns = new Dictionary(); + + //조건절생성 + if (VAR.BOOL[eVarBool.Opt_Conv_Where_CustCode]) wheres.Add("CustCode", TbCustCode.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Where_PartNo]) wheres.Add("PartNo", tbpartno.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Where_SID]) wheres.Add("SIDTo", tbSID.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Where_VLOT]) wheres.Add("VenderLot", tbVLOT.Text); + + //Make Target COlumns + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_CustCode]) columns.Add("CustCode", TbCustCode.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PartNo]) columns.Add("PartNo", tbpartno.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PrintPos]) columns.Add("PrintPosition", this.PrintPos); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_VenderName]) columns.Add("VenderName", tbVName.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_Batch]) columns.Add("batch", tbBatch.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_QtyMax]) columns.Add("qtymax", tbQtyMax.Text); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_SID]) columns.Add("SIDFrom", lbSID0.Text.Trim()); //250106 + + PUB.log.Add($"SID conversion info save columns:{string.Join(",", columns)},where:{string.Join("',", wheres)}"); + ServerWriteCONVINF(columns, wheres); + } + else PUB.log.AddI($"Seed conversion information(detailed) will not be saved"); + } + + //값을 설정해주고 빠져나간다 + itemC.VisionData.SetRID(tbRID.Text.Trim(), "USER CONFIRM");//.RID = tbRID.Text.Trim(); + itemC.VisionData.RID0 = tbRID0.Text.Trim();// tbRID.Text.Trim();// tbRID.Tag.ToString(); //210429 + itemC.VisionData.RIDNew = this.NewReelId; + + + itemC.VisionData.SID0 = lbSID0.Text.Trim(); //orginal sid value + + if (lbSID0.Text.isEmpty() && + itemC.VisionData.SID.isEmpty() == false && + itemC.VisionData.SID.Equals(tbSID.Text.Trim()) == false) + itemC.VisionData.SID0 = itemC.VisionData.SID; + + + itemC.VisionData.SID = tbSID.Text.Trim(); //sid convert value + itemC.VisionData.QTYMAX = tbQtyMax.Text.Trim(); + itemC.VisionData.BATCH = tbBatch.Text.Trim(); + + itemC.VisionData.VLOT = tbVLOT.Text.Trim(); + itemC.VisionData.QTY = tbQTY.Text.Trim(); + itemC.VisionData.MFGDATE = tbMFG.Text.Trim(); + itemC.VisionData.VNAME = tbVName.Text.Trim(); + itemC.VisionData.PARTNO = tbpartno.Text.Trim(); + + //Apply Confirm Data + if (this.autoconf) itemC.VisionData.ConfirmAuto = true; + itemC.VisionData.ConfirmUser = true; + + //Apply Print Position Data + itemC.VisionData.PrintPositionData = this.PrintPos; + itemC.VisionData.PrintPositionCheck = true; //사용자가 확인했다. + + //delete -- 220706 + //this.DisplayLabelPos(itemC.VisionData.LabelPositionData); + + this.PrintPos = itemC.VisionData.PrintPositionData; + this.DisplayPrintPos(itemC.VisionData.PrintPositionData); + + this.TopMost = topmost; + this.Close(); + } + + + /// + /// 지정한 자료를 서버에 기록합니다. 조건절과 대상 열을 제공해야합니다 + /// + void ServerWriteINF(Dictionary columns, Dictionary wheres) + { + //변경된 값만 저장여부를 확인할 것이므로 기존 값을 모두 가져온다 + var SQL = "select top 1 " + string.Join(",", columns.Select(t => "isnull([" + t.Key + "],'') as " + t.Key + "")) + + " from K4EE_Component_Reel_SID_Information WITH(NOLOCK)"; + + var WSQL = $" where MC='{PUB.MCCode}'"; + for (int i = 0; i < wheres.Count; i++) + { + var col = wheres.ElementAt(i); + var colname = col.Key; + var colvalue = col.Value; + WSQL += " AND "; + WSQL += $" {colname}='{colvalue.Replace("'", "''")}'"; + } + SQL += WSQL; + + Dictionary UpdateTarget = new Dictionary(); + var CN = new System.Data.SqlClient.SqlConnection(); + CN.ConnectionString = Properties.Settings.Default.CS; + var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN); + CN.Open(); + var DAR = CMD.ExecuteReader(); + var NoData = true; + Dictionary InsertTarget = new Dictionary(); + while (DAR.Read()) + { + NoData = false; + foreach (var col in columns) + { + var vStr = DAR[col.Key].ToString(); + var cStr = col.Value; + if (vStr.Equals(cStr) == false) + { + //differenct value + UpdateTarget.Add(col.Key, cStr); + } + } + } + DAR.Close(); + //자료가 없다면 데이터를 추가한다. + if (NoData) + { + foreach (var col in columns) + { + InsertTarget.Add(col.Key, col.Value); + } + foreach (var item in wheres) + { + if (InsertTarget.ContainsKey(item.Key) == false) + InsertTarget.Add(item.Key, item.Value); + } + } + + if (UpdateTarget.Count > 0) //if update target + { + + var dlgMsg = $"다음 값을 서버(SID정보)에 저장 하시겠습니까?\n"; + foreach (var item in UpdateTarget) + dlgMsg += $"항목:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + + //check double data 220706 + var CSQL = "select count(*) from K4EE_Component_Reel_SID_Information WITH(NOLOCK) "; + CSQL += WSQL; + CMD.CommandText = CSQL; + var cnt = int.Parse(CMD.ExecuteScalar().ToString()); + var whke = string.Join(",", wheres.Select(t => t.Key).ToList()); + if (cnt < 1) + { + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Cannot update information because target reel information is missing\n" + whke); + } + else if (cnt > 1) + { + + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Cannot update information because multiple target reel information exists ({cnt} items)\n" + whke); + } + else + { + var USQL = $"update K4EE_Component_Reel_SID_Information set [MC]='{PUB.MCCode}'," + + string.Join(",", UpdateTarget.Select(t => "[" + t.Key + "]='" + t.Value + "'")); + + USQL += WSQL; + try + { + CMD.CommandText = USQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save Error\n" + ex.Message); + } + } + } + } + if (InsertTarget.Count > 0) + { + + var dlgMsg = $"다음 값을 서버에 저장 하시겠습니까?\n"; + foreach (var item in InsertTarget) + dlgMsg += $"항목:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + var ISQL = $"insert into K4EE_Component_Reel_SID_Information ([MC],wdate," + + string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" + + $"'{PUB.MCCode}',getdate()," + + string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")"; + + //ISQL += WSQL; + try + { + CMD.CommandText = ISQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save Error\n" + ex.Message); + } + } + + } + CN.Close(); + CN.Dispose(); + } + /// + /// 지정한 자료를 서버에 기록합니다. 조건절과 대상 열을 제공해야합니다 + /// + void ServerWriteCNV(Dictionary columns, Dictionary wheres) + { + //변경된 값만 저장여부를 확인할 것이므로 기존 값을 모두 가져온다 + var tableName = "K4EE_Component_Reel_SID_Convert"; + var SQL = "select top 1 " + string.Join(",", columns.Select(t => "isnull([" + t.Key + "],'') as " + t.Key + "")) + + $" from {tableName} WITH(NOLOCK) "; + + var WSQL = $" where isnull(MC,'{PUB.MCCode}')='{PUB.MCCode}'"; + for (int i = 0; i < wheres.Count; i++) + { + var col = wheres.ElementAt(i); + var colname = col.Key; + var colvalue = col.Value; + WSQL += " AND "; + WSQL += $" {colname}='{colvalue.Replace("'", "''")}'"; + } + SQL += WSQL; + + Dictionary UpdateTarget = new Dictionary(); + var CN = new System.Data.SqlClient.SqlConnection(); + CN.ConnectionString = Properties.Settings.Default.CS; + var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN); + CN.Open(); + var DAR = CMD.ExecuteReader(); + var NoData = true; + Dictionary InsertTarget = new Dictionary(); + while (DAR.Read()) + { + NoData = false; + foreach (var col in columns) + { + var vStr = DAR[col.Key].ToString(); + var cStr = col.Value; + if (vStr.Equals(cStr) == false) + { + //differenct value + UpdateTarget.Add(col.Key, cStr); + } + } + } + DAR.Close(); + + //자료가 없다면 데이터를 추가한다. + if (NoData) + { + foreach (var col in columns) + { + InsertTarget.Add(col.Key, col.Value); + } + foreach (var item in wheres) + { + if (InsertTarget.ContainsKey(item.Key) == false) + InsertTarget.Add(item.Key, item.Value); + } + } + + if (UpdateTarget.Count > 0) //if update target + { + + var dlgMsg = $"다음 SID변환값을 서버에 업데이트 하시겠습니까?\n"; + foreach (var item in UpdateTarget) + dlgMsg += $"항목:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + + //check double data 220706 + var CSQL = $"select count(*) from {tableName}"; + CSQL += WSQL; + CMD.CommandText = CSQL; + var cnt = int.Parse(CMD.ExecuteScalar().ToString()); + var whke = string.Join(",", wheres.Select(t => t.Key).ToList()); + if (cnt < 1) + { + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Cannot update conversion information because target reel information is missing\n" + whke); + } + else if (cnt > 1) + { + + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Cannot update information because multiple target reel conversion information exists ({cnt} items)\n" + whke); + } + else + { + var USQL = $"update {tableName} set isnull([MC],'{PUB.MCCode}')='{PUB.MCCode}'," + + string.Join(",", UpdateTarget.Select(t => "[" + t.Key + "]='" + t.Value + "'")); + + USQL += WSQL; + try + { + CMD.CommandText = USQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("(CNV)Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("(CNV)Save Error\n" + ex.Message); + } + } + } + } + if (InsertTarget.Count > 0) + { + + var dlgMsg = $"다음 변환값을 서버에 추가 하시겠습니까?\n"; + foreach (var item in InsertTarget) + dlgMsg += $"항목:{item.Key} => {item.Value}\n"; + + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + var ISQL = $"insert into {tableName} ([MC]," + + string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" + + $"'{PUB.MCCode}'," + + string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")"; + + //ISQL += WSQL; + try + { + CMD.CommandText = ISQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save(CNV) Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save(CNV) Error\n" + ex.Message); + } + } + + } + CN.Close(); + CN.Dispose(); + + if (UpdateTarget.Any() || InsertTarget.Any()) + { + PUB.GetSIDConverDB(); + } + } + + + void ServerWriteCONVINF(Dictionary columns, Dictionary wheres) + { + //변경된 값만 저장여부를 확인할 것이므로 기존 값을 모두 가져온다 + var SQL = "select top 1 " + string.Join(",", columns.Select(t => "isnull([" + t.Key + "],'') as " + t.Key + "")) + + " from K4EE_Component_Reel_SID_Convert WITH(NOLOCK) "; + + var WSQL = $" where (MC is null or MC='{PUB.MCCode}')"; + for (int i = 0; i < wheres.Count; i++) + { + var col = wheres.ElementAt(i); + var colname = col.Key; + var colvalue = col.Value; + WSQL += " AND "; + WSQL += $" {colname}='{colvalue.Replace("'", "''")}'"; + } + SQL += WSQL; + + PUB.log.Add($"ServerWriteCONVINF SQL={SQL}"); + + Dictionary UpdateTarget = new Dictionary(); + var CN = new System.Data.SqlClient.SqlConnection(); + CN.ConnectionString = Properties.Settings.Default.CS; + var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN); + CN.Open(); + var DAR = CMD.ExecuteReader(); + var NoData = true; + Dictionary InsertTarget = new Dictionary(); + while (DAR.Read()) + { + NoData = false; + foreach (var col in columns) + { + var vStr = DAR[col.Key].ToString(); + var cStr = col.Value; + if (vStr.Equals(cStr) == false) + { + //differenct value + UpdateTarget.Add(col.Key, cStr); + } + } + } + DAR.Close(); + //자료가 없다면 데이터를 추가한다. + if (NoData) + { + foreach (var col in columns) + { + InsertTarget.Add(col.Key, col.Value); + } + foreach (var item in wheres) + { + if (InsertTarget.ContainsKey(item.Key) == false) + InsertTarget.Add(item.Key, item.Value); + } + } + + if (UpdateTarget.Count > 0) //if update target + { + + var dlgMsg = $"다음 값을 서버(변환정보)에 저장 하시겠습니까?\n"; + foreach (var item in UpdateTarget) + dlgMsg += $"항목:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + + //check double data 220706 + var CSQL = "select count(*) from K4EE_Component_Reel_SID_Convert WITH(NOLOCK) "; + CSQL += WSQL; + CMD.CommandText = CSQL; + var cnt = int.Parse(CMD.ExecuteScalar().ToString()); + var whke = string.Join(",", wheres.Select(t => t.Key).ToList()); + if (cnt < 1) + { + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"(CONVINFO) 대상 릴 정보가 없어 정보를 업데이트 할 수 없습니다\n" + whke); + } + else if (cnt > 1) + { + + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"(CONVINFO) 대상 릴 정보가 복수로({cnt}건) 존재하여 정보를 업데이트 할 수 없습니다\n" + whke); + } + else + { + var USQL = $"update K4EE_Component_Reel_SID_Convert set " + + string.Join(",", UpdateTarget.Select(t => "[" + t.Key + "]='" + t.Value + "'")); + + USQL += WSQL; + try + { + CMD.CommandText = USQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("(CONVINFO) Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("(CONVINFO) Save Error\n" + ex.Message); + } + } + } + } + if (InsertTarget.Count > 0) + { + + var dlgMsg = $"다음 값을 서버(변환정보)에 저장 하시겠습니까?\n"; + foreach (var item in InsertTarget) + dlgMsg += $"항목:{item.Key} => {item.Value}\n"; + + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + var ISQL = $"insert into K4EE_Component_Reel_SID_Convert ([MC],wdate," + + string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" + + $"null,getdate()," + + string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")"; + + //ISQL += WSQL; + try + { + CMD.CommandText = ISQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("(CONVINFO) Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("(CONVINFO) Save Error\n" + ex.Message); + } + } + + } + CN.Close(); + CN.Dispose(); + } + + private void label26_Click(object sender, EventArgs e) + { + var sid = this.tbSID.Text.Trim(); + if (sid.isEmpty()) return; + + var dlg = UTIL.MsgQ("Do you want to search for print position from SID?"); + if (dlg != DialogResult.Yes) return; + + using (var db = new DataSet1TableAdapters.K4EE_Component_Reel_Print_InformationTableAdapter()) + { + var dr = db.GetBySID(PUB.MCCode, sid).FirstOrDefault(); + if (dr == null || dr.PrintPosition.isEmpty()) + { + UTIL.MsgE("No print position stored for entered SID\n" + + "SID:" + sid); + return; + } + this.PrintPos = dr.PrintPosition; + DisplayPrintPos(this.PrintPos); + } + } + + private void button1_Click_1(object sender, EventArgs e) + { + //데이터베이스 결과에서 자료를 추가한다. + var result = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + + var tabName = "K4EE_Component_Reel_Result with (nolock)"; + + //1.sid sid를 먼저 검색한다. 이것이 확률이 제일 높음 + if (this.tbSID.Text.isEmpty() == false) + { + var sql = $"select top 5 * from {tabName} where sid = @sid order by wdate desc"; + var list = DBHelper.Get(sql, new SqlParameter("sid", $"{tbSID.Text}")); + //sql = sql.Replace("@sid", tbSID.Text.Trim()); + if (list.Rows.Count > 0) result.Merge(list); + } + //2.파트번호 + if (result.Count == 0 && this.tbpartno.Text.isEmpty() == false) + { + var sql = $"select top 5 * from {tabName} where QR like @search order by wdate desc"; + var list = DBHelper.Get(sql, new SqlParameter("search", $"%;{tbpartno.Text}%")); + if (list.Rows.Count > 0) result.Merge(list); + } + //3.벤더LOT + if (result.Count == 0 && this.tbVLOT.Text.isEmpty() == false) + { + var sql = $"select top 5 * from {tabName} where QR like @search order by wdate desc"; + var list = DBHelper.Get(sql, new SqlParameter("search", $"%;{tbVLOT.Text}%")); + if (list.Rows.Count > 0) result.Merge(list); + } + + //4.벤더이름 + if (result.Count == 0 && this.tbVName.Text.isEmpty() == false) + { + var sql = $"select top 5 * from {tabName} where QR like @search order by wdate desc"; + var list = DBHelper.Get(sql, new SqlParameter("search", $"%;{tbVName.Text}%")); + if (list.Rows.Count > 0) result.Merge(list); + } + + //customer code + if (result.Count < 1) + { + UTIL.MsgE("No search results found\nSearch items\n" + + "1.SID\n" + + "2.LOT\n" + + "3.PARTNO\n"); + return; + } + var f = new fSelectResult(result); + if (f.ShowDialog() != DialogResult.OK) return; + + //값이 없는 것만 처리한다. + string msg = string.Empty; + var qr = f.SelectedValue.QR; + var amk = new StdLabelPrint.CAmkorSTDBarcode(qr); + if (this.tbSID.Text.isEmpty() && amk.SID.isEmpty() == false) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("SID:{0}=>{1}", tbSID.Text, amk.SID); + tbSID.Text = amk.SID; + } + if (this.tbpartno.Text.isEmpty() && amk.PARTNO.isEmpty() == false) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("Part No:{0}=>{1}", tbpartno.Text, amk.PARTNO); + tbpartno.Text = amk.PARTNO; + } + if (this.tbVLOT.Text.isEmpty() && amk.VLOT.isEmpty() == false) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("Vender LOT:{0}=>{1}", tbVLOT.Text, amk.VLOT); + tbVLOT.Text = amk.VLOT; + } + if (this.tbVName.Text.isEmpty() && f.SelectedValue.VNAME.isEmpty() == false) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("Vender Name:{0}=>{1}", tbVName.Text, f.SelectedValue.VNAME); + tbVName.Text = f.SelectedValue.VNAME; + } + if (this.tbMFG.Text.isEmpty() && amk.MFGDate.isEmpty() == false) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("MFG Date:{0}=>{1}", tbMFG.Text, amk.MFGDate); + tbMFG.Text = amk.MFGDate; + } + + if (VAR.BOOL[eVarBool.Opt_UserQtyRQ] == false && this.tbQTY.Text.isEmpty() && amk.QTY != 0) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("QTY:{0}=>{1}", tbQTY.Text, amk.QTY); + + PUB.log.Add($"Quantity updated {tbQTY.Text}->{amk.QTY}"); + tbQTY.Text = amk.QTY.ToString(); + } + + + var custcode = amk.RID.Substring(2, 4); + if (this.TbCustCode.Text.isEmpty() && custcode.isEmpty() == false) + { + msg += (msg.isEmpty() ? "" : "\n") + string.Format("QTY:{0}=>{1}", TbCustCode.Text, custcode); + TbCustCode.Text = custcode;// amk.QTY.ToString(); + } + + if (msg.isEmpty() == false) + { + UTIL.MsgI("The following information has been changed\n" + msg, true); + } + } + + private void label2_Click_1(object sender, EventArgs e) + { + var sid = this.tbSID.Text.Trim(); + if (sid.isEmpty()) return; + using (var db = new DataSet1TableAdapters.K4EE_Component_Reel_Print_InformationTableAdapter()) + { + var dr = db.GetBySID(PUB.MCCode, sid).FirstOrDefault(); + if (dr == null || dr.PrintPosition.isEmpty()) + { + UTIL.MsgE("No print position stored for entered SID\n" + + "SID:" + sid); + return; + } + this.PrintPos = dr.PrintPosition; + } + + DisplayPrintPos(this.PrintPos); + } + + private void button3_Click_1(object sender, EventArgs e) + { + var sid = this.tbSID.Text.Trim(); + if (sid.isEmpty()) + { + UTIL.MsgE("SID value is required"); + return; + } + func_CheckDateQty(); + } + + DateTime stime = DateTime.Now; + private void tmAutoConfirm_Tick(object sender, EventArgs e) + { + var ts = DateTime.Now - stime; + btOK.Text = string.Format("{0:N0}/{1:N0} 초후 자동 완료", ts.TotalSeconds, AR.SETTING.Data.Timeout_AutoConfirm); + if (ts.TotalSeconds >= AR.SETTING.Data.Timeout_AutoConfirm) + { + tmAutoConfirm.Stop(); + autoconf = true; + btOK.PerformClick(); + } + } + + private void 회전기준바코드로설정ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (lvbcdList.FocusedItem == null) + { + UTIL.MsgE("No item has focus"); + return; + } + var dataindex = lvbcdList.FocusedItem.Index; + foreach (ListViewItem item in this.lvbcdList.Items) + { + if (item.Index == dataindex) item.Checked = true; + else item.Checked = false; + } + } + + private void button4_Click_1(object sender, EventArgs e) + { + if (tbpartno.Text.isEmpty()) tbpartno.Text = "N/A"; + else + { + var dlg = UTIL.MsgQ("Do you want to change the current Part No value to N/A?"); + if (dlg == DialogResult.Yes) tbpartno.Text = "N/A"; + } + } + + private void linkLabel9_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(this.tbCustName, "INPUT CUST NAME"); + } + + private void button5_Click_1(object sender, EventArgs e) + { + var a = 1; + var b = 0; + var c = a / b; + + } + + private void lvbcdList_SelectedIndexChanged(object sender, EventArgs e) + { + if (lvbcdList.FocusedItem == null) toolStripStatusLabel1.Text = "--"; + toolStripStatusLabel1.Text = lvbcdList.FocusedItem.SubItems[1].Text; + } + + private void groupBox3_Enter(object sender, EventArgs e) + { + + } + + private void button5_Click_2(object sender, EventArgs e) + { + if (tbVName.Text.isEmpty()) tbVName.Text = "N/A"; + else + { + var dlg = UTIL.MsgQ("Do you want to change the current VenderName value to N/A?"); + if (dlg == DialogResult.Yes) tbVName.Text = "N/A"; + } + } + + private void tbBarcode_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + var data = tbBarcode.Text.Trim().Split(';'); + if (data.Length > 4) + { + if (data[0].Length == 9 && data[0].StartsWith("10")) + { + var sid = data[0].Trim(); + var batch = data[1].Trim(); + var cpn = data[4].Trim(); + + if (tbBatch.Text.isEmpty()) + { + tbBatch.Text = batch; + PUB.log.Add($"Set batch value from user barcode input:{batch}"); + } + + + if (tbSID.Text.isEmpty()) + { + tbSID.Text = sid; + tbpartno.Text = cpn; + PUB.log.Add($"Enter SID/Part number from user barcode, value:{sid}{cpn}"); + } + else + { + if (tbSID.Text.StartsWith("103")) + { + //검증 + if (tbSID.Text.Equals(sid)) + { + //맞다 + tbpartno.Text = cpn; + PUB.log.Add($"Enter part number from user barcode, value:{cpn}"); + } + else + { + UTIL.MsgE($"Part number not set due to 103 SID mismatch\nOriginal SID: {tbSID.Text}\nTarget SID: {sid}"); + } + } + else if (tbSID.Text.StartsWith("101")) + { + //변경전 101->103 + lbSID0.Text = tbSID.Text.Trim(); + tbSID.Tag = tbSID.Text.Trim(); + tbSID.Text = sid; + tbpartno.Text = cpn; + PUB.log.Add($"Enter SID/Part number from user barcode, value:{sid}{cpn}"); + } + } + } + else PUB.log.AddE($"User barcode 0 is not SID{data}"); + } + else PUB.log.AddE($"User barcode error insufficient array count:{data}"); + tbBarcode.SelectAll(); + tbBarcode.Focus(); + } + } + + private void lnkBatch_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbBatch, "INPUT BATCH"); + } + + private void linkLabel10_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbQtyMax, "INPUT MAX QTY(SAP)"); + } + + private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e) + { + if (lvbcdList.FocusedItem == null) + { + UTIL.MsgE("No item has focus"); + return; + } + + try + { + var value = lvbcdList.FocusedItem.SubItems[1].Text.Trim(); + Clipboard.SetText(value); + UTIL.MsgI($"Clipboard Copied\n{value}"); + } + catch (Exception ex) + { + UTIL.MsgE(ex.Message+"\nClipboard"); + } + + } + } +} diff --git a/Handler/Project/Dialog/fLoaderInfo.resx b/Handler/Project/Dialog/fLoaderInfo.resx new file mode 100644 index 0000000..616dc34 --- /dev/null +++ b/Handler/Project/Dialog/fLoaderInfo.resx @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 155, 17 + + + Display all data read from the current barcode reader. +1. First select the data field you want to input from the left side +2. Input data from the list below +3. Press the "Input" button at the bottom + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh + d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh + d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh + d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJh + d2luZy5Qb2ludEYCAAAAAXgBeQAACwsCAAAAAAAAAAAAAAAL + + + + 17, 17 + + + 247, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fLog.Designer.cs b/Handler/Project/Dialog/fLog.Designer.cs new file mode 100644 index 0000000..bb6da7c --- /dev/null +++ b/Handler/Project/Dialog/fLog.Designer.cs @@ -0,0 +1,200 @@ +namespace Project.Dialog +{ + partial class fLog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panLog = new System.Windows.Forms.Panel(); + this.chkVision = new System.Windows.Forms.CheckBox(); + this.chkDebug = new System.Windows.Forms.CheckBox(); + this.chkILStop = new System.Windows.Forms.CheckBox(); + this.chkKen = new System.Windows.Forms.CheckBox(); + this.chkILock = new System.Windows.Forms.CheckBox(); + this.chkFlag = new System.Windows.Forms.CheckBox(); + this.chkMain = new System.Windows.Forms.CheckBox(); + this.logTextBox1 = new arCtl.LogTextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.panLog.SuspendLayout(); + this.SuspendLayout(); + // + // panLog + // + this.panLog.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panLog.Controls.Add(this.chkVision); + this.panLog.Controls.Add(this.chkDebug); + this.panLog.Controls.Add(this.chkILStop); + this.panLog.Controls.Add(this.chkKen); + this.panLog.Controls.Add(this.chkILock); + this.panLog.Controls.Add(this.chkFlag); + this.panLog.Controls.Add(this.chkMain); + this.panLog.Dock = System.Windows.Forms.DockStyle.Top; + this.panLog.Location = new System.Drawing.Point(0, 0); + this.panLog.Margin = new System.Windows.Forms.Padding(0); + this.panLog.Name = "panLog"; + this.panLog.Padding = new System.Windows.Forms.Padding(5); + this.panLog.Size = new System.Drawing.Size(735, 31); + this.panLog.TabIndex = 6; + // + // chkVision + // + this.chkVision.Dock = System.Windows.Forms.DockStyle.Left; + this.chkVision.Location = new System.Drawing.Point(435, 5); + this.chkVision.Name = "chkVision"; + this.chkVision.Size = new System.Drawing.Size(70, 17); + this.chkVision.TabIndex = 4; + this.chkVision.Text = "Vision"; + this.chkVision.UseVisualStyleBackColor = true; + // + // chkDebug + // + this.chkDebug.Dock = System.Windows.Forms.DockStyle.Left; + this.chkDebug.Location = new System.Drawing.Point(365, 5); + this.chkDebug.Name = "chkDebug"; + this.chkDebug.Size = new System.Drawing.Size(70, 17); + this.chkDebug.TabIndex = 3; + this.chkDebug.Text = "Debug"; + this.chkDebug.UseVisualStyleBackColor = true; + // + // chkILStop + // + this.chkILStop.Dock = System.Windows.Forms.DockStyle.Left; + this.chkILStop.Location = new System.Drawing.Point(295, 5); + this.chkILStop.Name = "chkILStop"; + this.chkILStop.Size = new System.Drawing.Size(70, 17); + this.chkILStop.TabIndex = 2; + this.chkILStop.Text = "IL-Stop"; + this.chkILStop.UseVisualStyleBackColor = true; + // + // chkKen + // + this.chkKen.Dock = System.Windows.Forms.DockStyle.Left; + this.chkKen.Location = new System.Drawing.Point(215, 5); + this.chkKen.Name = "chkKen"; + this.chkKen.Size = new System.Drawing.Size(80, 17); + this.chkKen.TabIndex = 1; + this.chkKen.Text = "Keyence"; + this.chkKen.UseVisualStyleBackColor = true; + // + // chkILock + // + this.chkILock.Dock = System.Windows.Forms.DockStyle.Left; + this.chkILock.Location = new System.Drawing.Point(145, 5); + this.chkILock.Name = "chkILock"; + this.chkILock.Size = new System.Drawing.Size(70, 17); + this.chkILock.TabIndex = 0; + this.chkILock.Text = "ILock"; + this.chkILock.UseVisualStyleBackColor = true; + this.chkILock.Click += new System.EventHandler(this.chkMain_Click); + // + // chkFlag + // + this.chkFlag.Dock = System.Windows.Forms.DockStyle.Left; + this.chkFlag.Location = new System.Drawing.Point(75, 5); + this.chkFlag.Name = "chkFlag"; + this.chkFlag.Size = new System.Drawing.Size(70, 17); + this.chkFlag.TabIndex = 0; + this.chkFlag.Text = "Flag"; + this.chkFlag.UseVisualStyleBackColor = true; + this.chkFlag.Click += new System.EventHandler(this.chkMain_Click); + // + // chkMain + // + this.chkMain.Checked = true; + this.chkMain.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkMain.Dock = System.Windows.Forms.DockStyle.Left; + this.chkMain.Location = new System.Drawing.Point(5, 5); + this.chkMain.Name = "chkMain"; + this.chkMain.Size = new System.Drawing.Size(70, 17); + this.chkMain.TabIndex = 0; + this.chkMain.Text = "Main"; + this.chkMain.UseVisualStyleBackColor = true; + this.chkMain.Click += new System.EventHandler(this.chkMain_Click); + // + // logTextBox1 + // + this.logTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); + this.logTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[0]; + this.logTextBox1.DateFormat = "mm:ss.fff"; + this.logTextBox1.DefaultColor = System.Drawing.Color.LightGray; + this.logTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.logTextBox1.EnableDisplayTimer = false; + this.logTextBox1.EnableGubunColor = true; + this.logTextBox1.Font = new System.Drawing.Font("맑은 고딕", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.logTextBox1.ListFormat = "[{0}] {1}"; + this.logTextBox1.Location = new System.Drawing.Point(0, 31); + this.logTextBox1.MaxListCount = ((ushort)(200)); + this.logTextBox1.MaxTextLength = ((uint)(4000u)); + this.logTextBox1.MessageInterval = 50; + this.logTextBox1.Name = "logTextBox1"; + this.logTextBox1.Size = new System.Drawing.Size(735, 469); + this.logTextBox1.TabIndex = 4; + this.logTextBox1.Text = ""; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(0, 500); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(735, 40); + this.button1.TabIndex = 5; + this.button1.Text = "Load File"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // fLog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(735, 540); + this.Controls.Add(this.logTextBox1); + this.Controls.Add(this.button1); + this.Controls.Add(this.panLog); + this.Name = "fLog"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Log Display"; + this.TopMost = true; + this.Load += new System.EventHandler(this.fLog_Load); + this.panLog.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panLog; + private arCtl.LogTextBox logTextBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.CheckBox chkMain; + private System.Windows.Forms.CheckBox chkILock; + private System.Windows.Forms.CheckBox chkFlag; + private System.Windows.Forms.CheckBox chkKen; + private System.Windows.Forms.CheckBox chkDebug; + private System.Windows.Forms.CheckBox chkILStop; + private System.Windows.Forms.CheckBox chkVision; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fLog.cs b/Handler/Project/Dialog/fLog.cs new file mode 100644 index 0000000..06e76f0 --- /dev/null +++ b/Handler/Project/Dialog/fLog.cs @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fLog : Form + { + public fLog() + { + InitializeComponent(); + PUB.log.RaiseMsg += log_RaiseMsg; + PUB.logFlag.RaiseMsg += LogFlag_RaiseMsg; + PUB.logILock.RaiseMsg += LogILock_RaiseMsg; + PUB.logKeyence.RaiseMsg += LogKeyence_RaiseMsg; + PUB.logILStop.RaiseMsg += LogIL_RaiseMsg; + PUB.logDbg.RaiseMsg += LogDebug_RaiseMsg; + PUB.logVision.RaiseMsg += LogVision_RaiseMsg; + //this.FormClosed += (s1, e1) => { this.timer1.Stop(); }; + } + + private void LogVision_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkVision.Checked) this.logTextBox1.AddMsg(LogTime, "DEBUG", TypeStr + ":" + Message); + } + + private void fLog_Load(object sender, EventArgs e) + { + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[] { + new arCtl.sLogMessageColor("FLAG",Color.SkyBlue), + new arCtl.sLogMessageColor("ILOCK", Color.Gold), + new arCtl.sLogMessageColor("ERR",Color.Red), + new arCtl.sLogMessageColor("ATT", Color.Tomato), + new arCtl.sLogMessageColor("NORM", Color.WhiteSmoke), + }; + //timer1.Start(); + } + private void button1_Click(object sender, EventArgs e) + { + var od = new OpenFileDialog(); + od.InitialDirectory = PUB.log.BaseDirectory; + if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + this.logTextBox1.Text = System.IO.File.ReadAllText(od.FileName, System.Text.Encoding.Default); + } + } + + private void chkMain_Click(object sender, EventArgs e) + { + + } + private void LogDebug_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkDebug.Checked) this.logTextBox1.AddMsg(LogTime, "DEBUG", TypeStr + ":" + Message); + } + + private void LogIL_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkILStop.Checked) this.logTextBox1.AddMsg(LogTime, "IL-STOP", TypeStr + ":" + Message); + } + + private void LogFlag_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkFlag.Checked) this.logTextBox1.AddMsg(LogTime, "FLAG", TypeStr + ":" + Message); + } + + private void LogILock_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkILock.Checked) this.logTextBox1.AddMsg(LogTime, "ILCK", TypeStr + ":" + Message); + } + + private void LogKeyence_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkKen.Checked) this.logTextBox1.AddMsg(LogTime, "KEYE", TypeStr + ":" + Message); + } + + + void log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (this.chkMain.Checked) this.logTextBox1.AddMsg(LogTime, TypeStr, Message); + } + + private void timer1_Tick(object sender, EventArgs e) + { + //this.textBox1.Text = + // "PX:" + Pub.WaitMessage[(int)eWaitMessage.PX] + "\r\n" + + // "PZ:" + Pub.WaitMessage[(int)eWaitMessage.PZ] + "\r\n" + + // "LMOVE:" + Pub.WaitMessage[(int)eWaitMessage.LMOVE] + "\r\n" + + // "LUPDN:" + Pub.WaitMessage[(int)eWaitMessage.LUPDN] + "\r\n" + + // "RMOVE:" + Pub.WaitMessage[(int)eWaitMessage.RMOVE] + "\r\n" + + // "RUPDN:" + Pub.WaitMessage[(int)eWaitMessage.RUPDN] + "\r\n" + + // "LPRINT:" + Pub.WaitMessage[(int)eWaitMessage.LPRINT] + "\r\n" + + // "RPRINT:" + Pub.WaitMessage[(int)eWaitMessage.RPRINT] + "\r\n" + + // "VIS0:" + Pub.WaitMessage[(int)eWaitMessage.VIS0] + "\r\n" + + // "VIS1:" + Pub.WaitMessage[(int)eWaitMessage.VIS1] + "\r\n" + + // "VIS2:" + Pub.WaitMessage[(int)eWaitMessage.VIS2]; + } + } +} diff --git a/Handler/Project/Dialog/fLog.resx b/Handler/Project/Dialog/fLog.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fLog.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fManualPrint.Designer.cs b/Handler/Project/Dialog/fManualPrint.Designer.cs new file mode 100644 index 0000000..8ca336b --- /dev/null +++ b/Handler/Project/Dialog/fManualPrint.Designer.cs @@ -0,0 +1,612 @@ +namespace Project.Dialog +{ + partial class fManualPrint + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chkDelinfo = new System.Windows.Forms.CheckBox(); + this.nudCnt = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.radRight = new System.Windows.Forms.RadioButton(); + this.radLeft = new System.Windows.Forms.RadioButton(); + this.btPrint = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel8 = new System.Windows.Forms.Panel(); + this.tbPN = new System.Windows.Forms.TextBox(); + this.button9 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.label8 = new System.Windows.Forms.Label(); + this.panel7 = new System.Windows.Forms.Panel(); + this.tbSPY = new System.Windows.Forms.TextBox(); + this.button8 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.label7 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.tbRID = new System.Windows.Forms.TextBox(); + this.button5 = new System.Windows.Forms.Button(); + this.label6 = new System.Windows.Forms.Label(); + this.panel5 = new System.Windows.Forms.Panel(); + this.tbDate = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.label5 = new System.Windows.Forms.Label(); + this.panel4 = new System.Windows.Forms.Panel(); + this.tbQty = new System.Windows.Forms.TextBox(); + this.button3 = new System.Windows.Forms.Button(); + this.label4 = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tbVLot = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tbSID = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.tbBarcodeInput = new System.Windows.Forms.TextBox(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudCnt)).BeginInit(); + this.panel1.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel2.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.chkDelinfo); + this.groupBox1.Controls.Add(this.nudCnt); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.radRight); + this.groupBox1.Controls.Add(this.radLeft); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox1.Location = new System.Drawing.Point(10, 10); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(522, 68); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Printer"; + // + // chkDelinfo + // + this.chkDelinfo.AutoSize = true; + this.chkDelinfo.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.chkDelinfo.Location = new System.Drawing.Point(345, 31); + this.chkDelinfo.Name = "chkDelinfo"; + this.chkDelinfo.Size = new System.Drawing.Size(169, 23); + this.chkDelinfo.TabIndex = 4; + this.chkDelinfo.Text = "Delete after printing"; + this.chkDelinfo.UseVisualStyleBackColor = true; + // + // nudCnt + // + this.nudCnt.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.nudCnt.Location = new System.Drawing.Point(236, 27); + this.nudCnt.Maximum = new decimal(new int[] { + 99999, + 0, + 0, + 0}); + this.nudCnt.Name = "nudCnt"; + this.nudCnt.Size = new System.Drawing.Size(100, 30); + this.nudCnt.TabIndex = 3; + this.nudCnt.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudCnt.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(157, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(59, 23); + this.label1.TabIndex = 2; + this.label1.Text = "Count"; + // + // radRight + // + this.radRight.AutoSize = true; + this.radRight.Checked = true; + this.radRight.Location = new System.Drawing.Point(78, 29); + this.radRight.Name = "radRight"; + this.radRight.Size = new System.Drawing.Size(72, 27); + this.radRight.TabIndex = 1; + this.radRight.TabStop = true; + this.radRight.Text = "Right"; + this.radRight.UseVisualStyleBackColor = true; + // + // radLeft + // + this.radLeft.AutoSize = true; + this.radLeft.Location = new System.Drawing.Point(10, 29); + this.radLeft.Name = "radLeft"; + this.radLeft.Size = new System.Drawing.Size(59, 27); + this.radLeft.TabIndex = 0; + this.radLeft.Text = "Left"; + this.radLeft.UseVisualStyleBackColor = true; + // + // btPrint + // + this.btPrint.Dock = System.Windows.Forms.DockStyle.Bottom; + this.btPrint.Font = new System.Drawing.Font("맑은 고딕", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btPrint.Location = new System.Drawing.Point(10, 466); + this.btPrint.Name = "btPrint"; + this.btPrint.Size = new System.Drawing.Size(522, 84); + this.btPrint.TabIndex = 1; + this.btPrint.Text = "Print"; + this.btPrint.UseVisualStyleBackColor = true; + this.btPrint.Click += new System.EventHandler(this.btPrint_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.panel8); + this.panel1.Controls.Add(this.panel7); + this.panel1.Controls.Add(this.panel6); + this.panel1.Controls.Add(this.panel5); + this.panel1.Controls.Add(this.panel4); + this.panel1.Controls.Add(this.panel3); + this.panel1.Controls.Add(this.panel2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(10, 78); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 10); + this.panel1.Size = new System.Drawing.Size(522, 307); + this.panel1.TabIndex = 2; + // + // panel8 + // + this.panel8.Controls.Add(this.tbPN); + this.panel8.Controls.Add(this.button9); + this.panel8.Controls.Add(this.button7); + this.panel8.Controls.Add(this.label8); + this.panel8.Dock = System.Windows.Forms.DockStyle.Top; + this.panel8.Location = new System.Drawing.Point(0, 257); + this.panel8.Name = "panel8"; + this.panel8.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel8.Size = new System.Drawing.Size(522, 43); + this.panel8.TabIndex = 5; + // + // tbPN + // + this.tbPN.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbPN.Location = new System.Drawing.Point(137, 5); + this.tbPN.Name = "tbPN"; + this.tbPN.Size = new System.Drawing.Size(235, 30); + this.tbPN.TabIndex = 1; + this.tbPN.Click += new System.EventHandler(this.tbSID_Click); + // + // button9 + // + this.button9.Dock = System.Windows.Forms.DockStyle.Right; + this.button9.Location = new System.Drawing.Point(372, 5); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(75, 38); + this.button9.TabIndex = 2; + this.button9.Text = "N/A"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // button7 + // + this.button7.Dock = System.Windows.Forms.DockStyle.Right; + this.button7.Location = new System.Drawing.Point(447, 5); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(75, 38); + this.button7.TabIndex = 3; + this.button7.Text = "Delete"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button7_Click); + // + // label8 + // + this.label8.Dock = System.Windows.Forms.DockStyle.Left; + this.label8.Location = new System.Drawing.Point(0, 5); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(137, 38); + this.label8.TabIndex = 0; + this.label8.Text = "PN#"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel7 + // + this.panel7.Controls.Add(this.tbSPY); + this.panel7.Controls.Add(this.button8); + this.panel7.Controls.Add(this.button6); + this.panel7.Controls.Add(this.label7); + this.panel7.Dock = System.Windows.Forms.DockStyle.Top; + this.panel7.Location = new System.Drawing.Point(0, 214); + this.panel7.Name = "panel7"; + this.panel7.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel7.Size = new System.Drawing.Size(522, 43); + this.panel7.TabIndex = 4; + // + // tbSPY + // + this.tbSPY.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbSPY.Location = new System.Drawing.Point(137, 5); + this.tbSPY.Name = "tbSPY"; + this.tbSPY.Size = new System.Drawing.Size(235, 30); + this.tbSPY.TabIndex = 1; + this.tbSPY.Click += new System.EventHandler(this.tbSID_Click); + // + // button8 + // + this.button8.Dock = System.Windows.Forms.DockStyle.Right; + this.button8.Location = new System.Drawing.Point(372, 5); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(75, 38); + this.button8.TabIndex = 2; + this.button8.Text = "N/A"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button8_Click); + // + // button6 + // + this.button6.Dock = System.Windows.Forms.DockStyle.Right; + this.button6.Location = new System.Drawing.Point(447, 5); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(75, 38); + this.button6.TabIndex = 3; + this.button6.Text = "Delete"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button6_Click); + // + // label7 + // + this.label7.Dock = System.Windows.Forms.DockStyle.Left; + this.label7.Location = new System.Drawing.Point(0, 5); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(137, 38); + this.label7.TabIndex = 0; + this.label7.Text = "SPY"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel6 + // + this.panel6.Controls.Add(this.tbRID); + this.panel6.Controls.Add(this.button5); + this.panel6.Controls.Add(this.label6); + this.panel6.Dock = System.Windows.Forms.DockStyle.Top; + this.panel6.Location = new System.Drawing.Point(0, 171); + this.panel6.Name = "panel6"; + this.panel6.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel6.Size = new System.Drawing.Size(522, 43); + this.panel6.TabIndex = 3; + // + // tbRID + // + this.tbRID.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbRID.Location = new System.Drawing.Point(137, 5); + this.tbRID.Name = "tbRID"; + this.tbRID.Size = new System.Drawing.Size(310, 30); + this.tbRID.TabIndex = 1; + this.tbRID.Click += new System.EventHandler(this.tbSID_Click); + // + // button5 + // + this.button5.Dock = System.Windows.Forms.DockStyle.Right; + this.button5.Location = new System.Drawing.Point(447, 5); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(75, 38); + this.button5.TabIndex = 2; + this.button5.Text = "Delete"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click); + // + // label6 + // + this.label6.Dock = System.Windows.Forms.DockStyle.Left; + this.label6.Location = new System.Drawing.Point(0, 5); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(137, 38); + this.label6.TabIndex = 0; + this.label6.Text = "RID"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel5 + // + this.panel5.Controls.Add(this.tbDate); + this.panel5.Controls.Add(this.button4); + this.panel5.Controls.Add(this.label5); + this.panel5.Dock = System.Windows.Forms.DockStyle.Top; + this.panel5.Location = new System.Drawing.Point(0, 128); + this.panel5.Name = "panel5"; + this.panel5.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel5.Size = new System.Drawing.Size(522, 43); + this.panel5.TabIndex = 2; + // + // tbDate + // + this.tbDate.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbDate.Location = new System.Drawing.Point(137, 5); + this.tbDate.Name = "tbDate"; + this.tbDate.Size = new System.Drawing.Size(310, 30); + this.tbDate.TabIndex = 1; + this.tbDate.Click += new System.EventHandler(this.tbSID_Click); + // + // button4 + // + this.button4.Dock = System.Windows.Forms.DockStyle.Right; + this.button4.Location = new System.Drawing.Point(447, 5); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(75, 38); + this.button4.TabIndex = 2; + this.button4.Text = "Delete"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // label5 + // + this.label5.Dock = System.Windows.Forms.DockStyle.Left; + this.label5.Location = new System.Drawing.Point(0, 5); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(137, 38); + this.label5.TabIndex = 0; + this.label5.Text = "DATE"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel4 + // + this.panel4.Controls.Add(this.tbQty); + this.panel4.Controls.Add(this.button3); + this.panel4.Controls.Add(this.label4); + this.panel4.Dock = System.Windows.Forms.DockStyle.Top; + this.panel4.Location = new System.Drawing.Point(0, 85); + this.panel4.Name = "panel4"; + this.panel4.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel4.Size = new System.Drawing.Size(522, 43); + this.panel4.TabIndex = 1; + // + // tbQty + // + this.tbQty.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbQty.Location = new System.Drawing.Point(137, 5); + this.tbQty.Name = "tbQty"; + this.tbQty.Size = new System.Drawing.Size(310, 30); + this.tbQty.TabIndex = 1; + this.tbQty.Click += new System.EventHandler(this.tbSID_Click); + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Right; + this.button3.Location = new System.Drawing.Point(447, 5); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(75, 38); + this.button3.TabIndex = 2; + this.button3.Text = "Delete"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // label4 + // + this.label4.Dock = System.Windows.Forms.DockStyle.Left; + this.label4.Location = new System.Drawing.Point(0, 5); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(137, 38); + this.label4.TabIndex = 0; + this.label4.Text = "QTY"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel3 + // + this.panel3.Controls.Add(this.tbVLot); + this.panel3.Controls.Add(this.button2); + this.panel3.Controls.Add(this.label3); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 42); + this.panel3.Name = "panel3"; + this.panel3.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel3.Size = new System.Drawing.Size(522, 43); + this.panel3.TabIndex = 0; + // + // tbVLot + // + this.tbVLot.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbVLot.Location = new System.Drawing.Point(137, 5); + this.tbVLot.Name = "tbVLot"; + this.tbVLot.Size = new System.Drawing.Size(310, 30); + this.tbVLot.TabIndex = 1; + this.tbVLot.Click += new System.EventHandler(this.tbSID_Click); + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Right; + this.button2.Location = new System.Drawing.Point(447, 5); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 38); + this.button2.TabIndex = 2; + this.button2.Text = "Delete"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Left; + this.label3.Location = new System.Drawing.Point(0, 5); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(137, 38); + this.label3.TabIndex = 0; + this.label3.Text = "VLOT"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.Controls.Add(this.tbSID); + this.panel2.Controls.Add(this.button1); + this.panel2.Controls.Add(this.label2); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Padding = new System.Windows.Forms.Padding(0, 5, 0, 0); + this.panel2.Size = new System.Drawing.Size(522, 42); + this.panel2.TabIndex = 0; + // + // tbSID + // + this.tbSID.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbSID.Location = new System.Drawing.Point(137, 5); + this.tbSID.Name = "tbSID"; + this.tbSID.Size = new System.Drawing.Size(310, 30); + this.tbSID.TabIndex = 1; + this.tbSID.Click += new System.EventHandler(this.tbSID_Click); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.Location = new System.Drawing.Point(447, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 37); + this.button1.TabIndex = 2; + this.button1.Text = "Delete"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Left; + this.label2.Location = new System.Drawing.Point(0, 5); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(137, 37); + this.label2.TabIndex = 0; + this.label2.Text = "SID"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.tbBarcodeInput); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Location = new System.Drawing.Point(10, 385); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(10); + this.groupBox2.Size = new System.Drawing.Size(522, 81); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Barcode input field (move cursor and enter)"; + // + // tbBarcodeInput + // + this.tbBarcodeInput.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbBarcodeInput.Location = new System.Drawing.Point(10, 33); + this.tbBarcodeInput.Name = "tbBarcodeInput"; + this.tbBarcodeInput.Size = new System.Drawing.Size(502, 30); + this.tbBarcodeInput.TabIndex = 0; + this.tbBarcodeInput.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbBarcodeInput_KeyDown); + // + // fManualPrint + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(542, 560); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.btPrint); + this.Controls.Add(this.groupBox1); + this.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fManualPrint"; + this.Padding = new System.Windows.Forms.Padding(10); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Manual Print"; + this.Load += new System.EventHandler(this.fManualPrint_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudCnt)).EndInit(); + this.panel1.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); + this.panel5.ResumeLayout(false); + this.panel5.PerformLayout(); + this.panel4.ResumeLayout(false); + this.panel4.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.RadioButton radLeft; + private System.Windows.Forms.Button btPrint; + private System.Windows.Forms.RadioButton radRight; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.NumericUpDown nudCnt; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TextBox tbSID; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.TextBox tbPN; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.TextBox tbSPY; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.TextBox tbRID; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.TextBox tbDate; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.TextBox tbQty; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.TextBox tbVLot; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox chkDelinfo; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox tbBarcodeInput; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fManualPrint.cs b/Handler/Project/Dialog/fManualPrint.cs new file mode 100644 index 0000000..3c85ed4 --- /dev/null +++ b/Handler/Project/Dialog/fManualPrint.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; + +namespace Project.Dialog +{ + public partial class fManualPrint : Form + { + bool ReprintMode = false; + public fManualPrint() + { + InitializeComponent(); + this.FormClosed += FManualPrint_FormClosed; + } + public fManualPrint(string sid, string lot, string qty, string mfg, string rid, string spy, string pn) + { + InitializeComponent(); + this.FormClosed += FManualPrint_FormClosed; + this.tbSID.Text = sid; + this.tbVLot.Text = lot; + this.tbQty.Text = qty; + this.tbDate.Text = mfg; + this.tbRID.Text = rid; + this.tbSPY.Text = spy; + this.tbPN.Text = pn; + chkDelinfo.Enabled = false; + chkDelinfo.Checked = false; + tbBarcodeInput.Enabled = false; + this.ReprintMode = true; + } + + private void fManualPrint_Load(object sender, EventArgs e) + { + var lockvalue = true; + PUB.iLock[(int)eAxis.PZ_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.Z_THETA].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PX_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + + PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + + if (ReprintMode) button1.Focus(); + else tbBarcodeInput.Focus(); + } + + private void FManualPrint_FormClosed(object sender, FormClosedEventArgs e) + { + //PUB.LockPKT.set((int)eILockPKX.MPrint, false, "COMMINTERLOCK"); + var lockvalue = false; + PUB.iLock[(int)eAxis.PZ_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.Z_THETA].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PX_PICK].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + + PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.MPrint, lockvalue, "COMMINTERLOCK"); + } + + private void btPrint_Click(object sender, EventArgs e) + { + //프린트해야한다 + string zpl = ""; + string qrdata = ""; + + var Printer = radLeft.Checked ? PUB.PrinterL : PUB.PrinterR; + var sid = tbSID.Text.Trim(); + var rid = tbRID.Text.Trim(); + var lot = tbVLot.Text.Trim(); + var mfg = tbDate.Text.Trim(); + var qty = tbQty.Text.Trim(); + var spy = tbSPY.Text.Trim(); + var pan = tbPN.Text.Trim(); + + if (int.TryParse(qty, out int vqty) == false) + { + UTIL.MsgE("Please enter quantity as a number"); + tbQty.SelectAll(); + tbQty.Focus(); + return; + } + + zpl = Printer.makeZPL_210908(new Class.Reel + { + SID = sid, + venderLot = lot, + venderName = spy, + qty = vqty, + id = rid, + mfg = mfg, + PartNo = pan, + }, SETTING.Data.DrawOutbox, out qrdata); + + var cnt = (int)nudCnt.Value; + for (int i = 0; i < cnt; i++) + { + var prn = Printer.Print(zpl); + if (prn.result == false) + { + //인쇄실패시 처리하지 않음 + PUB.log.AddE(prn.errmessage); + UTIL.MsgE("Cannot proceed further due to printing failure"); + break; + } + else + { + if (i == 0) //첫장만 로깅 + PUB.log.Add("User print completed" + string.Join("|", new string[] { sid, lot, spy, qty, rid, mfg, pan })); + } + System.Threading.Thread.Sleep(100); + } + + if (ReprintMode) DialogResult = DialogResult.OK; + else + { + //자료를 삭제해야한다 + if (chkDelinfo.Checked) + { + ClearData(tbSID, tbVLot, tbQty, tbDate, tbRID, tbSPY, tbPN); + tbSID.Focus(); + } + + } + + } + void ClearData(params TextBox[] tbs) + { + foreach (var tb in tbs) + { + tb.Text = ""; + tb.Focus(); + } + + } + private void button1_Click(object sender, EventArgs e) + { + //sid + ClearData(tbSID); + } + + + private void button2_Click(object sender, EventArgs e) + { + //vlot + ClearData(tbVLot); + } + + private void button3_Click(object sender, EventArgs e) + { + //qty + ClearData(tbQty); + } + + + private void button4_Click(object sender, EventArgs e) + { + //date + ClearData(tbDate); + } + + private void button5_Click(object sender, EventArgs e) + { + //rid + ClearData(tbRID); + } + + private void button6_Click(object sender, EventArgs e) + { + //spy + ClearData(tbSPY); + } + + private void button7_Click(object sender, EventArgs e) + { + //pn + ClearData(tbPN); + } + + private void tbSID_Click(object sender, EventArgs e) + { + var tb = sender as TextBox; + var rlt = AR.UTIL.InputBox("Please enter a value", tb.Text, AR.UTIL.eInputbox.TouchFullSingleLine); + if (rlt.Item1) tb.Text = rlt.Item2; + } + + private void button8_Click(object sender, EventArgs e) + { + tbSPY.Text = "N/A"; + } + + private void button9_Click(object sender, EventArgs e) + { + tbPN.Text = "N/A"; + } + + private void tbBarcodeInput_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + var buf = tbBarcodeInput.Text.Trim().Split(';'); + if (buf.Length != 7) + { + UTIL.MsgE("Barcode data does not contain 7 elements"); + tbBarcodeInput.SelectAll(); + return; + } + if (int.TryParse(buf[3], out var code) == false) + { + UTIL.MsgE("The 4th data (quantity) is not a number\nOnly Amkor STD barcodes are allowed"); + return; + } + tbSID.Text = buf[0]; + tbVLot.Text = buf[1]; + tbSPY.Text = buf[2]; + tbQty.Text = buf[3]; + tbRID.Text = buf[4]; + tbDate.Text = buf[5]; + tbPN.Text = buf[6]; + tbBarcodeInput.SelectAll(); + tbBarcodeInput.Focus(); + } + } + } +} diff --git a/Handler/Project/Dialog/fManualPrint.resx b/Handler/Project/Dialog/fManualPrint.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fManualPrint.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fManualPrint0.Designer.cs b/Handler/Project/Dialog/fManualPrint0.Designer.cs new file mode 100644 index 0000000..63632bd --- /dev/null +++ b/Handler/Project/Dialog/fManualPrint0.Designer.cs @@ -0,0 +1,283 @@ +namespace Project.Dialog +{ + partial class fManualPrint0 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btOK = new System.Windows.Forms.Button(); + this.tbSid = new System.Windows.Forms.TextBox(); + this.lbSID = new System.Windows.Forms.Label(); + this.tbQty = new System.Windows.Forms.TextBox(); + this.lbQty = new System.Windows.Forms.Label(); + this.tbPartNo = new System.Windows.Forms.TextBox(); + this.lbPart = new System.Windows.Forms.Label(); + this.tbMFGDate = new System.Windows.Forms.TextBox(); + this.lbMFG = new System.Windows.Forms.Label(); + this.tbVName = new System.Windows.Forms.TextBox(); + this.lbManu = new System.Windows.Forms.Label(); + this.tbVLot = new System.Windows.Forms.TextBox(); + this.lbLot = new System.Windows.Forms.Label(); + this.tbRid = new System.Windows.Forms.TextBox(); + this.lbRID = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btOK + // + this.btOK.Dock = System.Windows.Forms.DockStyle.Bottom; + this.btOK.Location = new System.Drawing.Point(0, 423); + this.btOK.Margin = new System.Windows.Forms.Padding(8, 13, 8, 13); + this.btOK.Name = "btOK"; + this.btOK.Size = new System.Drawing.Size(565, 50); + this.btOK.TabIndex = 18; + this.btOK.Text = "OK"; + this.btOK.UseVisualStyleBackColor = true; + this.btOK.Click += new System.EventHandler(this.btOK_Click); + // + // tbSid + // + this.tbSid.BackColor = System.Drawing.Color.Gold; + this.tbSid.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbSid.Location = new System.Drawing.Point(181, 371); + this.tbSid.Margin = new System.Windows.Forms.Padding(7); + this.tbSid.Name = "tbSid"; + this.tbSid.Size = new System.Drawing.Size(376, 39); + this.tbSid.TabIndex = 32; + this.tbSid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbSID + // + this.lbSID.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbSID.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbSID.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbSID.Location = new System.Drawing.Point(9, 371); + this.lbSID.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbSID.Name = "lbSID"; + this.lbSID.Size = new System.Drawing.Size(165, 39); + this.lbSID.TabIndex = 31; + this.lbSID.Text = "SID"; + this.lbSID.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbQty + // + this.tbQty.BackColor = System.Drawing.Color.Gold; + this.tbQty.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbQty.Location = new System.Drawing.Point(181, 311); + this.tbQty.Margin = new System.Windows.Forms.Padding(7); + this.tbQty.Name = "tbQty"; + this.tbQty.Size = new System.Drawing.Size(376, 39); + this.tbQty.TabIndex = 30; + this.tbQty.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbQty + // + this.lbQty.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbQty.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbQty.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbQty.ForeColor = System.Drawing.Color.Blue; + this.lbQty.Location = new System.Drawing.Point(9, 311); + this.lbQty.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbQty.Name = "lbQty"; + this.lbQty.Size = new System.Drawing.Size(165, 39); + this.lbQty.TabIndex = 29; + this.lbQty.Text = "QTY"; + this.lbQty.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbPartNo + // + this.tbPartNo.BackColor = System.Drawing.Color.Gold; + this.tbPartNo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbPartNo.Location = new System.Drawing.Point(181, 250); + this.tbPartNo.Margin = new System.Windows.Forms.Padding(7); + this.tbPartNo.Name = "tbPartNo"; + this.tbPartNo.Size = new System.Drawing.Size(376, 39); + this.tbPartNo.TabIndex = 28; + this.tbPartNo.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbPart + // + this.lbPart.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbPart.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbPart.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbPart.Location = new System.Drawing.Point(9, 250); + this.lbPart.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbPart.Name = "lbPart"; + this.lbPart.Size = new System.Drawing.Size(165, 39); + this.lbPart.TabIndex = 27; + this.lbPart.Text = "PART NO"; + this.lbPart.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbMFGDate + // + this.tbMFGDate.BackColor = System.Drawing.Color.Gold; + this.tbMFGDate.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbMFGDate.Location = new System.Drawing.Point(181, 189); + this.tbMFGDate.Margin = new System.Windows.Forms.Padding(7); + this.tbMFGDate.Name = "tbMFGDate"; + this.tbMFGDate.Size = new System.Drawing.Size(376, 39); + this.tbMFGDate.TabIndex = 26; + this.tbMFGDate.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbMFG + // + this.lbMFG.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbMFG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbMFG.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbMFG.ForeColor = System.Drawing.Color.Blue; + this.lbMFG.Location = new System.Drawing.Point(9, 189); + this.lbMFG.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbMFG.Name = "lbMFG"; + this.lbMFG.Size = new System.Drawing.Size(165, 39); + this.lbMFG.TabIndex = 25; + this.lbMFG.Text = "MFG DATE"; + this.lbMFG.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbVName + // + this.tbVName.AcceptsReturn = true; + this.tbVName.BackColor = System.Drawing.Color.Gold; + this.tbVName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbVName.Location = new System.Drawing.Point(181, 129); + this.tbVName.Margin = new System.Windows.Forms.Padding(7); + this.tbVName.Name = "tbVName"; + this.tbVName.Size = new System.Drawing.Size(376, 39); + this.tbVName.TabIndex = 24; + this.tbVName.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbManu + // + this.lbManu.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbManu.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbManu.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbManu.Location = new System.Drawing.Point(9, 129); + this.lbManu.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbManu.Name = "lbManu"; + this.lbManu.Size = new System.Drawing.Size(165, 39); + this.lbManu.TabIndex = 23; + this.lbManu.Text = "VENDER NAME"; + this.lbManu.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbVLot + // + this.tbVLot.BackColor = System.Drawing.Color.Gold; + this.tbVLot.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbVLot.Location = new System.Drawing.Point(181, 68); + this.tbVLot.Margin = new System.Windows.Forms.Padding(7); + this.tbVLot.Name = "tbVLot"; + this.tbVLot.Size = new System.Drawing.Size(376, 39); + this.tbVLot.TabIndex = 22; + this.tbVLot.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbLot + // + this.lbLot.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbLot.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbLot.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbLot.ForeColor = System.Drawing.Color.Blue; + this.lbLot.Location = new System.Drawing.Point(9, 68); + this.lbLot.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbLot.Name = "lbLot"; + this.lbLot.Size = new System.Drawing.Size(165, 39); + this.lbLot.TabIndex = 21; + this.lbLot.Text = "VENDER LOT"; + this.lbLot.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbRid + // + this.tbRid.BackColor = System.Drawing.Color.Gold; + this.tbRid.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbRid.Location = new System.Drawing.Point(181, 11); + this.tbRid.Margin = new System.Windows.Forms.Padding(7); + this.tbRid.Name = "tbRid"; + this.tbRid.Size = new System.Drawing.Size(376, 39); + this.tbRid.TabIndex = 20; + this.tbRid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbRID + // + this.lbRID.BackColor = System.Drawing.Color.WhiteSmoke; + this.lbRID.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbRID.Font = new System.Drawing.Font("Tahoma", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbRID.ForeColor = System.Drawing.Color.Blue; + this.lbRID.Location = new System.Drawing.Point(9, 11); + this.lbRID.Margin = new System.Windows.Forms.Padding(7, 0, 7, 0); + this.lbRID.Name = "lbRID"; + this.lbRID.Size = new System.Drawing.Size(165, 39); + this.lbRID.TabIndex = 19; + this.lbRID.Text = "RID"; + this.lbRID.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // fManualPrint0 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(14F, 32F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(565, 473); + this.Controls.Add(this.tbSid); + this.Controls.Add(this.lbSID); + this.Controls.Add(this.tbQty); + this.Controls.Add(this.lbQty); + this.Controls.Add(this.tbPartNo); + this.Controls.Add(this.lbPart); + this.Controls.Add(this.tbMFGDate); + this.Controls.Add(this.lbMFG); + this.Controls.Add(this.tbVName); + this.Controls.Add(this.lbManu); + this.Controls.Add(this.tbVLot); + this.Controls.Add(this.lbLot); + this.Controls.Add(this.tbRid); + this.Controls.Add(this.lbRID); + this.Controls.Add(this.btOK); + this.Font = new System.Drawing.Font("맑은 고딕", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Margin = new System.Windows.Forms.Padding(6, 8, 6, 8); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fManualPrint0"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Make New Reel ID"; + this.Load += new System.EventHandler(this.fNewReelID_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Button btOK; + private System.Windows.Forms.TextBox tbSid; + private System.Windows.Forms.Label lbSID; + private System.Windows.Forms.TextBox tbQty; + private System.Windows.Forms.Label lbQty; + private System.Windows.Forms.TextBox tbPartNo; + private System.Windows.Forms.Label lbPart; + private System.Windows.Forms.TextBox tbMFGDate; + private System.Windows.Forms.Label lbMFG; + private System.Windows.Forms.TextBox tbVName; + private System.Windows.Forms.Label lbManu; + private System.Windows.Forms.TextBox tbVLot; + private System.Windows.Forms.Label lbLot; + private System.Windows.Forms.TextBox tbRid; + private System.Windows.Forms.Label lbRID; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fManualPrint0.cs b/Handler/Project/Dialog/fManualPrint0.cs new file mode 100644 index 0000000..374153b --- /dev/null +++ b/Handler/Project/Dialog/fManualPrint0.cs @@ -0,0 +1,115 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fManualPrint0 : Form + { + public Class.Reel reelinfo = null; + public string NewID { get; set; } + + [Flags] + public enum eOpt : byte + { + reelid = 1, + sid = 2, + vlot = 4, + vname = 8, + partno = 16, + qty = 32, + mfg = 64, + } + + public fManualPrint0() + { + InitializeComponent(); + SetControlStates(eOpt.reelid | eOpt.sid | eOpt.vlot | eOpt.vname | eOpt.partno | eOpt.qty | eOpt.mfg); + } + + /// + /// 사용하고자하는 컨트롤을 or 값으로 전달해주세요 + /// + /// + + public fManualPrint0(eOpt enabledOptions) + { + InitializeComponent(); + SetControlStates(enabledOptions); + } + + private void SetControlStates(eOpt enabledOptions) + { + tbRid.Enabled = enabledOptions.HasFlag(eOpt.reelid); + tbRid.BackColor = tbRid.Enabled ? Color.White : Color.LightGray; + + tbSid.Enabled = enabledOptions.HasFlag(eOpt.sid); + tbSid.BackColor = tbSid.Enabled ? Color.White : Color.LightGray; + + tbVLot.Enabled = enabledOptions.HasFlag(eOpt.vlot); + tbVLot.BackColor = tbVLot.Enabled ? Color.White : Color.LightGray; + + tbVName.Enabled = enabledOptions.HasFlag(eOpt.vname); + tbVName.BackColor = tbVName.Enabled ? Color.White : Color.LightGray; + + tbPartNo.Enabled = enabledOptions.HasFlag(eOpt.partno); + tbPartNo.BackColor = tbPartNo.Enabled ? Color.White : Color.LightGray; + + tbQty.Enabled = enabledOptions.HasFlag(eOpt.qty); + tbQty.BackColor = tbQty.Enabled ? Color.White : Color.LightGray; + + tbMFGDate.Enabled = enabledOptions.HasFlag(eOpt.mfg); + tbMFGDate.BackColor = tbMFGDate.Enabled ? Color.White : Color.LightGray; + } + private void fNewReelID_Load(object sender, EventArgs e) + { + if (PUB.Result != null && PUB.Result.ItemDataC != null) + { + var vdata = PUB.Result.ItemDataC.VisionData; + this.tbRid.Text = vdata.RID; + this.tbVLot.Text = vdata.VLOT; + this.tbVName.Text = vdata.VNAME; + this.tbPartNo.Text = vdata.PARTNO; + this.tbQty.Text = vdata.QTY; + this.tbSid.Text = vdata.SID; + this.tbMFGDate.Text = vdata.MFGDATE; + } + + } + + private void btOK_Click(object sender, EventArgs e) + { + + int qty = 0; + int.TryParse(tbQty.Text, out qty); + string rid, lot, manu, mfg, partnum, sid; + rid = lot = manu = mfg = sid = partnum = ""; + rid = tbRid.Text.Trim(); + sid = tbSid.Text.Trim(); + mfg = tbMFGDate.Text.Trim(); + partnum = tbPartNo.Text.Trim(); + lot = tbVLot.Text.Trim(); + manu = tbVName.Text.Trim(); + reelinfo = new Class.Reel + { + id = rid, + venderLot = lot, + venderName = manu, + mfg = mfg, + PartNo = partnum, + qty = qty, + SID = sid, + }; + DialogResult = DialogResult.OK; + + } + + } +} diff --git a/Handler/Project/Dialog/fManualPrint0.resx b/Handler/Project/Dialog/fManualPrint0.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fManualPrint0.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fMessageInput.Designer.cs b/Handler/Project/Dialog/fMessageInput.Designer.cs new file mode 100644 index 0000000..33f1729 --- /dev/null +++ b/Handler/Project/Dialog/fMessageInput.Designer.cs @@ -0,0 +1,77 @@ +namespace Project.Dialog +{ + partial class fMessageInput + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // richTextBox1 + // + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.richTextBox1.Font = new System.Drawing.Font("굴림", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.richTextBox1.Location = new System.Drawing.Point(0, 0); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(883, 475); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = "1111111"; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(0, 475); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(883, 100); + this.button1.TabIndex = 1; + this.button1.Text = "OK"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // fMessageInput + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(883, 575); + this.Controls.Add(this.richTextBox1); + this.Controls.Add(this.button1); + this.Name = "fMessageInput"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fMessageInput"; + this.Load += new System.EventHandler(this.fMessageInput_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fMessageInput.cs b/Handler/Project/Dialog/fMessageInput.cs new file mode 100644 index 0000000..13793c0 --- /dev/null +++ b/Handler/Project/Dialog/fMessageInput.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fMessageInput : Form + + { + public string value = string.Empty; + public fMessageInput(string msg) + { + InitializeComponent(); + this.richTextBox1.Text = msg; + this.value = msg; + } + + private void button1_Click(object sender, EventArgs e) + { + this.value = this.richTextBox1.Text.Trim(); + DialogResult = DialogResult.OK; + } + + private void fMessageInput_Load(object sender, EventArgs e) + { + this.richTextBox1.SelectAll(); + this.richTextBox1.Focus(); + } + } +} diff --git a/Handler/Project/Dialog/fMessageInput.resx b/Handler/Project/Dialog/fMessageInput.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fMessageInput.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fNewSID.Designer.cs b/Handler/Project/Dialog/fNewSID.Designer.cs new file mode 100644 index 0000000..b483b05 --- /dev/null +++ b/Handler/Project/Dialog/fNewSID.Designer.cs @@ -0,0 +1,134 @@ +namespace Project.Dialog +{ + partial class fNewSID + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.tbOldSid = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.tbNewSid = new System.Windows.Forms.TextBox(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(10, 138); + this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(694, 68); + this.button1.TabIndex = 4; + this.button1.Text = "OK"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // tbOldSid + // + this.tbOldSid.Location = new System.Drawing.Point(182, 17); + this.tbOldSid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.tbOldSid.Name = "tbOldSid"; + this.tbOldSid.ReadOnly = true; + this.tbOldSid.Size = new System.Drawing.Size(368, 43); + this.tbOldSid.TabIndex = 2; + this.tbOldSid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(55, 17); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(114, 37); + this.label3.TabIndex = 3; + this.label3.Text = "Old SID"; + // + // tb1 + // + this.tbNewSid.Location = new System.Drawing.Point(182, 71); + this.tbNewSid.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.tbNewSid.Name = "tb1"; + this.tbNewSid.Size = new System.Drawing.Size(368, 43); + this.tbNewSid.TabIndex = 6; + this.tbNewSid.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // linkLabel3 + // + this.linkLabel3.AutoSize = true; + this.linkLabel3.Location = new System.Drawing.Point(52, 71); + this.linkLabel3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(127, 37); + this.linkLabel3.TabIndex = 8; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "New SID"; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(557, 17); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(147, 97); + this.button2.TabIndex = 9; + this.button2.Text = "Find in conversion info"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // fNewSID + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(714, 216); + this.Controls.Add(this.button2); + this.Controls.Add(this.linkLabel3); + this.Controls.Add(this.tbNewSid); + this.Controls.Add(this.button1); + this.Controls.Add(this.label3); + this.Controls.Add(this.tbOldSid); + this.Font = new System.Drawing.Font("맑은 고딕", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fNewSID"; + this.Padding = new System.Windows.Forms.Padding(10); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Find New SID"; + this.Load += new System.EventHandler(this.fNewSID_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox tbOldSid; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tbNewSid; + private System.Windows.Forms.LinkLabel linkLabel3; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fNewSID.cs b/Handler/Project/Dialog/fNewSID.cs new file mode 100644 index 0000000..f42e3ef --- /dev/null +++ b/Handler/Project/Dialog/fNewSID.cs @@ -0,0 +1,104 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fNewSID : Form + { + public int FindSIDCount = -1; + public string NewSID { get; set; } + public fNewSID(string presid) + { + InitializeComponent(); + this.tbOldSid.Text = presid; + + } + + private void fNewSID_Load(object sender, EventArgs e) + { + //해당 sid 로 101,103,106 가능한 sid 목록을 표시한다 + var sid = tbOldSid.Text.Trim(); + var presid = this.tbOldSid.Text; + + var newsid = PUB.SIDCovert(presid, "fNewSID_Load", out bool converr); + if (converr == false) + { + tbNewSid.Text = newsid; + } + else + { + if (newsid.Contains('|')) + { + //multi sid list + var lst = new List(); + foreach (var SIDTo in newsid.Split('|')) + { + var msidto = presid + ";" + SIDTo; + lst.Add(msidto); + } + var f = new Dialog.fSelectSID(lst); + if (f.ShowDialog() == DialogResult.OK) + { + var v = f.Value.Split(';'); //0은 old .1=new + tbNewSid.Text = v[1].Trim(); + } + } + else + { + tbNewSid.Text = string.Empty; + } + } + + + } + + private void button1_Click(object sender, EventArgs e) + { + this.NewSID = tbNewSid.Text.Trim(); + + if (NewSID.isEmpty()) + { + UTIL.MsgE("SID value has not been entered (selected)"); + return; + } + + if (NewSID == tbOldSid.Text) + { + UTIL.MsgE($"The same SID value as the existing one was confirmed\n\n" + + $"Existing:{tbOldSid.Text}\n" + + $"New:{NewSID}"); + return; + } + + DialogResult = DialogResult.OK; + } + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbNewSid, "Input SID"); + } + + private void button2_Click(object sender, EventArgs e) + { + var old = this.tbOldSid.Text.Trim(); + var newsid = PUB.SIDCovert(old, "fNewSID_Button2Click", out bool err); + + if (err == false) + tbNewSid.Text = newsid; + else + { + tbNewSid.Text = string.Empty; + UTIL.MsgE(newsid); + } + + } + } +} diff --git a/Handler/Project/Dialog/fNewSID.resx b/Handler/Project/Dialog/fNewSID.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fNewSID.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fPickerMove.Designer.cs b/Handler/Project/Dialog/fPickerMove.Designer.cs new file mode 100644 index 0000000..f47baf5 --- /dev/null +++ b/Handler/Project/Dialog/fPickerMove.Designer.cs @@ -0,0 +1,423 @@ +namespace Project.Dialog +{ + partial class fPickerMove + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.button9 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); + this.button11 = new System.Windows.Forms.Button(); + this.button12 = new System.Windows.Forms.Button(); + this.button13 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.btl = new System.Windows.Forms.Button(); + this.btlw = new System.Windows.Forms.Button(); + this.btc = new System.Windows.Forms.Button(); + this.btrw = new System.Windows.Forms.Button(); + this.btr = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button14 = new System.Windows.Forms.Button(); + this.button15 = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 5; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.Controls.Add(this.button9, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.button10, 4, 2); + this.tableLayoutPanel1.Controls.Add(this.button11, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.button12, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.button13, 3, 2); + this.tableLayoutPanel1.Controls.Add(this.button1, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.button2, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.button3, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.button4, 3, 3); + this.tableLayoutPanel1.Controls.Add(this.button5, 4, 3); + this.tableLayoutPanel1.Controls.Add(this.btl, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.btlw, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.btc, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.btrw, 3, 1); + this.tableLayoutPanel1.Controls.Add(this.btr, 4, 1); + this.tableLayoutPanel1.Controls.Add(this.button6, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.button7, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.button8, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.button14, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.button15, 4, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 4; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00001F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(822, 561); + this.tableLayoutPanel1.TabIndex = 0; + // + // button9 + // + this.button9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button9.Dock = System.Windows.Forms.DockStyle.Fill; + this.button9.Font = new System.Drawing.Font("Consolas", 15F, System.Drawing.FontStyle.Bold); + this.button9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.button9.Location = new System.Drawing.Point(10, 290); + this.button9.Margin = new System.Windows.Forms.Padding(10); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(144, 120); + this.button9.TabIndex = 3; + this.button9.Text = "Vision Validation\r\nCancel(L)"; + this.button9.UseVisualStyleBackColor = false; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // button10 + // + this.button10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button10.Dock = System.Windows.Forms.DockStyle.Fill; + this.button10.Font = new System.Drawing.Font("Consolas", 15F, System.Drawing.FontStyle.Bold); + this.button10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.button10.Location = new System.Drawing.Point(666, 290); + this.button10.Margin = new System.Windows.Forms.Padding(10); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(146, 120); + this.button10.TabIndex = 4; + this.button10.Text = "Vision Validation\r\nCancel(R)"; + this.button10.UseVisualStyleBackColor = false; + this.button10.Click += new System.EventHandler(this.button10_Click); + // + // button11 + // + this.button11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button11.Dock = System.Windows.Forms.DockStyle.Fill; + this.button11.Font = new System.Drawing.Font("Consolas", 15F, System.Drawing.FontStyle.Bold); + this.button11.Location = new System.Drawing.Point(174, 290); + this.button11.Margin = new System.Windows.Forms.Padding(10); + this.button11.Name = "button11"; + this.button11.Size = new System.Drawing.Size(144, 120); + this.button11.TabIndex = 5; + this.button11.Text = "Print Management\r\nPosition(L)"; + this.button11.UseVisualStyleBackColor = false; + this.button11.Click += new System.EventHandler(this.button11_Click); + // + // button12 + // + this.button12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button12.Dock = System.Windows.Forms.DockStyle.Fill; + this.button12.Font = new System.Drawing.Font("Consolas", 15F, System.Drawing.FontStyle.Bold); + this.button12.Location = new System.Drawing.Point(338, 290); + this.button12.Margin = new System.Windows.Forms.Padding(10); + this.button12.Name = "button12"; + this.button12.Size = new System.Drawing.Size(144, 120); + this.button12.TabIndex = 5; + this.button12.Text = "Management Position\r\nReturn"; + this.button12.UseVisualStyleBackColor = false; + this.button12.Click += new System.EventHandler(this.button12_Click); + // + // button13 + // + this.button13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.button13.Dock = System.Windows.Forms.DockStyle.Fill; + this.button13.Font = new System.Drawing.Font("Consolas", 15F, System.Drawing.FontStyle.Bold); + this.button13.Location = new System.Drawing.Point(502, 290); + this.button13.Margin = new System.Windows.Forms.Padding(10); + this.button13.Name = "button13"; + this.button13.Size = new System.Drawing.Size(144, 120); + this.button13.TabIndex = 5; + this.button13.Text = "Print Management\r\nPosition(R)"; + this.button13.UseVisualStyleBackColor = false; + this.button13.Click += new System.EventHandler(this.button13_Click); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold); + this.button1.Location = new System.Drawing.Point(10, 430); + this.button1.Margin = new System.Windows.Forms.Padding(10); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(144, 121); + this.button1.TabIndex = 6; + this.button1.Text = "Z-HOME"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click_1); + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Fill; + this.button2.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold); + this.button2.Location = new System.Drawing.Point(174, 430); + this.button2.Margin = new System.Windows.Forms.Padding(10); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(144, 121); + this.button2.TabIndex = 6; + this.button2.Text = "PRINT\r\n(L)"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click_1); + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Fill; + this.button3.Enabled = false; + this.button3.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold); + this.button3.Location = new System.Drawing.Point(338, 430); + this.button3.Margin = new System.Windows.Forms.Padding(10); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(144, 121); + this.button3.TabIndex = 6; + this.button3.Text = "--"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click_1); + // + // button4 + // + this.button4.Dock = System.Windows.Forms.DockStyle.Fill; + this.button4.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold); + this.button4.Location = new System.Drawing.Point(502, 430); + this.button4.Margin = new System.Windows.Forms.Padding(10); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(144, 121); + this.button4.TabIndex = 6; + this.button4.Text = "PRINT\r\n(R)"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click_1); + // + // button5 + // + this.button5.Dock = System.Windows.Forms.DockStyle.Fill; + this.button5.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold); + this.button5.Location = new System.Drawing.Point(666, 430); + this.button5.Margin = new System.Windows.Forms.Padding(10); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(146, 121); + this.button5.TabIndex = 6; + this.button5.Text = "Z-ZERO"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click_1); + // + // btl + // + this.btl.Dock = System.Windows.Forms.DockStyle.Fill; + this.btl.Font = new System.Drawing.Font("맑은 고딕", 25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btl.Location = new System.Drawing.Point(10, 150); + this.btl.Margin = new System.Windows.Forms.Padding(10); + this.btl.Name = "btl"; + this.btl.Size = new System.Drawing.Size(144, 120); + this.btl.TabIndex = 0; + this.btl.Text = "Left"; + this.btl.UseVisualStyleBackColor = true; + this.btl.Click += new System.EventHandler(this.button3_Click); + // + // btlw + // + this.btlw.Dock = System.Windows.Forms.DockStyle.Fill; + this.btlw.Font = new System.Drawing.Font("맑은 고딕", 25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btlw.Location = new System.Drawing.Point(174, 150); + this.btlw.Margin = new System.Windows.Forms.Padding(10); + this.btlw.Name = "btlw"; + this.btlw.Size = new System.Drawing.Size(144, 120); + this.btlw.TabIndex = 0; + this.btlw.Text = "Wait"; + this.btlw.UseVisualStyleBackColor = true; + this.btlw.Click += new System.EventHandler(this.button1_Click); + // + // btc + // + this.btc.Dock = System.Windows.Forms.DockStyle.Fill; + this.btc.Font = new System.Drawing.Font("맑은 고딕", 25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btc.ForeColor = System.Drawing.Color.ForestGreen; + this.btc.Location = new System.Drawing.Point(338, 150); + this.btc.Margin = new System.Windows.Forms.Padding(10); + this.btc.Name = "btc"; + this.btc.Size = new System.Drawing.Size(144, 120); + this.btc.TabIndex = 0; + this.btc.Text = "Center"; + this.btc.UseVisualStyleBackColor = true; + this.btc.Click += new System.EventHandler(this.button2_Click); + // + // btrw + // + this.btrw.Dock = System.Windows.Forms.DockStyle.Fill; + this.btrw.Font = new System.Drawing.Font("맑은 고딕", 25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btrw.Location = new System.Drawing.Point(502, 150); + this.btrw.Margin = new System.Windows.Forms.Padding(10); + this.btrw.Name = "btrw"; + this.btrw.Size = new System.Drawing.Size(144, 120); + this.btrw.TabIndex = 0; + this.btrw.Text = "Wait"; + this.btrw.UseVisualStyleBackColor = true; + this.btrw.Click += new System.EventHandler(this.button4_Click); + // + // btr + // + this.btr.Dock = System.Windows.Forms.DockStyle.Fill; + this.btr.Font = new System.Drawing.Font("맑은 고딕", 25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btr.Location = new System.Drawing.Point(666, 150); + this.btr.Margin = new System.Windows.Forms.Padding(10); + this.btr.Name = "btr"; + this.btr.Size = new System.Drawing.Size(146, 120); + this.btr.TabIndex = 0; + this.btr.Text = "Right"; + this.btr.UseVisualStyleBackColor = true; + this.btr.Click += new System.EventHandler(this.button5_Click); + // + // button6 + // + this.button6.Dock = System.Windows.Forms.DockStyle.Fill; + this.button6.Font = new System.Drawing.Font("Consolas", 50F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(64))))); + this.button6.Location = new System.Drawing.Point(174, 10); + this.button6.Margin = new System.Windows.Forms.Padding(10); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(144, 120); + this.button6.TabIndex = 1; + this.button6.Text = "◀"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button6_Click); + this.button6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button6_MouseDown); + this.button6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.button6_MouseUp); + // + // button7 + // + this.button7.Dock = System.Windows.Forms.DockStyle.Fill; + this.button7.Font = new System.Drawing.Font("Consolas", 50F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(64))))); + this.button7.Location = new System.Drawing.Point(502, 10); + this.button7.Margin = new System.Windows.Forms.Padding(10); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(144, 120); + this.button7.TabIndex = 1; + this.button7.Text = "▶"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button7_Click); + this.button7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button6_MouseDown); + this.button7.MouseUp += new System.Windows.Forms.MouseEventHandler(this.button6_MouseUp); + // + // button8 + // + this.button8.Dock = System.Windows.Forms.DockStyle.Fill; + this.button8.Font = new System.Drawing.Font("Consolas", 45F, System.Drawing.FontStyle.Bold); + this.button8.ForeColor = System.Drawing.Color.Red; + this.button8.Location = new System.Drawing.Point(338, 10); + this.button8.Margin = new System.Windows.Forms.Padding(10); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(144, 120); + this.button8.TabIndex = 2; + this.button8.Text = "■"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button8_Click); + // + // button14 + // + this.button14.Dock = System.Windows.Forms.DockStyle.Fill; + this.button14.Font = new System.Drawing.Font("Consolas", 60F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button14.ForeColor = System.Drawing.Color.DarkMagenta; + this.button14.Location = new System.Drawing.Point(10, 10); + this.button14.Margin = new System.Windows.Forms.Padding(10); + this.button14.Name = "button14"; + this.button14.Size = new System.Drawing.Size(144, 120); + this.button14.TabIndex = 1; + this.button14.Text = "▲"; + this.button14.UseVisualStyleBackColor = true; + this.button14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button6_MouseDown); + this.button14.MouseUp += new System.Windows.Forms.MouseEventHandler(this.button6_MouseUp); + // + // button15 + // + this.button15.Dock = System.Windows.Forms.DockStyle.Fill; + this.button15.Font = new System.Drawing.Font("Consolas", 60F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button15.ForeColor = System.Drawing.Color.DarkMagenta; + this.button15.Location = new System.Drawing.Point(666, 10); + this.button15.Margin = new System.Windows.Forms.Padding(10); + this.button15.Name = "button15"; + this.button15.Size = new System.Drawing.Size(146, 120); + this.button15.TabIndex = 1; + this.button15.Text = "▼"; + this.button15.UseVisualStyleBackColor = true; + this.button15.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button6_MouseDown); + this.button15.MouseUp += new System.Windows.Forms.MouseEventHandler(this.button6_MouseUp); + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // fPickerMove + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(822, 561); + this.Controls.Add(this.tableLayoutPanel1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fPickerMove"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Picker(X) Movement and Management"; + this.Load += new System.EventHandler(this.fPickerMove_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button btlw; + private System.Windows.Forms.Button btc; + private System.Windows.Forms.Button btl; + private System.Windows.Forms.Button btrw; + private System.Windows.Forms.Button btr; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button button11; + private System.Windows.Forms.Button button12; + private System.Windows.Forms.Button button13; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button14; + private System.Windows.Forms.Button button15; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fPickerMove.cs b/Handler/Project/Dialog/fPickerMove.cs new file mode 100644 index 0000000..fec8fbd --- /dev/null +++ b/Handler/Project/Dialog/fPickerMove.cs @@ -0,0 +1,633 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.Common; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.Design; +using AR; +namespace Project.Dialog +{ + public partial class fPickerMove : Form + { + public fPickerMove() + { + InitializeComponent(); + this.FormClosing += FPickerMove_FormClosing; + } + private void fPickerMove_Load(object sender, EventArgs e) + { + PUB.flag.set(eVarBool.FG_MOVE_PICKER, true, "PICKERMOVE"); + timer1.Start(); + } + private void FPickerMove_FormClosing(object sender, FormClosingEventArgs e) + { + if (ManPosL) + { + UTIL.MsgE("Printer motion is in management position\nReturn to position and try again", true); + e.Cancel = true; + return; + } + if (ManPosR) + { + UTIL.MsgE("Printer motion is in management position\nReturn to position and try again", true); + e.Cancel = true; + return; + } + PUB.flag.set(eVarBool.FG_MOVE_PICKER, false, "PICKERMOVE"); + timer1.Stop(); + } + + Boolean CheckSafty() + { + if (DIO.isSaftyDoorF() == false) + { + UTIL.MsgE("Front door is open"); + return false; + } + + if (PUB.mot.HasHomeSetOff) + { + UTIL.MsgE("Motion home operation is not completed"); + return false; + } + return true; + } + + private void button3_Click(object sender, EventArgs e) + { + if (CheckSafty() == false) return; + + //Z-check + var z = MOT.GetPZPos(ePZLoc.READY); + var zpos = MOT.getPositionOffset(z); + if (zpos >= 0.5) + { + UTIL.MsgE("Raise the Z axis and try again"); + return; + } + + //왼쪽프린터 뭉치가 준비위치가 아니면 오류 + var m1 = MOT.GetLMPos(eLMLoc.READY); + if (MOT.getPositionMatch(m1) == false) + { + UTIL.MsgE("Printer attachment is not in ready position.\nCannot move as collision may occur"); + return; + } + + + //도어가 열려있다면 경고메세지를 표시한다. + if (DIO.isSaftyDoorF(2, true) == false) + { + if (UTIL.MsgQ("Door is open. Do you want to move the motion?") != DialogResult.Yes) return; + } + + + var p1 = MOT.GetPXPos(ePXLoc.PICKOFFL); + MOT.Move(eAxis.PX_PICK, p1.Position, 250, p1.Acc, false, false, false); + DialogResult = DialogResult.OK; + } + + private void button1_Click(object sender, EventArgs e) + { + if (CheckSafty() == false) return; + + //Z-check + var z = MOT.GetPZPos(ePZLoc.READY); + var zpos = MOT.getPositionOffset(z); + if (zpos >= 0.5) + { + UTIL.MsgE("Raise the Z axis and try again"); + return; + } + + //왼쪽프린터 뭉치가 준비위치가 아니면 오류 + var m1 = MOT.GetLMPos(eLMLoc.READY); + if (MOT.getPositionMatch(m1) == false) + { + UTIL.MsgE("Printer attachment is not in ready position.\nCannot move as collision may occur"); + return; + } + + //도어가 열려있다면 경고메세지를 표시한다. + if (DIO.isSaftyDoorF(2, true) == false) + { + if (UTIL.MsgQ("Door is open. Do you want to move the motion?") != DialogResult.Yes) return; + } + + var p1 = MOT.GetPXPos(ePXLoc.READYL); + MOT.Move(eAxis.PX_PICK, p1.Position, 250, p1.Acc, false, false, false); + DialogResult = DialogResult.OK; + } + + private void button2_Click(object sender, EventArgs e) + { + if (CheckSafty() == false) return; + + //Z-check + var z = MOT.GetPZPos(ePZLoc.READY); + var zpos = MOT.getPositionOffset(z); + if (zpos >= 0.5) + { + UTIL.MsgE("Raise the Z axis and try again"); + return; + } + + //도어가 열려있다면 경고메세지를 표시한다. + if (DIO.isSaftyDoorF(1, true) == false) + { + if (UTIL.MsgQ("Door is open. Do you want to move the motion?") != DialogResult.Yes) return; + } + + var p1 = MOT.GetPXPos(ePXLoc.PICKON); + MOT.Move(eAxis.PX_PICK, p1.Position, 250, p1.Acc, false, false, false); + DialogResult = DialogResult.OK; + } + + private void button4_Click(object sender, EventArgs e) + { + if (CheckSafty() == false) return; + + //Z-check + var z = MOT.GetPZPos(ePZLoc.READY); + var zpos = MOT.getPositionOffset(z); + if (zpos >= 0.5) + { + UTIL.MsgE("Raise the Z axis and try again"); + return; + } + + //오른쪽프린터 뭉치가 준비위치가 아니면 오류 + var m1 = MOT.GetRMPos(eRMLoc.READY); + if (MOT.getPositionMatch(m1) == false) + { + UTIL.MsgE("Printer attachment is not in ready position.\nCannot move as collision may occur"); + return; + } + //도어가 열려있다면 경고메세지를 표시한다. + if (DIO.isSaftyDoorF(0, true) == false) + { + if (UTIL.MsgQ("Door is open. Do you want to move the motion?") != DialogResult.Yes) return; + } + var p1 = MOT.GetPXPos(ePXLoc.READYR); + MOT.Move(eAxis.PX_PICK, p1.Position, 250, p1.Acc, false, false, false); + DialogResult = DialogResult.OK; + } + + private void button5_Click(object sender, EventArgs e) + { + if (CheckSafty() == false) return; + + //Z-check + var z = MOT.GetPZPos(ePZLoc.READY); + var zpos = MOT.getPositionOffset(z); + if (zpos >= 0.5) + { + UTIL.MsgE("Raise the Z axis and try again"); + return; + } + + //오른쪽프린터 뭉치가 준비위치가 아니면 오류 + var m1 = MOT.GetRMPos(eRMLoc.READY); + if (MOT.getPositionMatch(m1) == false) + { + UTIL.MsgE("Printer attachment is not in ready position.\nCannot move as collision may occur"); + return; + } + + //도어가 열려있다면 경고메세지를 표시한다. + if (DIO.isSaftyDoorF(0, true) == false) + { + if (UTIL.MsgQ("Door is open. Do you want to move the motion?") != DialogResult.Yes) return; + } + + var p1 = MOT.GetPXPos(ePXLoc.PICKOFFR); + MOT.Move(eAxis.PX_PICK, p1.Position, 250, p1.Acc, false, false, false); + DialogResult = DialogResult.OK; + } + + private void button8_Click(object sender, EventArgs e) + { + PUB.mot.MoveStop("pmove", (int)eAxis.PX_PICK); + } + + private void button6_Click(object sender, EventArgs e) + { + //jog left + } + + private void button7_Click(object sender, EventArgs e) + { + //jog right + } + + private void button6_MouseDown(object sender, MouseEventArgs e) + { + //조그시작 + + + var bt = sender as Button; + if (bt.Text.Equals("▼")) + PUB.mot.JOG((int)eAxis.PZ_PICK, arDev.MOT.MOTION_DIRECTION.Positive, AR.SETTING.Data.JOG_Speed, AR.SETTING.Data.JOG_Acc); + else if (bt.Text.Equals("▲")) + PUB.mot.JOG((int)eAxis.PZ_PICK, arDev.MOT.MOTION_DIRECTION.Negative, AR.SETTING.Data.JOG_Speed, AR.SETTING.Data.JOG_Acc); + else if (bt.Text.Equals("◀")) + PUB.mot.JOG((int)eAxis.PX_PICK, arDev.MOT.MOTION_DIRECTION.Negative, AR.SETTING.Data.JOG_Speed, AR.SETTING.Data.JOG_Acc); + else if (bt.Text.Equals("▶")) + PUB.mot.JOG((int)eAxis.PX_PICK, arDev.MOT.MOTION_DIRECTION.Positive, AR.SETTING.Data.JOG_Speed, AR.SETTING.Data.JOG_Acc); + } + + private void button6_MouseUp(object sender, MouseEventArgs e) + { + //마우스 놓으면 멈춤 + PUB.mot.MoveStop("pmove", (short)eAxis.PX_PICK); + PUB.mot.MoveStop("pmove", (short)eAxis.PZ_PICK); + } + + private void button9_Click(object sender, EventArgs e) + { + //왼쪽검증취소 + // if (PUB.flag.get(eVarBool.RDY_VISION0) == false) return; + var dlg = UTIL.MsgQ("Do you want to cancel LEFT-QR code verification?"); + if (dlg != DialogResult.Yes) return; + + PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, "CANCEL"); + PUB.flag.set(eVarBool.FG_PORTL_ITEMON, false, "CANCEL"); + //PUB.sm.seq.Clear(eSMStep.RUN_VISION0); + //PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_VS0); + PUB.log.Add(string.Format("LEFT-QR verification({0}) cancelled JGUID={1}", "L", PUB.Result.ItemDataL.guid)); + UpdateDatabase(eWorkPort.Left); + DialogResult = DialogResult.OK; + } + + private void button10_Click(object sender, EventArgs e) + { + //왼쪽검증취소 + //if (PUB.flag.get(eVarBool.RDY_VISION0) == false) return; + var dlg = UTIL.MsgQ("Do you want to cancel RIGHT-QR code verification?"); + if (dlg != DialogResult.Yes) return; + + PUB.flag.set(eVarBool.FG_PRC_VISIONR, false, "CANCEL"); + PUB.flag.set(eVarBool.FG_PORTR_ITEMON, false, "CANCEL"); + //PUB.sm.seq.Clear(eSMStep.RUN_VISION2); + //PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_VS2); + PUB.log.Add(string.Format("RIGHT-QR verification({0}) cancelled JGUID={1}", "R", PUB.Result.ItemDataR.guid)); + + UpdateDatabase(eWorkPort.Right); + DialogResult = DialogResult.OK; + } + + void UpdateDatabase(eWorkPort vidx) + { + var itemdata = vidx == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + + var sql = "select top 1 * from K4EE_Component_Reel_Result where JGUID = @jguid"; + var dr = DBHelper.Get(sql, new SqlParameter("jguid", itemdata.guid)).FirstOrDefault(); + if (dr == null) + { + var ermsg = string.Format("Cannot find the following guid, unable to change verification cancellation vidx={2},guid={0},sid={1}", itemdata.guid, itemdata.VisionData.SID, vidx); + PUB.AddDebugLog(ermsg, true); + PUB.log.AddE(ermsg); + } + else + { + DBHelper.UpdateWhere("K4EE_Component_Reel_Result", + new Dictionary + { + { "ANGLE", itemdata.VisionData.ApplyAngle }, + { "PRNVALID", 0 }, + { "REMARK", "Verification cancelled" } + }, + new Dictionary + { + { "idx", dr.idx } + }); + + //dr.ANGLE = itemdata.VisionData.ApplyAngle; //210331 - 도중에 사용자 angle 이 있다면 그것이 적용되었음 + //dr.PRNVALID = false; + //dr.REMARK = "검증취소"; + //db.SaveChanges(); + } + + } + + private void button11_Click(object sender, EventArgs e) + { + //관리위치L + MoveMangePos(0); + } + + private void button13_Click(object sender, EventArgs e) + { + //관리위치 + MoveMangePos(2); + } + + Boolean ManPosL = false; + Boolean ManPosR = false; + + void MoveMangePos(int vidx) + { + if (PUB.sm.Step != eSMStep.IDLE) + { + UTIL.MsgE("Available only in standby state"); + return; + } + + + var Xpos = DIO.GetIOInput(eDIName.PICKER_SAFE);// MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKON), 1); + if (Xpos == false) + { + UTIL.MsgE("Available only when picker is in center position"); + return; + } + + + + Task.Run(new Action(() => + { + //Z축을 Ready 위치로 이동한다. + DateTime dt; + if (vidx == 0) + { + //printer picker cylinder check + while(DIO.GetIOInput(eDIName.L_CYLUP)==false) + { + var dorlt = DIO.checkDigitalO(eDOName.L_CYLDN, new TimeSpan(1), false); + if (dorlt == eNormalResult.False) + { + System.Threading.Thread.Sleep(100); + } + else if( dorlt == eNormalResult.Error) + { + PUB.log.AddE("l_cylup check error"); + return; + } + } + + var zPos = MOT.GetLZPos(eLZLoc.READY).Clone(); + zPos.Speed = 100; + MOT.Move(zPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(zPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + + var mPos = MOT.GetLMPos(eLMLoc.PRINTL07).Clone(); + mPos.Speed = 100; + MOT.Move(mPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(mPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + + var zPos2 = MOT.GetLZPos(eLZLoc.PICKOFF); + var tPos = (zPos2.Position / 2f); + MOT.Move(eAxis.PL_UPDN, tPos, 100, zPos.Acc); + ManPosL = true; + } + else + { + while (DIO.GetIOInput(eDIName.R_CYLUP) == false) + { + var dorlt = DIO.checkDigitalO(eDOName.R_CYLDN, new TimeSpan(1), false); + if (dorlt == eNormalResult.False) + { + System.Threading.Thread.Sleep(100); + } + else if (dorlt == eNormalResult.Error) + { + PUB.log.AddE("r_cylup check error"); + return; + } + } + + var zPos = MOT.GetRZPos(eRZLoc.READY).Clone(); + zPos.Speed = 100; + MOT.Move(zPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(zPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + var mPos = MOT.GetRMPos(eRMLoc.PRINTL07).Clone(); + mPos.Speed = 100; + MOT.Move(mPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(mPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + var zPos2 = MOT.GetRZPos(eRZLoc.PICKOFF); + var tPos = (zPos2.Position / 2f); + MOT.Move(eAxis.PR_UPDN, tPos, 100, zPos.Acc); + ManPosR = true; + } + + })); + } + + private void button12_Click(object sender, EventArgs e) + { + var Xpos = DIO.GetIOInput(eDIName.PICKER_SAFE); + if (Xpos == false) + { + UTIL.MsgE("Available only when picker is in center position"); + return; + } + + //위치복귀 + PosRecover(0); + PosRecover(2); + } + + void PosRecover(int vidx) + { + Task.Run(new Action(() => + { + //Z축을 Ready 위치로 이동한다. + DateTime dt; + if (vidx == 0) + { + while (DIO.GetIOInput(eDIName.L_CYLUP) == false) + { + var dorlt = DIO.checkDigitalO(eDOName.L_CYLDN, new TimeSpan(1), false); + if (dorlt == eNormalResult.False) + { + System.Threading.Thread.Sleep(100); + } + else if (dorlt == eNormalResult.Error) + { + PUB.log.AddE("l_cylup check error"); + return; + } + } + + var zPos = MOT.GetLZPos(eLZLoc.READY).Clone(); + zPos.Speed = 100; + MOT.Move(zPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(zPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + var mPos = MOT.GetLMPos(eLMLoc.READY).Clone(); + mPos.Speed = 100; + MOT.Move(mPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(mPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + ManPosL = false; + } + else + { + while (DIO.GetIOInput(eDIName.R_CYLUP) == false) + { + var dorlt = DIO.checkDigitalO(eDOName.R_CYLDN, new TimeSpan(1), false); + if (dorlt == eNormalResult.False) + { + System.Threading.Thread.Sleep(100); + } + else if (dorlt == eNormalResult.Error) + { + PUB.log.AddE("R_cylup check error"); + return; + } + } + + var zPos = MOT.GetRZPos(eRZLoc.READY).Clone(); + zPos.Speed = 100; + MOT.Move(zPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(zPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + var mPos = MOT.GetRMPos(eRMLoc.READY).Clone(); + mPos.Speed = 100; + MOT.Move(mPos); + dt = DateTime.Now; + while (MOT.getPositionMatch(zPos) == false) + { + var ts = DateTime.Now - dt; + if (ts.TotalSeconds > 30) break; + System.Threading.Thread.Sleep(10); + } + + ManPosR = false; + } + + })); + } + + private void timer1_Tick(object sender, EventArgs e) + { + + + + + + //X축 피커는 Z축이 원점,limit 에 걸려있거나 home 위치 근처라면 가능한다 + if (PUB.mot.IsHomeSet((int)eAxis.PZ_PICK) == false) + { + //Z축 홈이 안잡힌 상태에는 원점 센서 혹은 리밋이 걸린경우 이동가능한다 + if (PUB.mot.IsOrg((int)eAxis.PZ_PICK) || PUB.mot.IsLimitN((int)eAxis.PZ_PICK)) + button6.Enabled = true; + else + button6.Enabled = false; + } + else + { + //Z축 홈이 잡혀있다면 현재 위치는 ready 위에 있어야 한다. + var PosZ = MOT.GetPZPos(ePZLoc.READY); + var OffZ = MOT.getPositionOffset(PosZ); + button6.Enabled = OffZ < 1; + } + button7.Enabled = button6.Enabled; + + AR.VAR.BOOL[eVarBool.Enable_PickerMoveX] = button6.Enabled; + + var doorsafef = DIO.isSaftyDoorF(); + var allsafe = PUB.mot.HasHomeSetOff == false && doorsafef == true; + this.button11.Enabled = allsafe; + this.button12.Enabled = allsafe; + this.button13.Enabled = allsafe; + + //모션홈이 안잡혀있다면 이동 기능은 OFf한다 + btl.Enabled = allsafe; + btlw.Enabled = allsafe; + btc.Enabled = allsafe; + btrw.Enabled = allsafe; + btr.Enabled = allsafe; + + this.button8.BackColor = DIO.GetIOInput(eDIName.PICKER_SAFE) ? Color.Lime : Color.Tomato; + + + } + + private void button2_Click_1(object sender, EventArgs e) + { + PUB.PrinterL.TestPrint(AR.SETTING.Data.DrawOutbox, "", ""); + PUB.log.Add("Temporary print L:" + PUB.PrinterL.LastPrintZPL); + } + + private void button4_Click_1(object sender, EventArgs e) + { + PUB.PrinterR.TestPrint(AR.SETTING.Data.DrawOutbox, "", ""); + PUB.log.Add("Temporary print R:" + PUB.PrinterR.LastPrintZPL); + } + + private void button5_Click_1(object sender, EventArgs e) + { + if (PUB.mot.IsHomeSet((int)eAxis.PZ_PICK) == false) + { + UTIL.MsgE("Z home operation is not completed. Please perform HOME first"); + return; + } + if (UTIL.MsgQ("Do you want to move picker Z-axis to coordinate:0?") != DialogResult.Yes) return; + MOT.Move(eAxis.PZ_PICK, 0, 500, 1000, false, false, false); + } + + private void button1_Click_1(object sender, EventArgs e) + { + var dlg = UTIL.MsgQ("Do you want to proceed with picker Z-axis home search?"); + if (dlg != DialogResult.Yes) return; + + MOT.Home("Management", eAxis.PZ_PICK, false); + } + + private void button3_Click_1(object sender, EventArgs e) + { + + } + } +} diff --git a/Handler/Project/Dialog/fPickerMove.resx b/Handler/Project/Dialog/fPickerMove.resx new file mode 100644 index 0000000..bb20d54 --- /dev/null +++ b/Handler/Project/Dialog/fPickerMove.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 17, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSIDInformation.resx b/Handler/Project/Dialog/fSIDInformation.resx new file mode 100644 index 0000000..42cf9d4 --- /dev/null +++ b/Handler/Project/Dialog/fSIDInformation.resx @@ -0,0 +1,380 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 393, 17 + + + 17, 17 + + + 527, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo + dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 117, 17 + + + 324, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAExJREFUOE9joAr49u3bf1IxVCsEgAWC58Dxh/cf4RhZDETHTNiHaQgpBoAwzBCo + dtINAGGiDUDGyGpoawAxeNSAQWkAORiqnRLAwAAA9EMMU8Daa3MAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 185, 17 + + + 251, 17 + + + 461, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSIDQty.Designer.cs b/Handler/Project/Dialog/fSIDQty.Designer.cs new file mode 100644 index 0000000..22261ed --- /dev/null +++ b/Handler/Project/Dialog/fSIDQty.Designer.cs @@ -0,0 +1,224 @@ +namespace Project.Dialog +{ + partial class fSIDQty + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.label5 = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(3); + this.panel1.Size = new System.Drawing.Size(327, 40); + this.panel1.TabIndex = 0; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Location = new System.Drawing.Point(3, 3); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(75, 34); + this.label1.TabIndex = 0; + this.label1.Text = "DATE"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label1.Click += new System.EventHandler(this.label1_Click); + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.Location = new System.Drawing.Point(78, 3); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(246, 34); + this.label2.TabIndex = 1; + this.label2.Text = "label2"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label2.Click += new System.EventHandler(this.label2_Click); + // + // panel2 + // + this.panel2.Controls.Add(this.label3); + this.panel2.Controls.Add(this.label5); + this.panel2.Controls.Add(this.label4); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(0, 40); + this.panel2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.panel2.Name = "panel2"; + this.panel2.Padding = new System.Windows.Forms.Padding(3); + this.panel2.Size = new System.Drawing.Size(327, 40); + this.panel2.TabIndex = 1; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.Location = new System.Drawing.Point(78, 3); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(171, 34); + this.label3.TabIndex = 1; + this.label3.Text = "label3"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.Dock = System.Windows.Forms.DockStyle.Left; + this.label4.Location = new System.Drawing.Point(3, 3); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(75, 34); + this.label4.TabIndex = 0; + this.label4.Text = "NO"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.listView1.ContextMenuStrip = this.contextMenuStrip1; + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(0, 80); + this.listView1.MultiSelect = false; + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(327, 326); + this.listView1.TabIndex = 2; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "SID"; + this.columnHeader1.Width = 160; + // + // columnHeader2 + // + this.columnHeader2.Text = "KPC"; + this.columnHeader2.Width = 80; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.deleteToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(109, 26); + // + // deleteToolStripMenuItem + // + this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; + this.deleteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.deleteToolStripMenuItem.Text = "Delete"; + this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); + // + // columnHeader3 + // + this.columnHeader3.Text = "Rev"; + this.columnHeader3.Width = 80; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.label5.Dock = System.Windows.Forms.DockStyle.Right; + this.label5.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label5.ForeColor = System.Drawing.Color.White; + this.label5.Location = new System.Drawing.Point(249, 3); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(75, 34); + this.label5.TabIndex = 2; + this.label5.Text = "KPC"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // fSIDQty + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(327, 406); + this.Controls.Add(this.listView1); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSIDQty"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "SID QTY"; + this.TopMost = true; + this.Load += new System.EventHandler(this.fSIDQty_Load); + this.panel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.Label label5; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSIDQty.cs b/Handler/Project/Dialog/fSIDQty.cs new file mode 100644 index 0000000..cb884a0 --- /dev/null +++ b/Handler/Project/Dialog/fSIDQty.cs @@ -0,0 +1,72 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSIDQty : Form + { + public fSIDQty(string JobSeqDate, string JobSeqNo) + { + InitializeComponent(); + var SIDHistoryFiles = PUB.dbmSidHistory.Getfiles(JobSeqDate, JobSeqNo); + label2.Text = JobSeqDate; + label3.Text = JobSeqNo; + label5.Text = "--"; + this.listView1.Items.Clear(); + + if (SIDHistoryFiles != null) + foreach (var file in SIDHistoryFiles) + { + var DT = PUB.dbmSidHistory.GetDatas(new System.IO.FileInfo[] { file }); + var dr = DT.FirstOrDefault(); + label5.Text = dr.rev.ToString(); + var kpc = DT.Sum(t => t.qty) / 1000; + var lv = this.listView1.Items.Add(dr.sid); + lv.SubItems.Add(kpc.ToString()); + lv.SubItems.Add(dr.rev.ToString()); + lv.Tag = file.FullName; + if (dr.rev > 0 && kpc > dr.rev) lv.ForeColor = Color.Red; + } + + } + + private void fSIDQty_Load(object sender, EventArgs e) + { + this.KeyDown += FSIDQty_KeyDown; + } + + private void FSIDQty_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) this.Close(); + } + + private void label1_Click(object sender, EventArgs e) + { + + } + + private void label2_Click(object sender, EventArgs e) + { + + } + + private void deleteToolStripMenuItem_Click(object sender, EventArgs e) + { + if (this.listView1.FocusedItem == null) return; + var file = this.listView1.FocusedItem.Tag.ToString(); + var dlg = UTIL.MsgQ(string.Format("Do you want to delete the following file?\n{0}", file)); + if (dlg != DialogResult.Yes) return; + System.IO.File.Delete(file); + this.listView1.Items.Remove(this.listView1.FocusedItem); + + } + } +} diff --git a/Handler/Project/Dialog/fSIDQty.resx b/Handler/Project/Dialog/fSIDQty.resx new file mode 100644 index 0000000..ad53752 --- /dev/null +++ b/Handler/Project/Dialog/fSIDQty.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSavePosition.Designer.cs b/Handler/Project/Dialog/fSavePosition.Designer.cs new file mode 100644 index 0000000..e972cc7 --- /dev/null +++ b/Handler/Project/Dialog/fSavePosition.Designer.cs @@ -0,0 +1,116 @@ +namespace Project.Dialog +{ + partial class fSavePosition + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listView1 + // + this.listView1.CheckBoxes = true; + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3, + this.columnHeader4}); + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.Location = new System.Drawing.Point(0, 0); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(815, 431); + this.listView1.TabIndex = 0; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Axis"; + this.columnHeader1.Width = 150; + // + // columnHeader2 + // + this.columnHeader2.Text = "Position"; + this.columnHeader2.Width = 220; + // + // columnHeader3 + // + this.columnHeader3.Text = "Before Change"; + this.columnHeader3.Width = 200; + // + // columnHeader4 + // + this.columnHeader4.Text = "After Change"; + this.columnHeader4.Width = 200; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(0, 375); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(815, 56); + this.button1.TabIndex = 1; + this.button1.Text = "OK"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // fSavePosition + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(815, 431); + this.Controls.Add(this.button1); + this.Controls.Add(this.listView1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSavePosition"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fSavePosition"; + this.Load += new System.EventHandler(this.fSavePosition_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSavePosition.cs b/Handler/Project/Dialog/fSavePosition.cs new file mode 100644 index 0000000..0ec608f --- /dev/null +++ b/Handler/Project/Dialog/fSavePosition.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; + +namespace Project.Dialog +{ + public partial class fSavePosition : Form + { + public fSavePosition(Queue> list) + { + InitializeComponent(); + + listView1.Items.Clear(); + foreach (var item in list) + { + var lv = this.listView1.Items.Add(item.Item2.ToString()); + lv.SubItems.Add(item.Item3); + lv.SubItems.Add(item.Item4.ToString()); + lv.SubItems.Add(item.Item5.ToString()); + lv.Tag = item; + if (item.Item2.ToString().StartsWith("Z")) + { + lv.Checked = false; //z축은 기본 해제 + lv.ForeColor = Color.DarkMagenta; + } + else if (item.Item4.ToString() == item.Item5.ToString()) + { + lv.Checked = false; //값이 같으면 해제 + } + else lv.Checked = true; + } + } + + private void button1_Click(object sender, EventArgs e) + { + var cnt = 0; + foreach (ListViewItem item in listView1.CheckedItems) + { + var p = item.Tag as Tuple; + p.Item1.Position = p.Item5; + p.Item1.EndEdit(); + cnt += 1; + } + if (cnt > 0) + DialogResult = DialogResult.OK; + else + this.Close(); + } + + private void fSavePosition_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Handler/Project/Dialog/fSavePosition.resx b/Handler/Project/Dialog/fSavePosition.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fSavePosition.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectCustInfo.Designer.cs b/Handler/Project/Dialog/fSelectCustInfo.Designer.cs new file mode 100644 index 0000000..0abded0 --- /dev/null +++ b/Handler/Project/Dialog/fSelectCustInfo.Designer.cs @@ -0,0 +1,101 @@ +namespace Project.Dialog +{ + partial class fSelectCustInfo + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.btOK = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2}); + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.Location = new System.Drawing.Point(0, 0); + this.listView1.MultiSelect = false; + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(499, 400); + this.listView1.TabIndex = 0; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Code"; + this.columnHeader1.Width = 130; + // + // columnHeader2 + // + this.columnHeader2.Text = "Customer Name"; + this.columnHeader2.Width = 360; + // + // btOK + // + this.btOK.Dock = System.Windows.Forms.DockStyle.Bottom; + this.btOK.Font = new System.Drawing.Font("맑은 고딕", 18F, System.Drawing.FontStyle.Bold); + this.btOK.Location = new System.Drawing.Point(0, 400); + this.btOK.Margin = new System.Windows.Forms.Padding(8, 13, 8, 13); + this.btOK.Name = "btOK"; + this.btOK.Size = new System.Drawing.Size(499, 50); + this.btOK.TabIndex = 19; + this.btOK.Text = "OK"; + this.btOK.UseVisualStyleBackColor = true; + this.btOK.Click += new System.EventHandler(this.btOK_Click); + // + // fSelectCustInfo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(499, 450); + this.Controls.Add(this.listView1); + this.Controls.Add(this.btOK); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSelectCustInfo"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Select Customer"; + this.Load += new System.EventHandler(this.fSelectCustInfo_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.Button btOK; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectCustInfo.cs b/Handler/Project/Dialog/fSelectCustInfo.cs new file mode 100644 index 0000000..f04be9f --- /dev/null +++ b/Handler/Project/Dialog/fSelectCustInfo.cs @@ -0,0 +1,48 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSelectCustInfo : Form + { + public string CustCode, CustName; + public fSelectCustInfo() + { + InitializeComponent(); + } + + private void fSelectCustInfo_Load(object sender, EventArgs e) + { + this.Show(); + Application.DoEvents(); + + var ta = new DataSet1TableAdapters.K4EE_Component_Reel_CustInfoTableAdapter(); + var dt = ta.GetData(); + this.listView1.Items.Clear(); + foreach(DataSet1.K4EE_Component_Reel_CustInfoRow item in dt) + { + if (item.code.isEmpty()) continue; + var lv = this.listView1.Items.Add(item.code); + lv.SubItems.Add(item.name); + } + } + + private void btOK_Click(object sender, EventArgs e) + { + if (this.listView1.FocusedItem == null) + return; + + this.CustCode = this.listView1.FocusedItem.SubItems[0].Text; + this.CustName = this.listView1.FocusedItem.SubItems[1].Text; + DialogResult = DialogResult.OK; + } + } +} diff --git a/Handler/Project/Dialog/fSelectCustInfo.resx b/Handler/Project/Dialog/fSelectCustInfo.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fSelectCustInfo.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectDataList.Designer.cs b/Handler/Project/Dialog/fSelectDataList.Designer.cs new file mode 100644 index 0000000..2a6552a --- /dev/null +++ b/Handler/Project/Dialog/fSelectDataList.Designer.cs @@ -0,0 +1,78 @@ +namespace Project.Dialog +{ + partial class fSelectDataList + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.listBox1 = new System.Windows.Forms.ListBox(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listBox1 + // + this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listBox1.FormattingEnabled = true; + this.listBox1.ItemHeight = 40; + this.listBox1.Location = new System.Drawing.Point(0, 0); + this.listBox1.Name = "listBox1"; + this.listBox1.Size = new System.Drawing.Size(398, 392); + this.listBox1.TabIndex = 0; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(0, 392); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(398, 55); + this.button1.TabIndex = 1; + this.button1.Text = "Confirm Selection"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // fSelectDataList + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(398, 447); + this.Controls.Add(this.listBox1); + this.Controls.Add(this.button1); + this.Font = new System.Drawing.Font("맑은 고딕", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSelectDataList"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Please select from list"; + this.Load += new System.EventHandler(this.fSelectDataList_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListBox listBox1; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectDataList.cs b/Handler/Project/Dialog/fSelectDataList.cs new file mode 100644 index 0000000..ae28ba9 --- /dev/null +++ b/Handler/Project/Dialog/fSelectDataList.cs @@ -0,0 +1,48 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSelectDataList : Form + { + public string SelectedValue = string.Empty; + public fSelectDataList(string[] list) + { + InitializeComponent(); + this.listBox1.Items.Clear(); + foreach (var item in list) + this.listBox1.Items.Add(item); + this.KeyDown += FSelectDataList_KeyDown; + } + + private void FSelectDataList_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) this.Close(); + } + + private void fSelectDataList_Load(object sender, EventArgs e) + { + + } + + private void button1_Click(object sender, EventArgs e) + { + if (this.listBox1.SelectedIndex < 0) + { + UTIL.MsgE("Please select an item\n\nPress ESC key or close button to cancel"); + return; + } + this.SelectedValue = this.listBox1.Items[this.listBox1.SelectedIndex].ToString(); + this.DialogResult = DialogResult.OK; + + } + } +} diff --git a/Handler/Project/Dialog/fSelectDataList.resx b/Handler/Project/Dialog/fSelectDataList.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fSelectDataList.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectDay.Designer.cs b/Handler/Project/Dialog/fSelectDay.Designer.cs new file mode 100644 index 0000000..6cc915d --- /dev/null +++ b/Handler/Project/Dialog/fSelectDay.Designer.cs @@ -0,0 +1,74 @@ +namespace Project.Dialog +{ + partial class fSelectDay + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.monthCalendar1 = new System.Windows.Forms.MonthCalendar(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // monthCalendar1 + // + this.monthCalendar1.CalendarDimensions = new System.Drawing.Size(3, 2); + this.monthCalendar1.Dock = System.Windows.Forms.DockStyle.Fill; + this.monthCalendar1.Location = new System.Drawing.Point(0, 0); + this.monthCalendar1.Name = "monthCalendar1"; + this.monthCalendar1.TabIndex = 0; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(0, 312); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(669, 61); + this.button1.TabIndex = 1; + this.button1.Text = "Select"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // fSelectDay + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(669, 373); + this.Controls.Add(this.button1); + this.Controls.Add(this.monthCalendar1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSelectDay"; + this.Text = "fSelectDay"; + this.Load += new System.EventHandler(this.fSelectDay_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.MonthCalendar monthCalendar1; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectDay.cs b/Handler/Project/Dialog/fSelectDay.cs new file mode 100644 index 0000000..0fc5704 --- /dev/null +++ b/Handler/Project/Dialog/fSelectDay.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSelectDay : Form + { + public DateTime dt { get; set; } + public fSelectDay(DateTime dt_) + { + InitializeComponent(); + this.dt = dt_; + this.StartPosition = FormStartPosition.CenterScreen; + } + + private void fSelectDay_Load(object sender, EventArgs e) + { + this.monthCalendar1.SelectionStart = this.dt; + this.monthCalendar1.SelectionEnd = this.dt; + } + + private void button1_Click(object sender, EventArgs e) + { + this.dt = this.monthCalendar1.SelectionStart; + DialogResult = DialogResult.OK; + } + } +} diff --git a/Handler/Project/Dialog/fSelectDay.resx b/Handler/Project/Dialog/fSelectDay.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fSelectDay.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectJob.Designer.cs b/Handler/Project/Dialog/fSelectJob.Designer.cs new file mode 100644 index 0000000..00f3f10 --- /dev/null +++ b/Handler/Project/Dialog/fSelectJob.Designer.cs @@ -0,0 +1,1398 @@ +namespace Project.Dialog +{ + partial class fSelectJob + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSelectJob)); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.cmbCustCode = new System.Windows.Forms.ComboBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.label1 = new System.Windows.Forms.Label(); + this.lbMsgCamoff = new arCtl.arLabel(); + this.lbTitle = new arCtl.arLabel(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.chkApplyWMSInfo = new System.Windows.Forms.CheckBox(); + this.chkApplySidInfo = new System.Windows.Forms.CheckBox(); + this.chkApplyJobInfo = new System.Windows.Forms.CheckBox(); + this.chkApplySIDConv = new System.Windows.Forms.CheckBox(); + this.chkUserConfirm = new System.Windows.Forms.CheckBox(); + this.chkSIDConv = new System.Windows.Forms.CheckBox(); + this.chkQtyServer = new System.Windows.Forms.CheckBox(); + this.chkQtyMRQ = new System.Windows.Forms.CheckBox(); + this.chkNew = new System.Windows.Forms.CheckBox(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.GrpSidConvData = new System.Windows.Forms.GroupBox(); + this.chkCVSave = new System.Windows.Forms.CheckBox(); + this.chkCVApplyBatch = new System.Windows.Forms.CheckBox(); + this.chkCVWhereLot = new System.Windows.Forms.CheckBox(); + this.chkCVApplyPrint = new System.Windows.Forms.CheckBox(); + this.chkCVApplyVender = new System.Windows.Forms.CheckBox(); + this.chkCVWhereSID = new System.Windows.Forms.CheckBox(); + this.chkCVWhereCust = new System.Windows.Forms.CheckBox(); + this.chkCVWherePart = new System.Windows.Forms.CheckBox(); + this.chkCVApplySID = new System.Windows.Forms.CheckBox(); + this.chkCVApplyCust = new System.Windows.Forms.CheckBox(); + this.chkCVApplyPartno = new System.Windows.Forms.CheckBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.grpapplyjob = new System.Windows.Forms.GroupBox(); + this.chkDayWhereLot = new System.Windows.Forms.CheckBox(); + this.chkDayApplyPrint = new System.Windows.Forms.CheckBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.chkDayApplyVender = new System.Windows.Forms.CheckBox(); + this.chkDayWhereSID = new System.Windows.Forms.CheckBox(); + this.chkDayWhereCust = new System.Windows.Forms.CheckBox(); + this.chkDayWherePart = new System.Windows.Forms.CheckBox(); + this.chkDayApplySID = new System.Windows.Forms.CheckBox(); + this.chkDayApplyCust = new System.Windows.Forms.CheckBox(); + this.chkDayApplyPart = new System.Windows.Forms.CheckBox(); + this.grpApplySidinfo = new System.Windows.Forms.GroupBox(); + this.chkInfoWhereLot = new System.Windows.Forms.CheckBox(); + this.chkInfoApplyBatch = new System.Windows.Forms.CheckBox(); + this.chkInfoSave = new System.Windows.Forms.CheckBox(); + this.chkInfoApplyPrint = new System.Windows.Forms.CheckBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.chkInfoApplyVender = new System.Windows.Forms.CheckBox(); + this.chkInfoWhereSID = new System.Windows.Forms.CheckBox(); + this.chkInfoWhereCust = new System.Windows.Forms.CheckBox(); + this.chkInfoWherePart = new System.Windows.Forms.CheckBox(); + this.chkInfoApplySID = new System.Windows.Forms.CheckBox(); + this.chkInfoApplyCust = new System.Windows.Forms.CheckBox(); + this.chkInfoApplyPart = new System.Windows.Forms.CheckBox(); + this.grpApplyWMSinfo = new System.Windows.Forms.GroupBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox36 = new System.Windows.Forms.CheckBox(); + this.chkWMSApplyBatch = new System.Windows.Forms.CheckBox(); + this.label22 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.checkBox41 = new System.Windows.Forms.CheckBox(); + this.checkBox42 = new System.Windows.Forms.CheckBox(); + this.checkBox43 = new System.Windows.Forms.CheckBox(); + this.checkBox44 = new System.Windows.Forms.CheckBox(); + this.checkBox45 = new System.Windows.Forms.CheckBox(); + this.checkBox46 = new System.Windows.Forms.CheckBox(); + this.checkBox47 = new System.Windows.Forms.CheckBox(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.chkCustom = new System.Windows.Forms.CheckBox(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.btOK = new arCtl.arLabel(); + this.btCancle = new arCtl.arLabel(); + this.dataSet11 = new Project.DataSet1(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.panel2.SuspendLayout(); + this.panel5.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.GrpSidConvData.SuspendLayout(); + this.grpapplyjob.SuspendLayout(); + this.grpApplySidinfo.SuspendLayout(); + this.grpApplyWMSinfo.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet11)).BeginInit(); + this.SuspendLayout(); + // + // panel2 + // + this.panel2.Controls.Add(this.panel5); + this.panel2.Controls.Add(this.progressBar1); + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.lbMsgCamoff); + this.panel2.Controls.Add(this.lbTitle); + this.panel2.Controls.Add(this.tabControl1); + this.panel2.Controls.Add(this.tableLayoutPanel3); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Padding = new System.Windows.Forms.Padding(9, 5, 9, 7); + this.panel2.Size = new System.Drawing.Size(751, 761); + this.panel2.TabIndex = 136; + // + // panel5 + // + this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel5.Controls.Add(this.cmbCustCode); + this.panel5.Controls.Add(this.panel1); + this.panel5.Controls.Add(this.button1); + this.panel5.Dock = System.Windows.Forms.DockStyle.Top; + this.panel5.Location = new System.Drawing.Point(9, 200); + this.panel5.Name = "panel5"; + this.panel5.Padding = new System.Windows.Forms.Padding(5); + this.panel5.Size = new System.Drawing.Size(733, 73); + this.panel5.TabIndex = 28; + // + // cmbCustCode + // + this.cmbCustCode.Dock = System.Windows.Forms.DockStyle.Fill; + this.cmbCustCode.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold); + this.cmbCustCode.FormattingEnabled = true; + this.cmbCustCode.Location = new System.Drawing.Point(216, 5); + this.cmbCustCode.Name = "cmbCustCode"; + this.cmbCustCode.Size = new System.Drawing.Size(510, 62); + this.cmbCustCode.TabIndex = 1; + this.cmbCustCode.Text = "0000"; + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Left; + this.panel1.Location = new System.Drawing.Point(211, 5); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(5, 61); + this.panel1.TabIndex = 18; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Left; + this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(5, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(206, 61); + this.button1.TabIndex = 17; + this.button1.Text = "CUSTOMER"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // progressBar1 + // + this.progressBar1.Dock = System.Windows.Forms.DockStyle.Top; + this.progressBar1.Location = new System.Drawing.Point(9, 190); + this.progressBar1.Name = "progressBar1"; + this.progressBar1.Size = new System.Drawing.Size(733, 10); + this.progressBar1.TabIndex = 27; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.SkyBlue; + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(9, 140); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(733, 50); + this.label1.TabIndex = 17; + this.label1.Text = "CONVEYOR MODE"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbMsgCamoff + // + this.lbMsgCamoff.BackColor = System.Drawing.Color.Tomato; + this.lbMsgCamoff.BackColor2 = System.Drawing.Color.Transparent; + this.lbMsgCamoff.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbMsgCamoff.BorderColor = System.Drawing.Color.Red; + this.lbMsgCamoff.BorderColorOver = System.Drawing.Color.Red; + this.lbMsgCamoff.BorderSize = new System.Windows.Forms.Padding(0); + this.lbMsgCamoff.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbMsgCamoff.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbMsgCamoff.Dock = System.Windows.Forms.DockStyle.Top; + this.lbMsgCamoff.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbMsgCamoff.ForeColor = System.Drawing.Color.White; + this.lbMsgCamoff.GradientEnable = true; + this.lbMsgCamoff.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.lbMsgCamoff.GradientRepeatBG = false; + this.lbMsgCamoff.isButton = false; + this.lbMsgCamoff.Location = new System.Drawing.Point(9, 91); + this.lbMsgCamoff.MouseDownColor = System.Drawing.Color.Yellow; + this.lbMsgCamoff.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbMsgCamoff.msg = null; + this.lbMsgCamoff.Name = "lbMsgCamoff"; + this.lbMsgCamoff.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.lbMsgCamoff.ProgressBorderColor = System.Drawing.Color.Black; + this.lbMsgCamoff.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbMsgCamoff.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbMsgCamoff.ProgressEnable = false; + this.lbMsgCamoff.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbMsgCamoff.ProgressForeColor = System.Drawing.Color.Black; + this.lbMsgCamoff.ProgressMax = 100F; + this.lbMsgCamoff.ProgressMin = 0F; + this.lbMsgCamoff.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbMsgCamoff.ProgressValue = 0F; + this.lbMsgCamoff.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.lbMsgCamoff.Sign = ""; + this.lbMsgCamoff.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbMsgCamoff.SignColor = System.Drawing.Color.Yellow; + this.lbMsgCamoff.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbMsgCamoff.Size = new System.Drawing.Size(733, 49); + this.lbMsgCamoff.TabIndex = 61; + this.lbMsgCamoff.Text = "Camera usage is OFF"; + this.lbMsgCamoff.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lbMsgCamoff.TextShadow = false; + this.lbMsgCamoff.TextVisible = true; + // + // lbTitle + // + this.lbTitle.BackColor = System.Drawing.Color.Transparent; + this.lbTitle.BackColor2 = System.Drawing.Color.Transparent; + this.lbTitle.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbTitle.BorderColor = System.Drawing.Color.Red; + this.lbTitle.BorderColorOver = System.Drawing.Color.Red; + this.lbTitle.BorderSize = new System.Windows.Forms.Padding(0); + this.lbTitle.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbTitle.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbTitle.Dock = System.Windows.Forms.DockStyle.Top; + this.lbTitle.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbTitle.ForeColor = System.Drawing.Color.DarkCyan; + this.lbTitle.GradientEnable = true; + this.lbTitle.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.lbTitle.GradientRepeatBG = false; + this.lbTitle.isButton = false; + this.lbTitle.Location = new System.Drawing.Point(9, 5); + this.lbTitle.MouseDownColor = System.Drawing.Color.Yellow; + this.lbTitle.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbTitle.msg = null; + this.lbTitle.Name = "lbTitle"; + this.lbTitle.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.lbTitle.ProgressBorderColor = System.Drawing.Color.Black; + this.lbTitle.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbTitle.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbTitle.ProgressEnable = false; + this.lbTitle.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbTitle.ProgressForeColor = System.Drawing.Color.Black; + this.lbTitle.ProgressMax = 100F; + this.lbTitle.ProgressMin = 0F; + this.lbTitle.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbTitle.ProgressValue = 0F; + this.lbTitle.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.lbTitle.Sign = ""; + this.lbTitle.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbTitle.SignColor = System.Drawing.Color.Yellow; + this.lbTitle.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbTitle.Size = new System.Drawing.Size(733, 86); + this.lbTitle.TabIndex = 60; + this.lbTitle.Text = "Please select work method"; + this.lbTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lbTitle.TextShadow = false; + this.lbTitle.TextVisible = true; + this.lbTitle.Click += new System.EventHandler(this.lbTitle_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tabControl1.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tabControl1.Location = new System.Drawing.Point(9, 278); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(733, 375); + this.tabControl1.TabIndex = 26; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.chkApplyWMSInfo); + this.tabPage1.Controls.Add(this.chkApplySidInfo); + this.tabPage1.Controls.Add(this.chkApplyJobInfo); + this.tabPage1.Controls.Add(this.chkApplySIDConv); + this.tabPage1.Controls.Add(this.chkUserConfirm); + this.tabPage1.Controls.Add(this.chkSIDConv); + this.tabPage1.Controls.Add(this.chkQtyServer); + this.tabPage1.Controls.Add(this.chkQtyMRQ); + this.tabPage1.Controls.Add(this.chkNew); + this.tabPage1.Location = new System.Drawing.Point(4, 26); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(10); + this.tabPage1.Size = new System.Drawing.Size(725, 345); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Options"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // chkApplyWMSInfo + // + this.chkApplyWMSInfo.AutoSize = true; + this.chkApplyWMSInfo.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplyWMSInfo.ForeColor = System.Drawing.Color.Gray; + this.chkApplyWMSInfo.Location = new System.Drawing.Point(13, 303); + this.chkApplyWMSInfo.Name = "chkApplyWMSInfo"; + this.chkApplyWMSInfo.Size = new System.Drawing.Size(446, 25); + this.chkApplyWMSInfo.TabIndex = 35; + this.chkApplyWMSInfo.Tag = "8"; + this.chkApplyWMSInfo.Text = "Automatically record data using WMS information table"; + this.chkApplyWMSInfo.UseVisualStyleBackColor = true; + this.chkApplyWMSInfo.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkApplySidInfo + // + this.chkApplySidInfo.AutoSize = true; + this.chkApplySidInfo.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplySidInfo.ForeColor = System.Drawing.Color.Gray; + this.chkApplySidInfo.Location = new System.Drawing.Point(13, 229); + this.chkApplySidInfo.Name = "chkApplySidInfo"; + this.chkApplySidInfo.Size = new System.Drawing.Size(435, 25); + this.chkApplySidInfo.TabIndex = 33; + this.chkApplySidInfo.Tag = "6"; + this.chkApplySidInfo.Text = "Automatically record data using SID information table."; + this.chkApplySidInfo.UseVisualStyleBackColor = true; + this.chkApplySidInfo.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkApplyJobInfo + // + this.chkApplyJobInfo.AutoSize = true; + this.chkApplyJobInfo.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplyJobInfo.ForeColor = System.Drawing.Color.Gray; + this.chkApplyJobInfo.Location = new System.Drawing.Point(13, 192); + this.chkApplyJobInfo.Name = "chkApplyJobInfo"; + this.chkApplyJobInfo.Size = new System.Drawing.Size(409, 25); + this.chkApplyJobInfo.TabIndex = 32; + this.chkApplyJobInfo.Tag = "5"; + this.chkApplyJobInfo.Text = "Automatically record data using daily work history."; + this.chkApplyJobInfo.UseVisualStyleBackColor = true; + this.chkApplyJobInfo.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkApplySIDConv + // + this.chkApplySIDConv.AutoSize = true; + this.chkApplySIDConv.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkApplySIDConv.ForeColor = System.Drawing.Color.Gray; + this.chkApplySIDConv.Location = new System.Drawing.Point(13, 266); + this.chkApplySIDConv.Name = "chkApplySIDConv"; + this.chkApplySIDConv.Size = new System.Drawing.Size(426, 25); + this.chkApplySIDConv.TabIndex = 31; + this.chkApplySIDConv.Tag = "7"; + this.chkApplySIDConv.Text = "Automatically record data using SID conversion table"; + this.chkApplySIDConv.UseVisualStyleBackColor = true; + this.chkApplySIDConv.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkUserConfirm + // + this.chkUserConfirm.AutoSize = true; + this.chkUserConfirm.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkUserConfirm.ForeColor = System.Drawing.Color.Gray; + this.chkUserConfirm.Location = new System.Drawing.Point(13, 8); + this.chkUserConfirm.Name = "chkUserConfirm"; + this.chkUserConfirm.Size = new System.Drawing.Size(316, 25); + this.chkUserConfirm.TabIndex = 13; + this.chkUserConfirm.Tag = "0"; + this.chkUserConfirm.Text = "User confirms (no automatic progress)"; + this.chkUserConfirm.UseVisualStyleBackColor = true; + this.chkUserConfirm.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkSIDConv + // + this.chkSIDConv.AutoSize = true; + this.chkSIDConv.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkSIDConv.ForeColor = System.Drawing.Color.Gray; + this.chkSIDConv.Location = new System.Drawing.Point(13, 155); + this.chkSIDConv.Name = "chkSIDConv"; + this.chkSIDConv.Size = new System.Drawing.Size(376, 25); + this.chkSIDConv.TabIndex = 28; + this.chkSIDConv.Tag = "4"; + this.chkSIDConv.Text = "Convert SID values using SID conversion table."; + this.chkSIDConv.UseVisualStyleBackColor = true; + this.chkSIDConv.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkQtyServer + // + this.chkQtyServer.AutoSize = true; + this.chkQtyServer.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkQtyServer.ForeColor = System.Drawing.Color.Gray; + this.chkQtyServer.Location = new System.Drawing.Point(13, 45); + this.chkQtyServer.Name = "chkQtyServer"; + this.chkQtyServer.Size = new System.Drawing.Size(307, 25); + this.chkQtyServer.TabIndex = 13; + this.chkQtyServer.Tag = "1"; + this.chkQtyServer.Text = "Use server quantity based on Reel ID"; + this.chkQtyServer.UseVisualStyleBackColor = true; + this.chkQtyServer.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkQtyMRQ + // + this.chkQtyMRQ.AutoSize = true; + this.chkQtyMRQ.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.chkQtyMRQ.ForeColor = System.Drawing.Color.Gray; + this.chkQtyMRQ.Location = new System.Drawing.Point(13, 118); + this.chkQtyMRQ.Name = "chkQtyMRQ"; + this.chkQtyMRQ.Size = new System.Drawing.Size(424, 25); + this.chkQtyMRQ.TabIndex = 27; + this.chkQtyMRQ.Tag = "3"; + this.chkQtyMRQ.Text = "Enter quantity manually (auto-proceed if RQ is read)."; + this.chkQtyMRQ.UseVisualStyleBackColor = true; + this.chkQtyMRQ.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // chkNew + // + this.chkNew.AutoSize = true; + this.chkNew.Font = new System.Drawing.Font("맑은 고딕", 11F); + this.chkNew.ForeColor = System.Drawing.Color.Gray; + this.chkNew.Location = new System.Drawing.Point(13, 82); + this.chkNew.Name = "chkNew"; + this.chkNew.Size = new System.Drawing.Size(162, 24); + this.chkNew.TabIndex = 24; + this.chkNew.Tag = "2"; + this.chkNew.Text = "Create new Reel ID."; + this.chkNew.UseVisualStyleBackColor = true; + this.chkNew.CheckStateChanged += new System.EventHandler(this.checkBox1_CheckStateChanged); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.GrpSidConvData); + this.tabPage2.Controls.Add(this.grpapplyjob); + this.tabPage2.Controls.Add(this.grpApplySidinfo); + this.tabPage2.Controls.Add(this.grpApplyWMSinfo); + this.tabPage2.Location = new System.Drawing.Point(4, 26); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(10); + this.tabPage2.Size = new System.Drawing.Size(725, 345); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Option Data"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // GrpSidConvData + // + this.GrpSidConvData.Controls.Add(this.chkCVSave); + this.GrpSidConvData.Controls.Add(this.chkCVApplyBatch); + this.GrpSidConvData.Controls.Add(this.chkCVWhereLot); + this.GrpSidConvData.Controls.Add(this.chkCVApplyPrint); + this.GrpSidConvData.Controls.Add(this.chkCVApplyVender); + this.GrpSidConvData.Controls.Add(this.chkCVWhereSID); + this.GrpSidConvData.Controls.Add(this.chkCVWhereCust); + this.GrpSidConvData.Controls.Add(this.chkCVWherePart); + this.GrpSidConvData.Controls.Add(this.chkCVApplySID); + this.GrpSidConvData.Controls.Add(this.chkCVApplyCust); + this.GrpSidConvData.Controls.Add(this.chkCVApplyPartno); + this.GrpSidConvData.Controls.Add(this.label6); + this.GrpSidConvData.Controls.Add(this.label7); + this.GrpSidConvData.Dock = System.Windows.Forms.DockStyle.Top; + this.GrpSidConvData.Enabled = false; + this.GrpSidConvData.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.GrpSidConvData.Location = new System.Drawing.Point(10, 256); + this.GrpSidConvData.Name = "GrpSidConvData"; + this.GrpSidConvData.Size = new System.Drawing.Size(705, 82); + this.GrpSidConvData.TabIndex = 34; + this.GrpSidConvData.TabStop = false; + this.GrpSidConvData.Text = "SID Conversion Table Server Application"; + // + // chkCVSave + // + this.chkCVSave.AutoSize = true; + this.chkCVSave.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.chkCVSave.ForeColor = System.Drawing.Color.Tomato; + this.chkCVSave.Location = new System.Drawing.Point(431, 47); + this.chkCVSave.Name = "chkCVSave"; + this.chkCVSave.Size = new System.Drawing.Size(216, 23); + this.chkCVSave.TabIndex = 51; + this.chkCVSave.Tag = "11"; + this.chkCVSave.Text = "Record change information"; + this.chkCVSave.UseVisualStyleBackColor = true; + // + // chkCVApplyBatch + // + this.chkCVApplyBatch.AutoSize = true; + this.chkCVApplyBatch.ForeColor = System.Drawing.Color.Green; + this.chkCVApplyBatch.Location = new System.Drawing.Point(548, 21); + this.chkCVApplyBatch.Name = "chkCVApplyBatch"; + this.chkCVApplyBatch.Size = new System.Drawing.Size(63, 23); + this.chkCVApplyBatch.TabIndex = 49; + this.chkCVApplyBatch.Tag = "9"; + this.chkCVApplyBatch.Text = "Batch"; + this.chkCVApplyBatch.UseVisualStyleBackColor = true; + // + // chkCVWhereLot + // + this.chkCVWhereLot.AutoSize = true; + this.chkCVWhereLot.ForeColor = System.Drawing.Color.Blue; + this.chkCVWhereLot.Location = new System.Drawing.Point(311, 46); + this.chkCVWhereLot.Name = "chkCVWhereLot"; + this.chkCVWhereLot.Size = new System.Drawing.Size(62, 23); + this.chkCVWhereLot.TabIndex = 48; + this.chkCVWhereLot.Tag = "8"; + this.chkCVWhereLot.Text = "VLOT"; + this.chkCVWhereLot.UseVisualStyleBackColor = true; + // + // chkCVApplyPrint + // + this.chkCVApplyPrint.AutoSize = true; + this.chkCVApplyPrint.Location = new System.Drawing.Point(431, 21); + this.chkCVApplyPrint.Name = "chkCVApplyPrint"; + this.chkCVApplyPrint.Size = new System.Drawing.Size(111, 23); + this.chkCVApplyPrint.TabIndex = 47; + this.chkCVApplyPrint.Tag = "4"; + this.chkCVApplyPrint.Text = "Print Position"; + this.chkCVApplyPrint.UseVisualStyleBackColor = true; + // + // chkCVApplyVender + // + this.chkCVApplyVender.AutoSize = true; + this.chkCVApplyVender.Location = new System.Drawing.Point(311, 20); + this.chkCVApplyVender.Name = "chkCVApplyVender"; + this.chkCVApplyVender.Size = new System.Drawing.Size(114, 23); + this.chkCVApplyVender.TabIndex = 46; + this.chkCVApplyVender.Tag = "3"; + this.chkCVApplyVender.Text = "Vender Name"; + this.chkCVApplyVender.UseVisualStyleBackColor = true; + // + // chkCVWhereSID + // + this.chkCVWhereSID.AutoSize = true; + this.chkCVWhereSID.ForeColor = System.Drawing.Color.Blue; + this.chkCVWhereSID.Location = new System.Drawing.Point(255, 46); + this.chkCVWhereSID.Name = "chkCVWhereSID"; + this.chkCVWhereSID.Size = new System.Drawing.Size(50, 23); + this.chkCVWhereSID.TabIndex = 45; + this.chkCVWhereSID.Tag = "7"; + this.chkCVWhereSID.Text = "SID"; + this.chkCVWhereSID.UseVisualStyleBackColor = true; + // + // chkCVWhereCust + // + this.chkCVWhereCust.AutoSize = true; + this.chkCVWhereCust.ForeColor = System.Drawing.Color.Blue; + this.chkCVWhereCust.Location = new System.Drawing.Point(156, 46); + this.chkCVWhereCust.Name = "chkCVWhereCust"; + this.chkCVWhereCust.Size = new System.Drawing.Size(93, 23); + this.chkCVWhereCust.TabIndex = 40; + this.chkCVWhereCust.Tag = "6"; + this.chkCVWhereCust.Text = "Cust Code"; + this.chkCVWhereCust.UseVisualStyleBackColor = true; + // + // chkCVWherePart + // + this.chkCVWherePart.AutoSize = true; + this.chkCVWherePart.ForeColor = System.Drawing.Color.Blue; + this.chkCVWherePart.Location = new System.Drawing.Point(73, 46); + this.chkCVWherePart.Name = "chkCVWherePart"; + this.chkCVWherePart.Size = new System.Drawing.Size(77, 23); + this.chkCVWherePart.TabIndex = 41; + this.chkCVWherePart.Tag = "5"; + this.chkCVWherePart.Text = "Part No"; + this.chkCVWherePart.UseVisualStyleBackColor = true; + // + // chkCVApplySID + // + this.chkCVApplySID.AutoSize = true; + this.chkCVApplySID.Location = new System.Drawing.Point(255, 20); + this.chkCVApplySID.Name = "chkCVApplySID"; + this.chkCVApplySID.Size = new System.Drawing.Size(50, 23); + this.chkCVApplySID.TabIndex = 44; + this.chkCVApplySID.Tag = "2"; + this.chkCVApplySID.Text = "SID"; + this.chkCVApplySID.UseVisualStyleBackColor = true; + // + // chkCVApplyCust + // + this.chkCVApplyCust.AutoSize = true; + this.chkCVApplyCust.Location = new System.Drawing.Point(156, 20); + this.chkCVApplyCust.Name = "chkCVApplyCust"; + this.chkCVApplyCust.Size = new System.Drawing.Size(93, 23); + this.chkCVApplyCust.TabIndex = 42; + this.chkCVApplyCust.Tag = "1"; + this.chkCVApplyCust.Text = "Cust Code"; + this.chkCVApplyCust.UseVisualStyleBackColor = true; + // + // chkCVApplyPartno + // + this.chkCVApplyPartno.AutoSize = true; + this.chkCVApplyPartno.Location = new System.Drawing.Point(73, 20); + this.chkCVApplyPartno.Name = "chkCVApplyPartno"; + this.chkCVApplyPartno.Size = new System.Drawing.Size(77, 23); + this.chkCVApplyPartno.TabIndex = 43; + this.chkCVApplyPartno.Tag = "0"; + this.chkCVApplyPartno.Text = "Part No"; + this.chkCVApplyPartno.UseVisualStyleBackColor = true; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label6.Location = new System.Drawing.Point(6, 54); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(41, 15); + this.label6.TabIndex = 29; + this.label6.Text = "Query"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label7.Location = new System.Drawing.Point(7, 28); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(40, 15); + this.label7.TabIndex = 29; + this.label7.Text = "Apply"; + // + // grpapplyjob + // + this.grpapplyjob.Controls.Add(this.chkDayWhereLot); + this.grpapplyjob.Controls.Add(this.chkDayApplyPrint); + this.grpapplyjob.Controls.Add(this.label3); + this.grpapplyjob.Controls.Add(this.label2); + this.grpapplyjob.Controls.Add(this.chkDayApplyVender); + this.grpapplyjob.Controls.Add(this.chkDayWhereSID); + this.grpapplyjob.Controls.Add(this.chkDayWhereCust); + this.grpapplyjob.Controls.Add(this.chkDayWherePart); + this.grpapplyjob.Controls.Add(this.chkDayApplySID); + this.grpapplyjob.Controls.Add(this.chkDayApplyCust); + this.grpapplyjob.Controls.Add(this.chkDayApplyPart); + this.grpapplyjob.Dock = System.Windows.Forms.DockStyle.Top; + this.grpapplyjob.Enabled = false; + this.grpapplyjob.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.grpapplyjob.Location = new System.Drawing.Point(10, 174); + this.grpapplyjob.Name = "grpapplyjob"; + this.grpapplyjob.Size = new System.Drawing.Size(705, 82); + this.grpapplyjob.TabIndex = 33; + this.grpapplyjob.TabStop = false; + this.grpapplyjob.Text = "Daily Work Application"; + // + // chkDayWhereLot + // + this.chkDayWhereLot.AutoSize = true; + this.chkDayWhereLot.ForeColor = System.Drawing.Color.Blue; + this.chkDayWhereLot.Location = new System.Drawing.Point(311, 50); + this.chkDayWhereLot.Name = "chkDayWhereLot"; + this.chkDayWhereLot.Size = new System.Drawing.Size(62, 23); + this.chkDayWhereLot.TabIndex = 31; + this.chkDayWhereLot.Tag = "11"; + this.chkDayWhereLot.Text = "VLOT"; + this.chkDayWhereLot.UseVisualStyleBackColor = true; + // + // chkDayApplyPrint + // + this.chkDayApplyPrint.AutoSize = true; + this.chkDayApplyPrint.Location = new System.Drawing.Point(431, 24); + this.chkDayApplyPrint.Name = "chkDayApplyPrint"; + this.chkDayApplyPrint.Size = new System.Drawing.Size(111, 23); + this.chkDayApplyPrint.TabIndex = 30; + this.chkDayApplyPrint.Tag = "4"; + this.chkDayApplyPrint.Text = "Print Position"; + this.chkDayApplyPrint.UseVisualStyleBackColor = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label3.Location = new System.Drawing.Point(6, 54); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 15); + this.label3.TabIndex = 29; + this.label3.Text = "Query"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label2.Location = new System.Drawing.Point(7, 28); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(40, 15); + this.label2.TabIndex = 29; + this.label2.Text = "Apply"; + // + // chkDayApplyVender + // + this.chkDayApplyVender.AutoSize = true; + this.chkDayApplyVender.Location = new System.Drawing.Point(311, 24); + this.chkDayApplyVender.Name = "chkDayApplyVender"; + this.chkDayApplyVender.Size = new System.Drawing.Size(114, 23); + this.chkDayApplyVender.TabIndex = 28; + this.chkDayApplyVender.Tag = "3"; + this.chkDayApplyVender.Text = "Vender Name"; + this.chkDayApplyVender.UseVisualStyleBackColor = true; + // + // chkDayWhereSID + // + this.chkDayWhereSID.AutoSize = true; + this.chkDayWhereSID.ForeColor = System.Drawing.Color.Blue; + this.chkDayWhereSID.Location = new System.Drawing.Point(255, 50); + this.chkDayWhereSID.Name = "chkDayWhereSID"; + this.chkDayWhereSID.Size = new System.Drawing.Size(50, 23); + this.chkDayWhereSID.TabIndex = 27; + this.chkDayWhereSID.Tag = "7"; + this.chkDayWhereSID.Text = "SID"; + this.chkDayWhereSID.UseVisualStyleBackColor = true; + // + // chkDayWhereCust + // + this.chkDayWhereCust.AutoSize = true; + this.chkDayWhereCust.ForeColor = System.Drawing.Color.Blue; + this.chkDayWhereCust.Location = new System.Drawing.Point(156, 50); + this.chkDayWhereCust.Name = "chkDayWhereCust"; + this.chkDayWhereCust.Size = new System.Drawing.Size(93, 23); + this.chkDayWhereCust.TabIndex = 25; + this.chkDayWhereCust.Tag = "6"; + this.chkDayWhereCust.Text = "Cust Code"; + this.chkDayWhereCust.UseVisualStyleBackColor = true; + // + // chkDayWherePart + // + this.chkDayWherePart.AutoSize = true; + this.chkDayWherePart.ForeColor = System.Drawing.Color.Blue; + this.chkDayWherePart.Location = new System.Drawing.Point(73, 50); + this.chkDayWherePart.Name = "chkDayWherePart"; + this.chkDayWherePart.Size = new System.Drawing.Size(77, 23); + this.chkDayWherePart.TabIndex = 25; + this.chkDayWherePart.Tag = "5"; + this.chkDayWherePart.Text = "Part No"; + this.chkDayWherePart.UseVisualStyleBackColor = true; + // + // chkDayApplySID + // + this.chkDayApplySID.AutoSize = true; + this.chkDayApplySID.Location = new System.Drawing.Point(255, 24); + this.chkDayApplySID.Name = "chkDayApplySID"; + this.chkDayApplySID.Size = new System.Drawing.Size(50, 23); + this.chkDayApplySID.TabIndex = 26; + this.chkDayApplySID.Tag = "2"; + this.chkDayApplySID.Text = "SID"; + this.chkDayApplySID.UseVisualStyleBackColor = true; + // + // chkDayApplyCust + // + this.chkDayApplyCust.AutoSize = true; + this.chkDayApplyCust.Location = new System.Drawing.Point(156, 24); + this.chkDayApplyCust.Name = "chkDayApplyCust"; + this.chkDayApplyCust.Size = new System.Drawing.Size(93, 23); + this.chkDayApplyCust.TabIndex = 25; + this.chkDayApplyCust.Tag = "1"; + this.chkDayApplyCust.Text = "Cust Code"; + this.chkDayApplyCust.UseVisualStyleBackColor = true; + // + // chkDayApplyPart + // + this.chkDayApplyPart.AutoSize = true; + this.chkDayApplyPart.Location = new System.Drawing.Point(73, 24); + this.chkDayApplyPart.Name = "chkDayApplyPart"; + this.chkDayApplyPart.Size = new System.Drawing.Size(77, 23); + this.chkDayApplyPart.TabIndex = 25; + this.chkDayApplyPart.Tag = "0"; + this.chkDayApplyPart.Text = "Part No"; + this.chkDayApplyPart.UseVisualStyleBackColor = true; + // + // grpApplySidinfo + // + this.grpApplySidinfo.Controls.Add(this.chkInfoWhereLot); + this.grpApplySidinfo.Controls.Add(this.chkInfoApplyBatch); + this.grpApplySidinfo.Controls.Add(this.chkInfoSave); + this.grpApplySidinfo.Controls.Add(this.chkInfoApplyPrint); + this.grpApplySidinfo.Controls.Add(this.label4); + this.grpApplySidinfo.Controls.Add(this.label5); + this.grpApplySidinfo.Controls.Add(this.chkInfoApplyVender); + this.grpApplySidinfo.Controls.Add(this.chkInfoWhereSID); + this.grpApplySidinfo.Controls.Add(this.chkInfoWhereCust); + this.grpApplySidinfo.Controls.Add(this.chkInfoWherePart); + this.grpApplySidinfo.Controls.Add(this.chkInfoApplySID); + this.grpApplySidinfo.Controls.Add(this.chkInfoApplyCust); + this.grpApplySidinfo.Controls.Add(this.chkInfoApplyPart); + this.grpApplySidinfo.Dock = System.Windows.Forms.DockStyle.Top; + this.grpApplySidinfo.Enabled = false; + this.grpApplySidinfo.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.grpApplySidinfo.Location = new System.Drawing.Point(10, 92); + this.grpApplySidinfo.Name = "grpApplySidinfo"; + this.grpApplySidinfo.Size = new System.Drawing.Size(705, 82); + this.grpApplySidinfo.TabIndex = 33; + this.grpApplySidinfo.TabStop = false; + this.grpApplySidinfo.Text = "Input Information Application"; + // + // chkInfoWhereLot + // + this.chkInfoWhereLot.AutoSize = true; + this.chkInfoWhereLot.ForeColor = System.Drawing.Color.Blue; + this.chkInfoWhereLot.Location = new System.Drawing.Point(311, 50); + this.chkInfoWhereLot.Name = "chkInfoWhereLot"; + this.chkInfoWhereLot.Size = new System.Drawing.Size(62, 23); + this.chkInfoWhereLot.TabIndex = 35; + this.chkInfoWhereLot.Tag = "11"; + this.chkInfoWhereLot.Text = "VLOT"; + this.chkInfoWhereLot.UseVisualStyleBackColor = true; + // + // chkInfoApplyBatch + // + this.chkInfoApplyBatch.AutoSize = true; + this.chkInfoApplyBatch.ForeColor = System.Drawing.Color.Green; + this.chkInfoApplyBatch.Location = new System.Drawing.Point(545, 24); + this.chkInfoApplyBatch.Name = "chkInfoApplyBatch"; + this.chkInfoApplyBatch.Size = new System.Drawing.Size(63, 23); + this.chkInfoApplyBatch.TabIndex = 33; + this.chkInfoApplyBatch.Tag = "9"; + this.chkInfoApplyBatch.Text = "Batch"; + this.chkInfoApplyBatch.UseVisualStyleBackColor = true; + // + // chkInfoSave + // + this.chkInfoSave.AutoSize = true; + this.chkInfoSave.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.chkInfoSave.ForeColor = System.Drawing.Color.Tomato; + this.chkInfoSave.Location = new System.Drawing.Point(431, 50); + this.chkInfoSave.Name = "chkInfoSave"; + this.chkInfoSave.Size = new System.Drawing.Size(216, 23); + this.chkInfoSave.TabIndex = 32; + this.chkInfoSave.Tag = "8"; + this.chkInfoSave.Text = "Record change information"; + this.chkInfoSave.UseVisualStyleBackColor = true; + // + // chkInfoApplyPrint + // + this.chkInfoApplyPrint.AutoSize = true; + this.chkInfoApplyPrint.Location = new System.Drawing.Point(431, 25); + this.chkInfoApplyPrint.Name = "chkInfoApplyPrint"; + this.chkInfoApplyPrint.Size = new System.Drawing.Size(111, 23); + this.chkInfoApplyPrint.TabIndex = 31; + this.chkInfoApplyPrint.Tag = "4"; + this.chkInfoApplyPrint.Text = "Print Position"; + this.chkInfoApplyPrint.UseVisualStyleBackColor = true; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label4.Location = new System.Drawing.Point(6, 54); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(41, 15); + this.label4.TabIndex = 29; + this.label4.Text = "Query"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label5.Location = new System.Drawing.Point(7, 28); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(40, 15); + this.label5.TabIndex = 29; + this.label5.Text = "Apply"; + // + // chkInfoApplyVender + // + this.chkInfoApplyVender.AutoSize = true; + this.chkInfoApplyVender.Location = new System.Drawing.Point(311, 24); + this.chkInfoApplyVender.Name = "chkInfoApplyVender"; + this.chkInfoApplyVender.Size = new System.Drawing.Size(114, 23); + this.chkInfoApplyVender.TabIndex = 28; + this.chkInfoApplyVender.Tag = "3"; + this.chkInfoApplyVender.Text = "Vender Name"; + this.chkInfoApplyVender.UseVisualStyleBackColor = true; + // + // chkInfoWhereSID + // + this.chkInfoWhereSID.AutoSize = true; + this.chkInfoWhereSID.ForeColor = System.Drawing.Color.Blue; + this.chkInfoWhereSID.Location = new System.Drawing.Point(255, 50); + this.chkInfoWhereSID.Name = "chkInfoWhereSID"; + this.chkInfoWhereSID.Size = new System.Drawing.Size(50, 23); + this.chkInfoWhereSID.TabIndex = 27; + this.chkInfoWhereSID.Tag = "7"; + this.chkInfoWhereSID.Text = "SID"; + this.chkInfoWhereSID.UseVisualStyleBackColor = true; + // + // chkInfoWhereCust + // + this.chkInfoWhereCust.AutoSize = true; + this.chkInfoWhereCust.ForeColor = System.Drawing.Color.Blue; + this.chkInfoWhereCust.Location = new System.Drawing.Point(156, 50); + this.chkInfoWhereCust.Name = "chkInfoWhereCust"; + this.chkInfoWhereCust.Size = new System.Drawing.Size(93, 23); + this.chkInfoWhereCust.TabIndex = 25; + this.chkInfoWhereCust.Tag = "6"; + this.chkInfoWhereCust.Text = "Cust Code"; + this.chkInfoWhereCust.UseVisualStyleBackColor = true; + // + // chkInfoWherePart + // + this.chkInfoWherePart.AutoSize = true; + this.chkInfoWherePart.ForeColor = System.Drawing.Color.Blue; + this.chkInfoWherePart.Location = new System.Drawing.Point(73, 50); + this.chkInfoWherePart.Name = "chkInfoWherePart"; + this.chkInfoWherePart.Size = new System.Drawing.Size(77, 23); + this.chkInfoWherePart.TabIndex = 25; + this.chkInfoWherePart.Tag = "5"; + this.chkInfoWherePart.Text = "Part No"; + this.chkInfoWherePart.UseVisualStyleBackColor = true; + // + // chkInfoApplySID + // + this.chkInfoApplySID.AutoSize = true; + this.chkInfoApplySID.Location = new System.Drawing.Point(255, 24); + this.chkInfoApplySID.Name = "chkInfoApplySID"; + this.chkInfoApplySID.Size = new System.Drawing.Size(50, 23); + this.chkInfoApplySID.TabIndex = 26; + this.chkInfoApplySID.Tag = "2"; + this.chkInfoApplySID.Text = "SID"; + this.chkInfoApplySID.UseVisualStyleBackColor = true; + // + // chkInfoApplyCust + // + this.chkInfoApplyCust.AutoSize = true; + this.chkInfoApplyCust.Location = new System.Drawing.Point(156, 24); + this.chkInfoApplyCust.Name = "chkInfoApplyCust"; + this.chkInfoApplyCust.Size = new System.Drawing.Size(93, 23); + this.chkInfoApplyCust.TabIndex = 25; + this.chkInfoApplyCust.Tag = "1"; + this.chkInfoApplyCust.Text = "Cust Code"; + this.chkInfoApplyCust.UseVisualStyleBackColor = true; + // + // chkInfoApplyPart + // + this.chkInfoApplyPart.AutoSize = true; + this.chkInfoApplyPart.Location = new System.Drawing.Point(73, 24); + this.chkInfoApplyPart.Name = "chkInfoApplyPart"; + this.chkInfoApplyPart.Size = new System.Drawing.Size(77, 23); + this.chkInfoApplyPart.TabIndex = 25; + this.chkInfoApplyPart.Tag = "0"; + this.chkInfoApplyPart.Text = "Part No"; + this.chkInfoApplyPart.UseVisualStyleBackColor = true; + // + // grpApplyWMSinfo + // + this.grpApplyWMSinfo.Controls.Add(this.checkBox2); + this.grpApplyWMSinfo.Controls.Add(this.checkBox1); + this.grpApplyWMSinfo.Controls.Add(this.checkBox36); + this.grpApplyWMSinfo.Controls.Add(this.chkWMSApplyBatch); + this.grpApplyWMSinfo.Controls.Add(this.label22); + this.grpApplyWMSinfo.Controls.Add(this.label23); + this.grpApplyWMSinfo.Controls.Add(this.checkBox41); + this.grpApplyWMSinfo.Controls.Add(this.checkBox42); + this.grpApplyWMSinfo.Controls.Add(this.checkBox43); + this.grpApplyWMSinfo.Controls.Add(this.checkBox44); + this.grpApplyWMSinfo.Controls.Add(this.checkBox45); + this.grpApplyWMSinfo.Controls.Add(this.checkBox46); + this.grpApplyWMSinfo.Controls.Add(this.checkBox47); + this.grpApplyWMSinfo.Dock = System.Windows.Forms.DockStyle.Top; + this.grpApplyWMSinfo.Enabled = false; + this.grpApplyWMSinfo.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.grpApplyWMSinfo.Location = new System.Drawing.Point(10, 10); + this.grpApplyWMSinfo.Name = "grpApplyWMSinfo"; + this.grpApplyWMSinfo.Size = new System.Drawing.Size(705, 82); + this.grpApplyWMSinfo.TabIndex = 36; + this.grpApplyWMSinfo.TabStop = false; + this.grpApplyWMSinfo.Text = "WMS Information Application"; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.ForeColor = System.Drawing.Color.Black; + this.checkBox2.Location = new System.Drawing.Point(431, 24); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(92, 23); + this.checkBox2.TabIndex = 39; + this.checkBox2.Tag = "13"; + this.checkBox2.Text = "MFG Date"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.ForeColor = System.Drawing.Color.Blue; + this.checkBox1.Location = new System.Drawing.Point(379, 50); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(92, 23); + this.checkBox1.TabIndex = 38; + this.checkBox1.Tag = "12"; + this.checkBox1.Text = "MFG Date"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // checkBox36 + // + this.checkBox36.AutoSize = true; + this.checkBox36.ForeColor = System.Drawing.Color.Blue; + this.checkBox36.Location = new System.Drawing.Point(311, 51); + this.checkBox36.Name = "checkBox36"; + this.checkBox36.Size = new System.Drawing.Size(62, 23); + this.checkBox36.TabIndex = 37; + this.checkBox36.Tag = "11"; + this.checkBox36.Text = "VLOT"; + this.checkBox36.UseVisualStyleBackColor = true; + // + // chkWMSApplyBatch + // + this.chkWMSApplyBatch.AutoSize = true; + this.chkWMSApplyBatch.ForeColor = System.Drawing.Color.Green; + this.chkWMSApplyBatch.Location = new System.Drawing.Point(529, 24); + this.chkWMSApplyBatch.Name = "chkWMSApplyBatch"; + this.chkWMSApplyBatch.Size = new System.Drawing.Size(63, 23); + this.chkWMSApplyBatch.TabIndex = 35; + this.chkWMSApplyBatch.Tag = "9"; + this.chkWMSApplyBatch.Text = "Batch"; + this.chkWMSApplyBatch.UseVisualStyleBackColor = true; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label22.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label22.Location = new System.Drawing.Point(6, 54); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(41, 15); + this.label22.TabIndex = 29; + this.label22.Text = "Query"; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Font = new System.Drawing.Font("맑은 고딕", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)))); + this.label23.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label23.Location = new System.Drawing.Point(7, 28); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(40, 15); + this.label23.TabIndex = 29; + this.label23.Text = "Apply"; + // + // checkBox41 + // + this.checkBox41.AutoSize = true; + this.checkBox41.Location = new System.Drawing.Point(311, 24); + this.checkBox41.Name = "checkBox41"; + this.checkBox41.Size = new System.Drawing.Size(114, 23); + this.checkBox41.TabIndex = 28; + this.checkBox41.Tag = "3"; + this.checkBox41.Text = "Vender Name"; + this.checkBox41.UseVisualStyleBackColor = true; + // + // checkBox42 + // + this.checkBox42.AutoSize = true; + this.checkBox42.ForeColor = System.Drawing.Color.Blue; + this.checkBox42.Location = new System.Drawing.Point(255, 50); + this.checkBox42.Name = "checkBox42"; + this.checkBox42.Size = new System.Drawing.Size(50, 23); + this.checkBox42.TabIndex = 27; + this.checkBox42.Tag = "7"; + this.checkBox42.Text = "SID"; + this.checkBox42.UseVisualStyleBackColor = true; + // + // checkBox43 + // + this.checkBox43.AutoSize = true; + this.checkBox43.ForeColor = System.Drawing.Color.Blue; + this.checkBox43.Location = new System.Drawing.Point(156, 50); + this.checkBox43.Name = "checkBox43"; + this.checkBox43.Size = new System.Drawing.Size(93, 23); + this.checkBox43.TabIndex = 25; + this.checkBox43.Tag = "6"; + this.checkBox43.Text = "Cust Code"; + this.checkBox43.UseVisualStyleBackColor = true; + // + // checkBox44 + // + this.checkBox44.AutoSize = true; + this.checkBox44.ForeColor = System.Drawing.Color.Blue; + this.checkBox44.Location = new System.Drawing.Point(73, 50); + this.checkBox44.Name = "checkBox44"; + this.checkBox44.Size = new System.Drawing.Size(77, 23); + this.checkBox44.TabIndex = 25; + this.checkBox44.Tag = "5"; + this.checkBox44.Text = "Part No"; + this.checkBox44.UseVisualStyleBackColor = true; + // + // checkBox45 + // + this.checkBox45.AutoSize = true; + this.checkBox45.Location = new System.Drawing.Point(255, 24); + this.checkBox45.Name = "checkBox45"; + this.checkBox45.Size = new System.Drawing.Size(50, 23); + this.checkBox45.TabIndex = 26; + this.checkBox45.Tag = "2"; + this.checkBox45.Text = "SID"; + this.checkBox45.UseVisualStyleBackColor = true; + // + // checkBox46 + // + this.checkBox46.AutoSize = true; + this.checkBox46.Location = new System.Drawing.Point(156, 24); + this.checkBox46.Name = "checkBox46"; + this.checkBox46.Size = new System.Drawing.Size(93, 23); + this.checkBox46.TabIndex = 25; + this.checkBox46.Tag = "1"; + this.checkBox46.Text = "Cust Code"; + this.checkBox46.UseVisualStyleBackColor = true; + // + // checkBox47 + // + this.checkBox47.AutoSize = true; + this.checkBox47.Location = new System.Drawing.Point(73, 24); + this.checkBox47.Name = "checkBox47"; + this.checkBox47.Size = new System.Drawing.Size(77, 23); + this.checkBox47.TabIndex = 25; + this.checkBox47.Tag = "0"; + this.checkBox47.Text = "Part No"; + this.checkBox47.UseVisualStyleBackColor = true; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.chkCustom); + this.tabPage3.Location = new System.Drawing.Point(4, 26); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Size = new System.Drawing.Size(725, 345); + this.tabPage3.TabIndex = 2; + this.tabPage3.Text = "Others"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // chkCustom + // + this.chkCustom.AutoSize = true; + this.chkCustom.Location = new System.Drawing.Point(17, 15); + this.chkCustom.Name = "chkCustom"; + this.chkCustom.Size = new System.Drawing.Size(105, 23); + this.chkCustom.TabIndex = 19; + this.chkCustom.Text = "Custom JOB"; + this.chkCustom.UseVisualStyleBackColor = true; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 2; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.Controls.Add(this.btOK, 1, 0); + this.tableLayoutPanel3.Controls.Add(this.btCancle, 0, 0); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tableLayoutPanel3.Location = new System.Drawing.Point(9, 653); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 1; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(733, 101); + this.tableLayoutPanel3.TabIndex = 12; + // + // btOK + // + this.btOK.BackColor = System.Drawing.Color.Green; + this.btOK.BackColor2 = System.Drawing.Color.Lime; + this.btOK.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.btOK.BorderColor = System.Drawing.Color.Gray; + this.btOK.BorderColorOver = System.Drawing.Color.Gray; + this.btOK.BorderSize = new System.Windows.Forms.Padding(5); + this.btOK.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.btOK.Cursor = System.Windows.Forms.Cursors.Hand; + this.btOK.Dock = System.Windows.Forms.DockStyle.Fill; + this.btOK.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btOK.ForeColor = System.Drawing.Color.White; + this.btOK.GradientEnable = true; + this.btOK.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.btOK.GradientRepeatBG = false; + this.btOK.isButton = true; + this.btOK.Location = new System.Drawing.Point(369, 3); + this.btOK.MouseDownColor = System.Drawing.Color.Yellow; + this.btOK.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btOK.msg = null; + this.btOK.Name = "btOK"; + this.btOK.ProgressBorderColor = System.Drawing.Color.Black; + this.btOK.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.btOK.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.btOK.ProgressEnable = false; + this.btOK.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.btOK.ProgressForeColor = System.Drawing.Color.Black; + this.btOK.ProgressMax = 100F; + this.btOK.ProgressMin = 0F; + this.btOK.ProgressPadding = new System.Windows.Forms.Padding(0); + this.btOK.ProgressValue = 0F; + this.btOK.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.btOK.Sign = ""; + this.btOK.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.btOK.SignColor = System.Drawing.Color.Yellow; + this.btOK.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.btOK.Size = new System.Drawing.Size(361, 95); + this.btOK.TabIndex = 1; + this.btOK.Text = "Start"; + this.btOK.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.btOK.TextShadow = true; + this.btOK.TextVisible = true; + this.btOK.Click += new System.EventHandler(this.btOK_Click); + this.btOK.MouseClick += new System.Windows.Forms.MouseEventHandler(this.btOK_MouseClick); + // + // btCancle + // + this.btCancle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.btCancle.BackColor2 = System.Drawing.Color.Gray; + this.btCancle.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.btCancle.BorderColor = System.Drawing.Color.Gray; + this.btCancle.BorderColorOver = System.Drawing.Color.Gray; + this.btCancle.BorderSize = new System.Windows.Forms.Padding(5); + this.btCancle.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.btCancle.Cursor = System.Windows.Forms.Cursors.Hand; + this.btCancle.Dock = System.Windows.Forms.DockStyle.Fill; + this.btCancle.Font = new System.Drawing.Font("맑은 고딕", 30F, System.Drawing.FontStyle.Bold); + this.btCancle.ForeColor = System.Drawing.Color.White; + this.btCancle.GradientEnable = true; + this.btCancle.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.btCancle.GradientRepeatBG = false; + this.btCancle.isButton = true; + this.btCancle.Location = new System.Drawing.Point(3, 3); + this.btCancle.MouseDownColor = System.Drawing.Color.Yellow; + this.btCancle.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btCancle.msg = null; + this.btCancle.Name = "btCancle"; + this.btCancle.ProgressBorderColor = System.Drawing.Color.Black; + this.btCancle.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.btCancle.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.btCancle.ProgressEnable = false; + this.btCancle.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.btCancle.ProgressForeColor = System.Drawing.Color.Black; + this.btCancle.ProgressMax = 100F; + this.btCancle.ProgressMin = 0F; + this.btCancle.ProgressPadding = new System.Windows.Forms.Padding(0); + this.btCancle.ProgressValue = 0F; + this.btCancle.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80))))); + this.btCancle.Sign = ""; + this.btCancle.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.btCancle.SignColor = System.Drawing.Color.Yellow; + this.btCancle.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.btCancle.Size = new System.Drawing.Size(360, 95); + this.btCancle.TabIndex = 0; + this.btCancle.Text = "Cancel"; + this.btCancle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.btCancle.TextShadow = true; + this.btCancle.TextVisible = true; + this.btCancle.Click += new System.EventHandler(this.btCancle_Click); + // + // dataSet11 + // + this.dataSet11.DataSetName = "DataSet1"; + this.dataSet11.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // fSelectJob + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(751, 761); + this.Controls.Add(this.panel2); + this.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSelectJob"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = " "; + this.TopMost = true; + this.Load += new System.EventHandler(this.@__LoaD); + this.panel2.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.GrpSidConvData.ResumeLayout(false); + this.GrpSidConvData.PerformLayout(); + this.grpapplyjob.ResumeLayout(false); + this.grpapplyjob.PerformLayout(); + this.grpApplySidinfo.ResumeLayout(false); + this.grpApplySidinfo.PerformLayout(); + this.grpApplyWMSinfo.ResumeLayout(false); + this.grpApplyWMSinfo.PerformLayout(); + this.tabPage3.ResumeLayout(false); + this.tabPage3.PerformLayout(); + this.tableLayoutPanel3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataSet11)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private arCtl.arLabel lbTitle; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private arCtl.arLabel btOK; + private arCtl.arLabel btCancle; + private System.Windows.Forms.CheckBox chkUserConfirm; + private System.Windows.Forms.CheckBox chkQtyServer; + private System.Windows.Forms.CheckBox chkNew; + private System.Windows.Forms.CheckBox chkQtyMRQ; + private System.Windows.Forms.CheckBox chkSIDConv; + private System.Windows.Forms.CheckBox chkApplySIDConv; + private System.Windows.Forms.GroupBox grpapplyjob; + private System.Windows.Forms.CheckBox chkDayApplyPart; + private System.Windows.Forms.CheckBox chkDayApplyCust; + private System.Windows.Forms.CheckBox chkDayWhereCust; + private System.Windows.Forms.CheckBox chkDayWherePart; + private System.Windows.Forms.CheckBox chkDayApplySID; + private System.Windows.Forms.CheckBox chkDayWhereSID; + private System.Windows.Forms.CheckBox chkDayApplyVender; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.GroupBox grpApplySidinfo; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.CheckBox chkInfoApplyVender; + private System.Windows.Forms.CheckBox chkInfoWhereSID; + private System.Windows.Forms.CheckBox chkInfoWhereCust; + private System.Windows.Forms.CheckBox chkInfoWherePart; + private System.Windows.Forms.CheckBox chkInfoApplySID; + private System.Windows.Forms.CheckBox chkInfoApplyCust; + private System.Windows.Forms.CheckBox chkInfoApplyPart; + private System.Windows.Forms.CheckBox chkDayApplyPrint; + private System.Windows.Forms.CheckBox chkInfoApplyPrint; + private System.Windows.Forms.GroupBox GrpSidConvData; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private DataSet1 dataSet11; + private System.Windows.Forms.CheckBox chkApplySidInfo; + private System.Windows.Forms.CheckBox chkApplyJobInfo; + private System.Windows.Forms.CheckBox chkInfoSave; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.ComboBox cmbCustCode; + private System.Windows.Forms.CheckBox chkInfoApplyBatch; + private System.Windows.Forms.CheckBox chkDayWhereLot; + private System.Windows.Forms.CheckBox chkInfoWhereLot; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.CheckBox chkCustom; + private arCtl.arLabel lbMsgCamoff; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.CheckBox chkCVSave; + private System.Windows.Forms.CheckBox chkCVApplyBatch; + private System.Windows.Forms.CheckBox chkCVWhereLot; + private System.Windows.Forms.CheckBox chkCVApplyPrint; + private System.Windows.Forms.CheckBox chkCVApplyVender; + private System.Windows.Forms.CheckBox chkCVWhereSID; + private System.Windows.Forms.CheckBox chkCVWhereCust; + private System.Windows.Forms.CheckBox chkCVWherePart; + private System.Windows.Forms.CheckBox chkCVApplySID; + private System.Windows.Forms.CheckBox chkCVApplyCust; + private System.Windows.Forms.CheckBox chkCVApplyPartno; + private System.Windows.Forms.CheckBox chkApplyWMSInfo; + private System.Windows.Forms.GroupBox grpApplyWMSinfo; + private System.Windows.Forms.CheckBox checkBox36; + private System.Windows.Forms.CheckBox chkWMSApplyBatch; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.CheckBox checkBox41; + private System.Windows.Forms.CheckBox checkBox42; + private System.Windows.Forms.CheckBox checkBox43; + private System.Windows.Forms.CheckBox checkBox44; + private System.Windows.Forms.CheckBox checkBox45; + private System.Windows.Forms.CheckBox checkBox46; + private System.Windows.Forms.CheckBox checkBox47; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectJob.cs b/Handler/Project/Dialog/fSelectJob.cs new file mode 100644 index 0000000..6c3f549 --- /dev/null +++ b/Handler/Project/Dialog/fSelectJob.cs @@ -0,0 +1,600 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; + +namespace Project.Dialog +{ + public partial class fSelectJob : Form + { + public fSelectJob() + { + InitializeComponent(); + this.tabControl1.Visible = false; + this.UpdateHeight(); + + this.KeyPreview = true; + this.FormClosing += __Closing; + this.lbTitle.MouseMove += LbTitle_MouseMove; + this.lbTitle.MouseUp += LbTitle_MouseUp; + this.lbTitle.MouseDown += LbTitle_MouseDown; + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) this.Close(); + }; + + if (System.Diagnostics.Debugger.IsAttached == false) + { + //// = new Dialog.fBlurPanel(); + //fb.Show(); + } + this.Text = $"Job Start ({PUB.Result.vModel.Title})"; + + PUB.flag.set(eVarBool.FG_SCR_JOBSELECT, true, "selectjbo"); + PUB.dio.IOValueChanged += Dio_IOValueChanged; + + //var visionoff = PUB.Result.vModel.DisableCamera || (SETTING.Data.Enable_Unloader_QRValidation == false); + List offlist = new List(); + if (SETTING.Data.SystemBypass || PUB.Result.vModel.DisableCamera || SETTING.Data.Enable_Unloader_QRValidation == false) + offlist.Add("Camera"); + if (SETTING.Data.SystemBypass || PUB.Result.vModel.DisablePrinter || (SETTING.Data.Disable_PrinterL && SETTING.Data.Disable_PrinterR)) + offlist.Add("Printer"); + if (offlist.Any()) + { + var msg = "(" + string.Join("/", offlist) + ") usage is turned OFF"; + lbMsgCamoff.Text = msg; + } + + lbMsgCamoff.Visible = offlist.Any(); + } + + List custlist = new List(); + private void __LoaD(object sender, EventArgs e) + { + label1.Text = VAR.BOOL[eVarBool.Use_Conveyor] ? "CONVEYOR ON" : "CONVEYOR OFF"; + lbTitle.Text = PUB.Result.vModel.Title; + var codelist = PUB.Result.vModel.Code.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + + this.cmbCustCode.Items.Clear(); + foreach (var item in codelist) + if (item.isEmpty() == false) cmbCustCode.Items.Add(item); + + //마지막에 등록된데이터 기준으로 추가 + custlist = SETTING.User.customerlist.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + foreach (var item in custlist) + { + cmbCustCode.Items.Add(item.Trim()); + } + + + if (cmbCustCode.Items.Count > 0) + cmbCustCode.SelectedIndex = 0; + + //자료를 조회하고 대표 코드가 잇으면 처리한다. 221013 + var taSID = new DataSet1TableAdapters.SidinfoCustGroupTableAdapter(); + var dtcustgrp = taSID.GetData(); + if (dtcustgrp != null && dtcustgrp.Count == 1) + cmbCustCode.Text = dtcustgrp.First().CustCode; + + //프리셋가져온다 + var ta = new DataSet1TableAdapters.K4EE_Component_Reel_PreSetTableAdapter(); + ta.Fill(this.dataSet11.K4EE_Component_Reel_PreSet, "R1"); + + //작업형태를 다시 시작해준다. - 210329 + if (PUB.Result.JobType2.isEmpty()) PUB.Result.JobType2 = "Model Info"; + Func_SelectJobType("M"); + } + + //그룹박스내의 아이템중에 Black,blue 아이템갯수를 반환한다 + Tuple CheckDataIn(GroupBox g) + { + int black = 0; + int blue = 0; + foreach (var item in g.Controls) + { + if (item.GetType() == typeof(CheckBox)) + { + var chk = item as CheckBox; + if (chk.Checked == false) continue; + if (chk.ForeColor == Color.Blue) + blue += 1; + else black += 1; + } + } + return new Tuple(black, blue); + + } + + private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e) + { + if (AR.SETTING.Data.Enable_ButtonStart) + { + var pin = (eDIName)e.ArrIDX; + if (DIO.GetIOInput(pin) == true) + { + if (pin == eDIName.BUT_STARTF) this.Confirm(); + else if (pin == eDIName.BUT_STOPF || pin == eDIName.BUT_RESETF) this.Cancel(); + } + } + } + + + void Confirm() + { + if (this.InvokeRequired) + this.BeginInvoke(new MethodInvoker(Confirm), null); + else + { + if (System.Diagnostics.Debugger.IsAttached) this.TopMost = false; + this.Validate(); + + if (this.ModeData.isEmpty() || this.ModeData == "--") + { + UTIL.MsgE("Work method is not selected"); + return; + } + if (this.ModeData == "--") + { + UTIL.MsgE("Unusable work method"); + return; + } + if (GrpSidConvData.Enabled) + { + //검색조건확인 + var v = CheckDataIn(GrpSidConvData); + if (v.Item1 < 1) + { + UTIL.MsgE("Target item is not specified among server record items"); + return; + } + if (v.Item2 < 1) + { + UTIL.MsgE("Search item is not specified among server record items"); + return; + } + } + if (grpapplyjob.Enabled) + { + //검색조건확인 + var v = CheckDataIn(grpapplyjob); + if (v.Item1 < 1) + { + UTIL.MsgE("Target item is not specified among daily work items"); + return; + } + if (v.Item2 < 1) + { + UTIL.MsgE("Search item is not specified among daily work items"); + return; + } + } + if (grpApplyWMSinfo.Enabled) + { + //검색조건확인 + var v = CheckDataIn(grpApplyWMSinfo); + if (v.Item1 < 1) + { + UTIL.MsgE("Target item is not specified among WMS information items"); + return; + } + if (v.Item2 < 1) + { + UTIL.MsgE("Search item is not specified among WMS information items"); + return; + } + } + if (grpApplySidinfo.Enabled) + { + //검색조건확인 + var v = CheckDataIn(grpApplySidinfo); + if (v.Item1 < 1) + { + UTIL.MsgE("Target item is not specified among SID information items"); + return; + } + if (v.Item2 < 1) + { + UTIL.MsgE("Search item is not specified among SID information items"); + return; + } + } + + if (chkCustom.Checked) PUB.MCCode = AR.SETTING.Data.McName; + else PUB.MCCode = "R0"; + + var curcust = this.cmbCustCode.Text.Trim(); + if (curcust.isEmpty() == false) + { + //신규코드는 저장한다 + if (this.custlist.Contains(curcust) == false) // + { + this.custlist.Insert(0, curcust); + if (this.custlist.Count > 10) this.custlist.RemoveAt(custlist.Count - 1); + SETTING.User.customerlist = string.Join(";", this.custlist); + SETTING.User.Save(); + } + } + + //230509 + if (chkSIDConv.Checked) + { + try + { + //sid정보테이블을 다시 불러온다 + var taConv = new DataSet1TableAdapters.K4EE_Component_Reel_SID_ConvertTableAdapter(); + PUB.Result.DTSidConvert.Clear(); + taConv.Fill(PUB.Result.DTSidConvert); + PUB.Result.DTSidConvert.AcceptChanges(); + PUB.Result.DTSidConvertEmptyList.Clear(); + PUB.Result.DTSidConvertMultiList.Clear(); + PUB.log.Add($"sid conversion table {PUB.Result.DTSidConvert.Rows.Count} cases confirmed"); + } + catch (Exception ex) + { + UTIL.MsgE("SID conversion information check failed\n" + ex.Message); + return; + } + } + + //작업형태 지정 + PUB.Result.JobType2 = this.ModeData; + + + + PUB.flag.set(eVarBool.FG_ENABLE_LEFT, AR.SETTING.Data.Disable_Left == false, "START"); + PUB.flag.set(eVarBool.FG_ENABLE_RIGHT, AR.SETTING.Data.Disable_Right == false, "START"); + + //옵션사항 설정 210121 + VAR.BOOL[eVarBool.Opt_UserConfim] = chkUserConfirm.Checked; + VAR.BOOL[eVarBool.Opt_ServerQty] = chkQtyServer.Checked; + VAR.BOOL[eVarBool.Opt_NewReelID] = chkNew.Checked; + VAR.BOOL[eVarBool.Opt_UserQtyRQ] = chkQtyMRQ.Checked; + VAR.BOOL[eVarBool.Opt_SIDConvert] = chkSIDConv.Checked; + + VAR.BOOL[eVarBool.Opt_ApplySIDConv] = chkApplySIDConv.Checked; + VAR.BOOL[eVarBool.Opt_ApplyJobInfo] = chkApplyJobInfo.Checked; + VAR.BOOL[eVarBool.Opt_ApplyWMSInfo] = chkApplyWMSInfo.Checked; + VAR.BOOL[eVarBool.Opt_ApplySIDInfo] = chkApplySidInfo.Checked; + VAR.BOOL[eVarBool.Opt_CheckSIDExist] = PUB.Result.vModel.CheckSIDExsit; + + //모델에서 카메라 사용을 끄거나, 환경설정에서 QRValidation 을 사용하지 않는 경우 + if (SETTING.Data.SystemBypass) VAR.BOOL[eVarBool.Opt_DisableCamera] = true; + else VAR.BOOL[eVarBool.Opt_DisableCamera] = PUB.Result.vModel.DisableCamera || (SETTING.Data.Enable_Unloader_QRValidation == false); + + //BYPASS MODEL,모델에서 프린터가 껴져있거나, 환경설정에서 양쪽의 프린터를 사용하지 않는 경우 + if (SETTING.Data.SystemBypass) VAR.BOOL[eVarBool.Opt_DisablePrinter] = true; + else VAR.BOOL[eVarBool.Opt_DisablePrinter] = PUB.Result.vModel.DisablePrinter || (SETTING.Data.Disable_PrinterL && SETTING.Data.Disable_PrinterR); + + + //WMS Information + VAR.BOOL[eVarBool.Opt_WMS_Apply_PartNo] = checkBox47.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Apply_CustCode] = checkBox46.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Apply_SID] = checkBox45.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Apply_VenderName] = checkBox41.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Apply_batch] = chkWMSApplyBatch.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Apply_qty] = false;// chkInfoApplyQty.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Apply_MFG] = checkBox2.Checked; + + VAR.BOOL[eVarBool.Opt_WMS_Where_PartNo] = checkBox44.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Where_CustCode] = checkBox43.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Where_SID] = checkBox42.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Where_VLOT] = checkBox36.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Where_MC] = false;// chkInfoWhereMC.Checked; + VAR.BOOL[eVarBool.Opt_WMS_Where_MFG] = checkBox1.Checked; + VAR.BOOL[eVarBool.Opt_WMS_WriteServer] = false;// chkInfoSave.Checked; + + + //SID Information + VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo] = chkInfoApplyPart.Checked; + VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode] = chkInfoApplyCust.Checked; + VAR.BOOL[eVarBool.Opt_SID_Apply_SID] = chkInfoApplySID.Checked; + VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName] = chkInfoApplyVender.Checked; + VAR.BOOL[eVarBool.Opt_SID_Apply_PrintPos] = chkInfoApplyPrint.Checked; + VAR.BOOL[eVarBool.Opt_SID_Apply_batch] = chkInfoApplyBatch.Checked; + VAR.BOOL[eVarBool.Opt_SID_Apply_qty] = false;// chkInfoApplyQty.Checked; + + VAR.BOOL[eVarBool.Opt_SID_Where_PartNo] = chkInfoWherePart.Checked; + VAR.BOOL[eVarBool.Opt_SID_Where_CustCode] = chkInfoWhereCust.Checked; + VAR.BOOL[eVarBool.Opt_SID_Where_SID] = chkInfoWhereSID.Checked; + VAR.BOOL[eVarBool.Opt_SID_Where_VLOT] = chkInfoWhereLot.Checked; + VAR.BOOL[eVarBool.Opt_SID_Where_MC] = false;// chkInfoWhereMC.Checked; + VAR.BOOL[eVarBool.Opt_SID_WriteServer] = chkInfoSave.Checked; + + + VAR.BOOL[eVarBool.Opt_Job_Apply_PartNo] = chkDayApplyPart.Checked; + VAR.BOOL[eVarBool.Opt_Job_Apply_CustCode] = chkDayApplyCust.Checked; + VAR.BOOL[eVarBool.Opt_Job_Apply_SID] = chkDayApplySID.Checked; + VAR.BOOL[eVarBool.Opt_Job_Apply_VenderName] = chkDayApplyVender.Checked; + VAR.BOOL[eVarBool.Opt_Job_Apply_PrintPos] = chkDayApplyPrint.Checked; + + VAR.BOOL[eVarBool.Opt_Job_Where_PartNo] = chkDayWherePart.Checked; + VAR.BOOL[eVarBool.Opt_Job_Where_CustCode] = chkDayWhereCust.Checked; + VAR.BOOL[eVarBool.Opt_Job_Where_SID] = chkDayWhereSID.Checked; + VAR.BOOL[eVarBool.Opt_Job_Where_VLOT] = chkDayWhereLot.Checked; + + VAR.BOOL[eVarBool.Opt_Conv_Apply_PartNo] = chkCVApplyPartno.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Apply_CustCode] = chkCVApplyCust.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Apply_SID] = chkCVApplySID.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Apply_VenderName] = chkCVApplyVender.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Apply_PrintPos] = chkCVApplyPrint.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Apply_Batch] = chkCVApplyBatch.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Apply_QtyMax] = false;// chkCVApplyQtyMax.Checked; + + VAR.BOOL[eVarBool.Opt_Conv_Where_PartNo] = chkCVWherePart.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Where_CustCode] = chkCVWhereCust.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Where_SID] = chkCVWhereSID.Checked; + VAR.BOOL[eVarBool.Opt_Conv_Where_VLOT] = chkCVWhereLot.Checked; + VAR.BOOL[eVarBool.Opt_Conv_WriteServer] = chkCVSave.Checked; + + VAR.STR[eVarString.JOB_CUSTOMER_CODE] = cmbCustCode.Text.Trim(); + //VAR.STR[eVarString.JOB_BYPASS_SID] = tbBypassSID.Text.Trim(); //add bypass sid 230511 + // VAR.STR[eVarString.JOB_TYPE] = tbJobtype.Text.Trim(); + this.DialogResult = DialogResult.OK; + } + + } + void Cancel() + { + if (this.InvokeRequired) + this.BeginInvoke(new MethodInvoker(Cancel), null); + else + this.Close(); + } + + void __Closing(object sender, FormClosingEventArgs e) + { + // if (fb != null) fb.Dispose(); + PUB.dio.IOValueChanged -= Dio_IOValueChanged; + PUB.flag.set(eVarBool.FG_SCR_JOBSELECT, false, "selectjbo"); + } + + + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + + + + private void btCancle_Click(object sender, EventArgs e) + { + Cancel(); + } + + + arCtl.arLabel[] btsMOD; + string ModeData = string.Empty; + void Func_SelectJobType(string mode) + { + if (mode.Equals("--")) + { + UTIL.MsgE("Unusable button"); + return; + } + ModeData = mode; + + var dr = PUB.Result.vModel; + + //update checkbox + foreach (var c in tabPage1.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Checked = UTIL.GetBitState(dr.vOption, int.Parse(chk.Tag.ToString())); + } + foreach (var c in grpApplyWMSinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Checked = UTIL.GetBitState(dr.vWMSInfo, int.Parse(chk.Tag.ToString())); + } + foreach (var c in grpApplySidinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Checked = UTIL.GetBitState(dr.vSIDInfo, int.Parse(chk.Tag.ToString())); + } + foreach (var c in grpapplyjob.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Checked = UTIL.GetBitState(dr.vJobInfo, int.Parse(chk.Tag.ToString())); + } + foreach (var c in GrpSidConvData.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + chk.Checked = UTIL.GetBitState(dr.vSIDConv1, int.Parse(chk.Tag.ToString())); + } + + //프린터를 사용하지 않는다면 코드입력창 비활성화 + if (dr.DisablePrinter) + { + cmbCustCode.Text = "0000"; + cmbCustCode.Enabled = false; + button1.Enabled = false; + } + + } + + + + private void checkBox1_CheckStateChanged(object sender, EventArgs e) + { + var chk = sender as CheckBox; + chk.ForeColor = chk.Checked ? Color.Blue : Color.Gray; + + if (chk.Name.Equals(chkApplyJobInfo.Name)) + { + grpapplyjob.Enabled = chk.Checked; + } + if(chk.Name.Equals(chkApplyWMSInfo.Name)) + { + grpApplyWMSinfo.Enabled = chk.Checked; + } + if (chk.Name.Equals(chkApplySidInfo.Name)) + { + grpApplySidinfo.Enabled = chk.Checked; + } + if (chk.Name.Equals(chkApplySIDConv.Name)) + { + GrpSidConvData.Enabled = chk.Checked; + } + } + + + + private void btOK_MouseClick(object sender, MouseEventArgs e) + { + + + + + } + + + private void 옵션적용ToolStripMenuItem_Click(object sender, EventArgs e) + { + //현재선택된 옵션을 변경한다 + var ctl = UTIL.GetContextOwnerControl(sender); + if (ctl == null) return; + var bt = ctl as arCtl.arLabel; + var txt = bt.Text.Trim(); + + var tagstr = bt.Tag.ToString(); + if (tagstr == "M") //모델기본 + { + UTIL.MsgI("This model is a default model. Please update it on the [Work Model] screen"); + } + else + { + var dlg = UTIL.MsgQ($"Do you want to change the {txt} item option to the current value??"); + if (dlg != DialogResult.Yes) return; + + var dr = this.dataSet11.K4EE_Component_Reel_PreSet.Where(t => t.Title == txt).FirstOrDefault(); + if (dr == null) + { + UTIL.MsgE("Preset information not found, creating new preset"); + return; + } + dr.MC = "R1";// AR.SETTING.Data.McName; + // dr.jobtype = tbJobtype.Text; + //dr.bypasssid = tbBypassSID.Text; + //assig check events + foreach (var c in tabPage1.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + dr.vOption = UTIL.SetBitState((ushort)dr.vOption, int.Parse(chk.Tag.ToString()), chk.Checked); + } + foreach (var c in grpApplyWMSinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + dr.vWMSInfo = UTIL.SetBitState((ushort)dr.vWMSInfo, int.Parse(chk.Tag.ToString()), chk.Checked); + } + foreach (var c in grpApplySidinfo.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + dr.vSidInfo = UTIL.SetBitState((ushort)dr.vSidInfo, int.Parse(chk.Tag.ToString()), chk.Checked); + } + foreach (var c in grpapplyjob.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + dr.vJobInfo = UTIL.SetBitState((ushort)dr.vJobInfo, int.Parse(chk.Tag.ToString()), chk.Checked); + } + foreach (var c in GrpSidConvData.Controls) + { + if (c.GetType() != typeof(CheckBox)) continue; + var chk = c as CheckBox; + if (chk.Tag == null) continue; + dr.vServerWrite = UTIL.SetBitState((ushort)dr.vServerWrite, int.Parse(chk.Tag.ToString()), chk.Checked); + } + dr.EndEdit(); + + var ta = new DataSet1TableAdapters.K4EE_Component_Reel_PreSetTableAdapter(); + var rlt = ta.Update(this.dataSet11.K4EE_Component_Reel_PreSet) == 1; + if (rlt == false) UTIL.MsgE("Change failed"); + } + + + } + + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + + } + + private void button1_Click(object sender, EventArgs e) + { + this.TopMost = false; + var f = new AR.Dialog.fTouchKeyFull("CUSTOMER CODE", cmbCustCode.Text.Trim()); + if (f.ShowDialog() == DialogResult.OK) + { + cmbCustCode.Text = f.tbInput.Text.Trim(); + if (cmbCustCode.Text.isEmpty() == false) + { + if (cmbCustCode.Text.Length == 3) + cmbCustCode.Text = "0" + cmbCustCode.Text; + } + } + this.TopMost = true; + } + + private void lbTitle_Click(object sender, EventArgs e) + { + this.tabControl1.Visible = !tabControl1.Visible; + UpdateHeight(); + } + + void UpdateHeight() + { + if (this.tabControl1.Visible) this.Height = 755; + else this.Height = 420; + } + + private void btOK_Click(object sender, EventArgs e) + { + Confirm(); + } + } +} diff --git a/Handler/Project/Dialog/fSelectJob.resx b/Handler/Project/Dialog/fSelectJob.resx new file mode 100644 index 0000000..6a6a9dc --- /dev/null +++ b/Handler/Project/Dialog/fSelectJob.resx @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 124, 17 + + + 60 + + + + + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWqUeEVyo + H1Bbpx59W6gepVunH8xbqB7gW6gf7lqoH/1aqB/9W6gf7luoHuBaqB/LW6gepVunHn1apyBPX68fEAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2n + ISZaqB+BW6cfzFunH/xbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1unH/xaqB/LWqgfgVypHCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA/vwAEW6keXFunHsZbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cexlupHlw/vwAEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAD+/AARaqR5lWqcf3luoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf3FqnHmM/vwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFynHjpapx7QW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gezluoHzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX58fCFqnHpVbpx/+W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9aqB/9W6gfkUi2 + JAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWaUbJVunHs9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB7OWaUbJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWqgfQVun + HvBbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qnHu9ZqSA/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAW6YeVFunHvhbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqge91um + H1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAWqcfUlunH/xbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bpx/8W6YdTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXKYeQlunHvlbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1unHvhcph5CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6kgJ1unHvBbqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//Zq4u/3CzPP9cqSH/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6ce8Fyp + HCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVKkcCVqn + HtBbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9cqCD/u9uj//7+/f//////5PHa/3O1QP9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9apx/NSLYkBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFuoHpZbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//k8Zr//////////////////// + ///P5r7/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qnH5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFmqHTxbpx/+W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7bY + nP//////////////////////8fjt/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9aqB/9W6gfOAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/AARbqB7RW6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/+726P///////////////////////X68v9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1unHs9VqgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbqCBnW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//u9uj///////////////////////1+vL/W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6geZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA/vwAEWqcf3luoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7vbo/////////////// + ////////9fry/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH9w/vwAEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAXKgdXluoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/+726P///////////////////////X68v9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//WageWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqoHshbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//u9uj///////////////////////1+vL/W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1unHsYAAAAAAAAAAAAAAAAAAAAAAAAAAFmlHyhbqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7vbo///////////////////////9fry/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//XKkcJAAAAAAAAAAAAAAAAAAA + AABaqB6EW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/+726P///////// + //////////////X68v9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qo + H4EAAAAAAAAAAAAAAAAAAAAAW6gezluoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//u9uj///////////////////////1+vL/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9aqB/LAAAAAAAAAAAAAAAAXa4aE1qoH/1bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//dbZC//D36v///////////////////////////6nRif9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/FqlHhEAAAAAAAAAAFumH1FbqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v////////////////////////////// + ////////qdGJ/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9apyBPAAAAAAAA + AABbpx+AW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v////////////// + ///2+vP/1+rJ//////////////////////+p0Yn/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6cefgAAAAAAAAAAWqcepluoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D3 + 6v/////////////////2+vP/gLxS/1+qJP/N5bv//////////////////////6nRif9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1unH6QAAAAAAAAAAFuoHs5bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//X6ok/83lu/////////////// + ////////qdGJ/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9aqB/LAAAAAAAAAABapx7hW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uo + H/9fqiT/zeW7//////////////////////+p0Yn/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqce4QAA + AAAAAAAAW6ce8FuoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1+qJP/N5bv//////////////////////6nRif9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1qnHu8AAAAAAAAAAFqoH/1bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v////////////// + ///2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//X6ok/83lu/////////////// + ////////qdGJ/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx/8AAAAAAAAAABaqB/9W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9gqyb/q9KM/3a2RP9bqB//W6gf/1uoH/9bqB//dbZC//D3 + 6v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9fqiT/zeW7//////////////////////+p0Yn/W6gf/1uoH/9bqB//W6gf/1+qJP+o0Yj/e7lL/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/AAAAAAAAAAAW6ce8Fuo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//kMRn///////z+e7/erhJ/1uo + H/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1+qJP/N5bv//////////////////////6nRif9bqB//W6gf/1+q + JP/O5bz//////9Dmv/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qn + Hu8AAAAAAAAAAFqnHuFbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7PX + l/////////////P57v97uUr/dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//X6ok/83lu/////////////// + ////////qdGJ/1+qJP/O5bz////////////y+O3/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9apx7hAAAAAAAAAABbqB7OW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH//W6cf/////////////////8/nu//D36v/////////////////2+vP/gLxS/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9fqiT/zeW7///////////////////////l8dv//////////////////////3K0P/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//WqgfywAAAAAAAAAAWqcepluoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9dqSL/9/v0//////////////////////////////////// + ///2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1+qJP/N5bv///////////////////////////////////////// + //+Uxm3/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1unH6QAAAAAAAAAAFun + H4BbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//ebhH//////////////////// + ///////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//X6ok/83lu/////////////// + ////////////////////////uNmd/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bpx5+AAAAAAAAAABapx9SW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/5vK + dv//////////////////////////////////////8fjt/3m4SP9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/12p + Iv/E4K7//////////////////////////////////////9rszf9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//WqcgTwAAAAAAAAAAXa4aE1qoH/1bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/+/3af////////////////////////////////////////////x+O3/ebhI/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/12pIv/E4K7////////////////////////////////////////////6/Pj/X6ok/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/FqlHhEAAAAAAAAAAAAAAABapx7QW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//4e/W//////////////////////////////////// + //////////////H47f91tkP/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH//C36z///////////////////////////////////////// + /////////////3y5TP9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1unH8wAAAAAAAAAAAAA + AAAAAAAAWqgehVuoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Yqwp//3+/P////////////// + ////////////////////////////////////////ptCG/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9hqyj//P37//////////////////// + //////////////////////////////////+gzX3/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9aqB+CAAAAAAAAAAAAAAAAAAAAAF2nHylbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/4O9 + Vf//////////////////////////////////////8ffs/87lvP+r043/iMBc/16pI/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/3W2 + Qv+gzX3/w9+t/+by3f/+//7/////////////////////////////////wd6r/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//WaUbJQAAAAAAAAAAAAAAAAAAAAAAAAAAWqcfyluoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/+Wx3D////////////5/Pf/2evL/7bYnP+Uxmz/cLM8/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Za0t/4nAXf+r043/zuW8//H47f///////////9jq + yf9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//WqcexwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqn + H2BbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Xqoj/5DEaP97uUv/Xqkj/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//cLM8/5PGa/91tkP/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1upHlwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA/vwAEW6ge31uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H90/vwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFuoH2pbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9apx5mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vwAEWqcf01uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx7PP78ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFunHT1bpx/+W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx/+XKceOgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6cel1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gflAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGayGQpbqB7RW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gezl+fHwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAWaUfKFunHvBbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6ce8F2nISYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcph5CW6ce+VuoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6ce+VymHkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqoHlVbpx/8W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/FumH1EAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAW6YeVFunHvhbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6ce+Fum + HlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbpx5DWqce8luoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//Wqge8VqoH0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFmlHyhapx/TW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6cez12nISYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAVKkcCVqnHphbpx/+W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx/+W6cel1+fHwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6cdPVqnH9NbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB7RWqgeOwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vwAEWqYea1uo + Ht9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qnH95bqCBnP78ABAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABmmTMFW6kgX1unHslbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqcex1up + IF8/vwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWaUfKFunHoZapx7QWqgf/Vuo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqgf/Vuo + Hs5aqB6EWaUfKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAF2uGhNapx9SW6cfgFunHqdapx/NW6ge4luoH+5bpx/+W6cf/luoH+5bqB7iWqcfzVun + Hqdbpx+AW6YfUV2uGhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//////////////8AAP//////+AAAH//////AAAAD/////wAAAAD////+AAAAAH////gAAAAA + H///8AAAAAAP///gAAAAAAf//8AAAAAAA///gAAAAAAB//8AAAAAAAD//gAAAAAAAH/8AAAAAAAAP/wA + AAAAAAA/+AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAP4AAAAAAAAAfgAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA8AAAAAAAAADgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA + AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AA + AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAAP+AAAAAAAAB/8AAAAAAAAP/wAAAAAAAA//gAAAAAA + AH//AAAAAAAA//+AAAAAAAH//8AAAAAAA///4AAAAAAH///wAAAAAA////gAAAAAH////gAAAAB///// + AAAAAP/////AAAAD//////gAAB///////wAA//////////////8= + + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectResult.Designer.cs b/Handler/Project/Dialog/fSelectResult.Designer.cs new file mode 100644 index 0000000..f431a47 --- /dev/null +++ b/Handler/Project/Dialog/fSelectResult.Designer.cs @@ -0,0 +1,137 @@ +namespace Project.Dialog +{ + partial class fSelectResult + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.lv1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader6 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader7 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(0, 493); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(932, 55); + this.button1.TabIndex = 1; + this.button1.Text = "Select Confirm"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // lv1 + // + this.lv1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3, + this.columnHeader5, + this.columnHeader6, + this.columnHeader7, + this.columnHeader4}); + this.lv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.lv1.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lv1.FullRowSelect = true; + this.lv1.GridLines = true; + this.lv1.Location = new System.Drawing.Point(0, 0); + this.lv1.Name = "lv1"; + this.lv1.Size = new System.Drawing.Size(932, 493); + this.lv1.TabIndex = 2; + this.lv1.UseCompatibleStateImageBehavior = false; + this.lv1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "TIME"; + this.columnHeader1.Width = 120; + // + // columnHeader2 + // + this.columnHeader2.Text = "SID"; + this.columnHeader2.Width = 120; + // + // columnHeader3 + // + this.columnHeader3.Text = "RID"; + this.columnHeader3.Width = 130; + // + // columnHeader4 + // + this.columnHeader4.Text = "QTY"; + this.columnHeader4.Width = 80; + // + // columnHeader5 + // + this.columnHeader5.Text = "CUST"; + this.columnHeader5.Width = 100; + // + // columnHeader6 + // + this.columnHeader6.Text = "V.LOT"; + this.columnHeader6.Width = 140; + // + // columnHeader7 + // + this.columnHeader7.Text = "V.NAME"; + this.columnHeader7.Width = 130; + // + // fSelectResult + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(932, 548); + this.Controls.Add(this.lv1); + this.Controls.Add(this.button1); + this.Font = new System.Drawing.Font("맑은 고딕", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSelectResult"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Please select a value (Only empty data will be extracted from the selection)"; + this.Load += new System.EventHandler(this.fSelectDataList_Load); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ListView lv1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader4; + private System.Windows.Forms.ColumnHeader columnHeader5; + private System.Windows.Forms.ColumnHeader columnHeader6; + private System.Windows.Forms.ColumnHeader columnHeader7; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectResult.cs b/Handler/Project/Dialog/fSelectResult.cs new file mode 100644 index 0000000..71b5f5c --- /dev/null +++ b/Handler/Project/Dialog/fSelectResult.cs @@ -0,0 +1,61 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSelectResult : Form + { + public DataSet1.K4EE_Component_Reel_ResultRow SelectedValue = null; + public fSelectResult(DataSet1.K4EE_Component_Reel_ResultDataTable list) + { + InitializeComponent(); + this.lv1.Items.Clear(); + foreach (DataSet1.K4EE_Component_Reel_ResultRow item in list) + { + var dt = (DateTime)item.wdate; + var lv = this.lv1.Items.Add(dt.ToString("dd HH:mm:ss")); + var std = new StdLabelPrint.CAmkorSTDBarcode(item.QR); + lv.SubItems.Add(item.SID); + lv.SubItems.Add(item.RID); + var custcode = item.RID.Substring(2, 4); + lv.SubItems.Add(custcode); + lv.SubItems.Add(std.VLOT); + lv.SubItems.Add(item.VNAME); + lv.SubItems.Add(item.QTY.ToString()); + lv.Tag = item; + } + + this.KeyDown += FSelectDataList_KeyDown; + } + + private void FSelectDataList_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) this.Close(); + } + + private void fSelectDataList_Load(object sender, EventArgs e) + { + + } + + private void button1_Click(object sender, EventArgs e) + { + if (this.lv1.FocusedItem == null) + { + UTIL.MsgE("Please select an item\n\nPress ESC key or close button to cancel"); + return; + } + this.SelectedValue = this.lv1.FocusedItem.Tag as DataSet1.K4EE_Component_Reel_ResultRow; + this.DialogResult = DialogResult.OK; + + } + } +} diff --git a/Handler/Project/Dialog/fSelectResult.resx b/Handler/Project/Dialog/fSelectResult.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fSelectResult.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectSID.Designer.cs b/Handler/Project/Dialog/fSelectSID.Designer.cs new file mode 100644 index 0000000..648127d --- /dev/null +++ b/Handler/Project/Dialog/fSelectSID.Designer.cs @@ -0,0 +1,123 @@ + +namespace Project.Dialog +{ + partial class fSelectSID + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.button1 = new System.Windows.Forms.Button(); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(15, 21); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(633, 60); + this.label1.TabIndex = 0; + this.label1.Text = "Multiple SID conversion information has been found.\r\nPlease select the data to use from the SID list below and press \"OK\"."; + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader2, + this.columnHeader1, + this.columnHeader3}); + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.HideSelection = false; + this.listView1.Location = new System.Drawing.Point(16, 107); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(652, 205); + this.listView1.TabIndex = 1; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "New SID"; + this.columnHeader1.Width = 200; + // + // columnHeader3 + // + this.columnHeader3.Text = "Cust#"; + this.columnHeader3.Width = 300; + // + // button1 + // + this.button1.Font = new System.Drawing.Font("맑은 고딕", 25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.button1.Location = new System.Drawing.Point(16, 327); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(652, 66); + this.button1.TabIndex = 2; + this.button1.Text = "OK"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // columnHeader2 + // + this.columnHeader2.Text = "Old SID"; + this.columnHeader2.Width = 200; + // + // fSelectSID + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(685, 413); + this.Controls.Add(this.button1); + this.Controls.Add(this.listView1); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSelectSID"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fSelectSID"; + this.Load += new System.EventHandler(this.fSelectSID_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.ColumnHeader columnHeader2; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectSID.cs b/Handler/Project/Dialog/fSelectSID.cs new file mode 100644 index 0000000..c6f40bf --- /dev/null +++ b/Handler/Project/Dialog/fSelectSID.cs @@ -0,0 +1,97 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSelectSID : Form + { + + public string Value = string.Empty; + public fSelectSID(List list) + { + InitializeComponent(); + //this.listView1.Columns[1].Text = aftercolumnname; + + this.listView1.Columns[0].Text = "Old SID"; + this.listView1.Columns[1].Text = "New SID"; + //this.listView1.Columns[2].Text = "106"; + //this.listView1.Columns[3].Text = "--"; + + this.listView1.Items.Clear(); + foreach (var item in list) + { + var buf = item.Split(';'); + + var lv = this.listView1.Items.Add(buf[0].Trim()); //101 + if (buf.Length > 1) lv.SubItems.Add(buf[1].Trim()); //103; + else lv.SubItems.Add(string.Empty); + //if (buf.Length > 2) lv.SubItems.Add(buf[2].Trim()); //103; + //else lv.SubItems.Add(string.Empty); + //if (buf.Length > 3) lv.SubItems.Add(buf[3].Trim()); //103; + //lv.SubItems.Add(string.Empty); + } + this.listView1.FocusedItem = null; + } + + private void button1_Click(object sender, EventArgs e) + { + Value = string.Empty; + if (this.listView1.SelectedItems != null && this.listView1.SelectedItems.Count == 1) + { + var lv = this.listView1.SelectedItems[0]; + Value = string.Format("{0};{1}", lv.SubItems[0].Text, lv.SubItems[1].Text); + } + else if (this.listView1.FocusedItem != null) + { + var lv = this.listView1.FocusedItem; + Value = string.Format("{0};{1}", lv.SubItems[0].Text, lv.SubItems[1].Text); + } + + if (Value.isEmpty() == false) + DialogResult = DialogResult.OK; + } + + private void fSelectSID_Load(object sender, EventArgs e) + { + // 모든데이터를 확인하고 마지막 customer 정보를 확인하.ㄴㄷ + + foreach (ListViewItem lv in this.listView1.Items) + { + var sidNew = lv.SubItems[1].Text; + if (sidNew.isEmpty()) lv.SubItems.Add("--"); + else + { + using (var db = new DataSet1TableAdapters.K4EE_Component_Reel_SID_InformationTableAdapter()) + { + var list = db.GetbySIDNoCustCode(PUB.MCCode, sidNew).ToList(); + if (list.Any() == true) + { + var buffer = new System.Text.StringBuilder(); + foreach (var custinfo in list) + { + if (buffer.Length > 0) buffer.Append(","); + buffer.Append(string.Format("[{0}] {1}", custinfo.CustCode,custinfo.CustName)); + } + lv.SubItems.Add(buffer.ToString()); //cust info + } + else + { + ///자료가 없다 + lv.SubItems.Add("No information"); + } + } + } + + } + + } + } +} diff --git a/Handler/Project/Dialog/fSelectSID.resx b/Handler/Project/Dialog/fSelectSID.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Dialog/fSelectSID.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectSIDInformation.Designer.cs b/Handler/Project/Dialog/fSelectSIDInformation.Designer.cs new file mode 100644 index 0000000..746fa6d --- /dev/null +++ b/Handler/Project/Dialog/fSelectSIDInformation.Designer.cs @@ -0,0 +1,635 @@ +namespace Project.Dialog +{ + partial class fSelectSIDInformation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSelectSIDInformation)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + this.tbSID = new System.Windows.Forms.TextBox(); + this.tbLot = new System.Windows.Forms.TextBox(); + this.tbMFG = new System.Windows.Forms.TextBox(); + this.lnkBatch = new System.Windows.Forms.LinkLabel(); + this.tbBatch = new System.Windows.Forms.TextBox(); + this.button4 = new System.Windows.Forms.Button(); + this.linkLabel7 = new System.Windows.Forms.LinkLabel(); + this.linkLabel5 = new System.Windows.Forms.LinkLabel(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.tbPart = new System.Windows.Forms.TextBox(); + this.linkLabel8 = new System.Windows.Forms.LinkLabel(); + this.TbCustCode = new System.Windows.Forms.TextBox(); + this.linkLabel6 = new System.Windows.Forms.LinkLabel(); + this.tbVName = new System.Windows.Forms.TextBox(); + this.button5 = new System.Windows.Forms.Button(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.lbExecuteSQL = new System.Windows.Forms.ToolStripStatusLabel(); + this.bn = new System.Windows.Forms.BindingNavigator(this.components); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.dsWMS = new Project.dsWMS(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.dv1 = new System.Windows.Forms.DataGridView(); + this.idxDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.sIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewButtonColumn(); + this.pARTNODataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.vENDORNMDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bATCHNODataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.cUSTCODEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.vENDORLOTDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mFGDATEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qTYDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.panDv = new System.Windows.Forms.Panel(); + this.btOK = new System.Windows.Forms.Button(); + this.panel3 = new System.Windows.Forms.Panel(); + this.ta = new Project.dsWMSTableAdapters.VW_GET_MAX_QTY_VENDOR_LOTTableAdapter(); + this.tam = new Project.dsWMSTableAdapters.TableAdapterManager(); + this.statusStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit(); + this.bn.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dsWMS)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); + this.panDv.SuspendLayout(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + // + // tbSID + // + this.tbSID.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.tbSID.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbSID.Location = new System.Drawing.Point(113, 8); + this.tbSID.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbSID.Name = "tbSID"; + this.tbSID.Size = new System.Drawing.Size(288, 31); + this.tbSID.TabIndex = 1; + this.tbSID.Tag = ""; + this.tbSID.Click += new System.EventHandler(this.tbDate_Click); + // + // tbLot + // + this.tbLot.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbLot.Location = new System.Drawing.Point(113, 44); + this.tbLot.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbLot.Name = "tbLot"; + this.tbLot.Size = new System.Drawing.Size(288, 31); + this.tbLot.TabIndex = 1; + this.tbLot.Tag = ""; + this.tbLot.Click += new System.EventHandler(this.tbDate_Click); + // + // tbMFG + // + this.tbMFG.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbMFG.Location = new System.Drawing.Point(502, 80); + this.tbMFG.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbMFG.Name = "tbMFG"; + this.tbMFG.Size = new System.Drawing.Size(239, 31); + this.tbMFG.TabIndex = 3; + this.tbMFG.Tag = ""; + this.tbMFG.Click += new System.EventHandler(this.tbDate_Click); + // + // lnkBatch + // + this.lnkBatch.AutoSize = true; + this.lnkBatch.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.lnkBatch.Location = new System.Drawing.Point(448, 122); + this.lnkBatch.Name = "lnkBatch"; + this.lnkBatch.Size = new System.Drawing.Size(52, 19); + this.lnkBatch.TabIndex = 34; + this.lnkBatch.TabStop = true; + this.lnkBatch.Text = "BATCH"; + this.lnkBatch.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkBatch_LinkClicked); + // + // tbBatch + // + this.tbBatch.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbBatch.Location = new System.Drawing.Point(502, 116); + this.tbBatch.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbBatch.Name = "tbBatch"; + this.tbBatch.Size = new System.Drawing.Size(239, 31); + this.tbBatch.TabIndex = 33; + this.tbBatch.Tag = ""; + // + // button4 + // + this.button4.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.button4.Location = new System.Drawing.Point(349, 79); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(52, 32); + this.button4.TabIndex = 31; + this.button4.Text = "N/A"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click_1); + // + // linkLabel7 + // + this.linkLabel7.AutoSize = true; + this.linkLabel7.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel7.Location = new System.Drawing.Point(41, 86); + this.linkLabel7.Name = "linkLabel7"; + this.linkLabel7.Size = new System.Drawing.Size(69, 19); + this.linkLabel7.TabIndex = 23; + this.linkLabel7.TabStop = true; + this.linkLabel7.Text = "PART NO"; + this.linkLabel7.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel7_LinkClicked); + // + // linkLabel5 + // + this.linkLabel5.AutoSize = true; + this.linkLabel5.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.linkLabel5.Location = new System.Drawing.Point(423, 86); + this.linkLabel5.Name = "linkLabel5"; + this.linkLabel5.Size = new System.Drawing.Size(77, 19); + this.linkLabel5.TabIndex = 23; + this.linkLabel5.TabStop = true; + this.linkLabel5.Text = "MFG DATE"; + this.linkLabel5.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel5_LinkClicked); + // + // linkLabel3 + // + this.linkLabel3.AutoSize = true; + this.linkLabel3.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel3.Location = new System.Drawing.Point(27, 50); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(83, 19); + this.linkLabel3.TabIndex = 23; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "Vender LOT"; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel2.Location = new System.Drawing.Point(79, 14); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(31, 19); + this.linkLabel2.TabIndex = 23; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "SID"; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked); + // + // tbPart + // + this.tbPart.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbPart.Location = new System.Drawing.Point(113, 80); + this.tbPart.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbPart.Name = "tbPart"; + this.tbPart.Size = new System.Drawing.Size(239, 31); + this.tbPart.TabIndex = 15; + this.tbPart.Tag = ""; + this.tbPart.Click += new System.EventHandler(this.tbDate_Click); + // + // linkLabel8 + // + this.linkLabel8.AutoSize = true; + this.linkLabel8.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.linkLabel8.Location = new System.Drawing.Point(4, 122); + this.linkLabel8.Name = "linkLabel8"; + this.linkLabel8.Size = new System.Drawing.Size(106, 19); + this.linkLabel8.TabIndex = 28; + this.linkLabel8.TabStop = true; + this.linkLabel8.Text = "Customer Code"; + this.linkLabel8.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel8_LinkClicked); + // + // TbCustCode + // + this.TbCustCode.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.TbCustCode.Font = new System.Drawing.Font("맑은 고딕", 11F); + this.TbCustCode.Location = new System.Drawing.Point(113, 118); + this.TbCustCode.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.TbCustCode.Name = "TbCustCode"; + this.TbCustCode.Size = new System.Drawing.Size(288, 27); + this.TbCustCode.TabIndex = 27; + this.TbCustCode.Tag = ""; + // + // linkLabel6 + // + this.linkLabel6.AutoSize = true; + this.linkLabel6.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.linkLabel6.Location = new System.Drawing.Point(405, 50); + this.linkLabel6.Name = "linkLabel6"; + this.linkLabel6.Size = new System.Drawing.Size(95, 19); + this.linkLabel6.TabIndex = 23; + this.linkLabel6.TabStop = true; + this.linkLabel6.Text = "Vender Name"; + this.linkLabel6.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel6_LinkClicked); + // + // tbVName + // + this.tbVName.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbVName.Location = new System.Drawing.Point(502, 46); + this.tbVName.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.tbVName.Name = "tbVName"; + this.tbVName.Size = new System.Drawing.Size(185, 27); + this.tbVName.TabIndex = 13; + this.tbVName.Tag = ""; + this.tbVName.Click += new System.EventHandler(this.tbDate_Click); + // + // button5 + // + this.button5.Font = new System.Drawing.Font("맑은 고딕", 12F); + this.button5.Location = new System.Drawing.Point(689, 43); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(52, 32); + this.button5.TabIndex = 34; + this.button5.Text = "N/A"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click_2); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lbExecuteSQL}); + this.statusStrip1.Location = new System.Drawing.Point(0, 562); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 13, 0); + this.statusStrip1.Size = new System.Drawing.Size(1031, 22); + this.statusStrip1.TabIndex = 11; + this.statusStrip1.Text = "statusStrip1"; + // + // lbExecuteSQL + // + this.lbExecuteSQL.Name = "lbExecuteSQL"; + this.lbExecuteSQL.Size = new System.Drawing.Size(39, 17); + this.lbExecuteSQL.Text = "Query"; + // + // bn + // + this.bn.AddNewItem = null; + this.bn.BindingSource = this.bs; + this.bn.CountItem = this.bindingNavigatorCountItem; + this.bn.DeleteItem = null; + this.bn.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bn.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2}); + this.bn.Location = new System.Drawing.Point(0, 380); + this.bn.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bn.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bn.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bn.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bn.Name = "bn"; + this.bn.PositionItem = this.bindingNavigatorPositionItem; + this.bn.Size = new System.Drawing.Size(1031, 25); + this.bn.TabIndex = 12; + this.bn.Text = "bindingNavigator1"; + // + // bs + // + this.bs.DataMember = "VW_GET_MAX_QTY_VENDOR_LOT"; + this.bs.DataSource = this.dsWMS; + // + // dsWMS + // + this.dsWMS.DataSetName = "dsWMS"; + this.dsWMS.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(26, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total item count"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move to first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move to previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F); + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(49, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move to next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move to last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // dv1 + // + this.dv1.AllowUserToAddRows = false; + this.dv1.AllowUserToDeleteRows = false; + this.dv1.AutoGenerateColumns = false; + this.dv1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells; + this.dv1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.idxDataGridViewTextBoxColumn, + this.sIDDataGridViewTextBoxColumn, + this.pARTNODataGridViewTextBoxColumn, + this.vENDORNMDataGridViewTextBoxColumn, + this.bATCHNODataGridViewTextBoxColumn, + this.cUSTCODEDataGridViewTextBoxColumn, + this.vENDORLOTDataGridViewTextBoxColumn, + this.mFGDATEDataGridViewTextBoxColumn, + this.qTYDataGridViewTextBoxColumn}); + this.dv1.DataSource = this.bs; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle1.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv1.DefaultCellStyle = dataGridViewCellStyle1; + this.dv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv1.Location = new System.Drawing.Point(0, 0); + this.dv1.Name = "dv1"; + this.dv1.ReadOnly = true; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(1031, 380); + this.dv1.TabIndex = 35; + this.dv1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.vW_GET_MAX_QTY_VENDOR_LOTDataGridView_CellClick); + // + // idxDataGridViewTextBoxColumn + // + this.idxDataGridViewTextBoxColumn.DataPropertyName = "idx"; + this.idxDataGridViewTextBoxColumn.HeaderText = "No"; + this.idxDataGridViewTextBoxColumn.Name = "idxDataGridViewTextBoxColumn"; + this.idxDataGridViewTextBoxColumn.ReadOnly = true; + // + // sIDDataGridViewTextBoxColumn + // + this.sIDDataGridViewTextBoxColumn.DataPropertyName = "SID"; + this.sIDDataGridViewTextBoxColumn.HeaderText = "SID"; + this.sIDDataGridViewTextBoxColumn.Name = "sIDDataGridViewTextBoxColumn"; + this.sIDDataGridViewTextBoxColumn.ReadOnly = true; + this.sIDDataGridViewTextBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.sIDDataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // pARTNODataGridViewTextBoxColumn + // + this.pARTNODataGridViewTextBoxColumn.DataPropertyName = "PART_NO"; + this.pARTNODataGridViewTextBoxColumn.HeaderText = "PART_NO"; + this.pARTNODataGridViewTextBoxColumn.Name = "pARTNODataGridViewTextBoxColumn"; + this.pARTNODataGridViewTextBoxColumn.ReadOnly = true; + // + // vENDORNMDataGridViewTextBoxColumn + // + this.vENDORNMDataGridViewTextBoxColumn.DataPropertyName = "VENDOR_NM"; + this.vENDORNMDataGridViewTextBoxColumn.HeaderText = "VENDOR_NM"; + this.vENDORNMDataGridViewTextBoxColumn.Name = "vENDORNMDataGridViewTextBoxColumn"; + this.vENDORNMDataGridViewTextBoxColumn.ReadOnly = true; + // + // bATCHNODataGridViewTextBoxColumn + // + this.bATCHNODataGridViewTextBoxColumn.DataPropertyName = "BATCH_NO"; + this.bATCHNODataGridViewTextBoxColumn.HeaderText = "BATCH_NO"; + this.bATCHNODataGridViewTextBoxColumn.Name = "bATCHNODataGridViewTextBoxColumn"; + this.bATCHNODataGridViewTextBoxColumn.ReadOnly = true; + // + // cUSTCODEDataGridViewTextBoxColumn + // + this.cUSTCODEDataGridViewTextBoxColumn.DataPropertyName = "CUST_CODE"; + this.cUSTCODEDataGridViewTextBoxColumn.HeaderText = "CUST_CODE"; + this.cUSTCODEDataGridViewTextBoxColumn.Name = "cUSTCODEDataGridViewTextBoxColumn"; + this.cUSTCODEDataGridViewTextBoxColumn.ReadOnly = true; + // + // vENDORLOTDataGridViewTextBoxColumn + // + this.vENDORLOTDataGridViewTextBoxColumn.DataPropertyName = "VENDOR_LOT"; + this.vENDORLOTDataGridViewTextBoxColumn.HeaderText = "VENDOR_LOT"; + this.vENDORLOTDataGridViewTextBoxColumn.Name = "vENDORLOTDataGridViewTextBoxColumn"; + this.vENDORLOTDataGridViewTextBoxColumn.ReadOnly = true; + // + // mFGDATEDataGridViewTextBoxColumn + // + this.mFGDATEDataGridViewTextBoxColumn.DataPropertyName = "MFG_DATE"; + this.mFGDATEDataGridViewTextBoxColumn.HeaderText = "MFG_DATE"; + this.mFGDATEDataGridViewTextBoxColumn.Name = "mFGDATEDataGridViewTextBoxColumn"; + this.mFGDATEDataGridViewTextBoxColumn.ReadOnly = true; + // + // qTYDataGridViewTextBoxColumn + // + this.qTYDataGridViewTextBoxColumn.DataPropertyName = "QTY"; + this.qTYDataGridViewTextBoxColumn.HeaderText = "QTY"; + this.qTYDataGridViewTextBoxColumn.Name = "qTYDataGridViewTextBoxColumn"; + this.qTYDataGridViewTextBoxColumn.ReadOnly = true; + // + // panDv + // + this.panDv.Controls.Add(this.dv1); + this.panDv.Controls.Add(this.bn); + this.panDv.Dock = System.Windows.Forms.DockStyle.Fill; + this.panDv.Location = new System.Drawing.Point(0, 157); + this.panDv.Name = "panDv"; + this.panDv.Size = new System.Drawing.Size(1031, 405); + this.panDv.TabIndex = 36; + // + // btOK + // + this.btOK.BackColor = System.Drawing.Color.DarkSeaGreen; + this.btOK.Dock = System.Windows.Forms.DockStyle.Right; + this.btOK.Font = new System.Drawing.Font("맑은 고딕", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btOK.Location = new System.Drawing.Point(791, 10); + this.btOK.Name = "btOK"; + this.btOK.Size = new System.Drawing.Size(230, 137); + this.btOK.TabIndex = 4; + this.btOK.Text = "SAVE"; + this.btOK.UseVisualStyleBackColor = false; + this.btOK.Click += new System.EventHandler(this.btOK_Click); + // + // panel3 + // + this.panel3.Controls.Add(this.btOK); + this.panel3.Controls.Add(this.button5); + this.panel3.Controls.Add(this.button4); + this.panel3.Controls.Add(this.linkLabel7); + this.panel3.Controls.Add(this.tbVName); + this.panel3.Controls.Add(this.linkLabel5); + this.panel3.Controls.Add(this.linkLabel6); + this.panel3.Controls.Add(this.tbSID); + this.panel3.Controls.Add(this.linkLabel8); + this.panel3.Controls.Add(this.TbCustCode); + this.panel3.Controls.Add(this.tbBatch); + this.panel3.Controls.Add(this.linkLabel3); + this.panel3.Controls.Add(this.tbLot); + this.panel3.Controls.Add(this.lnkBatch); + this.panel3.Controls.Add(this.tbPart); + this.panel3.Controls.Add(this.tbMFG); + this.panel3.Controls.Add(this.linkLabel2); + this.panel3.Dock = System.Windows.Forms.DockStyle.Top; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Name = "panel3"; + this.panel3.Padding = new System.Windows.Forms.Padding(0, 10, 10, 10); + this.panel3.Size = new System.Drawing.Size(1031, 157); + this.panel3.TabIndex = 37; + // + // ta + // + this.ta.ClearBeforeFill = true; + // + // tam + // + this.tam.BackupDataSetBeforeUpdate = false; + this.tam.Connection = null; + this.tam.UpdateOrder = Project.dsWMSTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete; + // + // fSelectSIDInformation + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(1031, 584); + this.Controls.Add(this.panDv); + this.Controls.Add(this.panel3); + this.Controls.Add(this.statusStrip1); + this.DoubleBuffered = true; + this.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8); + this.Name = "fSelectSIDInformation"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Multi SID Information"; + this.Load += new System.EventHandler(this.fLoaderInfo_Load); + this.Shown += new System.EventHandler(this.fSelectSIDInformation_Shown); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit(); + this.bn.ResumeLayout(false); + this.bn.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dsWMS)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); + this.panDv.ResumeLayout(false); + this.panDv.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox tbSID; + private System.Windows.Forms.TextBox tbLot; + private System.Windows.Forms.TextBox tbMFG; + private System.Windows.Forms.TextBox tbVName; + private System.Windows.Forms.TextBox tbPart; + private System.Windows.Forms.LinkLabel linkLabel7; + private System.Windows.Forms.LinkLabel linkLabel6; + private System.Windows.Forms.LinkLabel linkLabel5; + private System.Windows.Forms.LinkLabel linkLabel3; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.LinkLabel linkLabel8; + private System.Windows.Forms.TextBox TbCustCode; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.LinkLabel lnkBatch; + private System.Windows.Forms.TextBox tbBatch; + private dsWMS dsWMS; + private System.Windows.Forms.BindingSource bs; + private dsWMSTableAdapters.VW_GET_MAX_QTY_VENDOR_LOTTableAdapter ta; + private dsWMSTableAdapters.TableAdapterManager tam; + private System.Windows.Forms.BindingNavigator bn; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.DataGridView dv1; + private System.Windows.Forms.Panel panDv; + private System.Windows.Forms.Button btOK; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.ToolStripStatusLabel lbExecuteSQL; + private System.Windows.Forms.DataGridViewTextBoxColumn idxDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewButtonColumn sIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn pARTNODataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn vENDORNMDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn bATCHNODataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn cUSTCODEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn vENDORLOTDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn mFGDATEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn qTYDataGridViewTextBoxColumn; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectSIDInformation.cs b/Handler/Project/Dialog/fSelectSIDInformation.cs new file mode 100644 index 0000000..5643eb9 --- /dev/null +++ b/Handler/Project/Dialog/fSelectSIDInformation.cs @@ -0,0 +1,919 @@ +using AR; +using SATOPrinterAPI; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; + +namespace Project.Dialog +{ + public partial class fSelectSIDInformation : Form + { + Boolean autoconf = false; + Boolean warn = false; + Boolean samesidwarn = false; + bool NewReelId = false; + public fSelectSIDInformation() + { + InitializeComponent(); + VAR.BOOL[eVarBool.FG_WAIT_INFOSELECT] = true; + this.WindowState = FormWindowState.Normal; + var sql = VAR.STR[eVarString.MULTISID_QUERY]; + var fields = VAR.STR[eVarString.MULTISID_FIELDS]; + this.lbExecuteSQL.Text = sql; + this.FormClosed += FLoaderInfo_FormClosed; + } + + + private void FLoaderInfo_FormClosed(object sender, FormClosedEventArgs e) + { + AR.VAR.I32[AR.eVarInt32.PickOnRetry] = 0; + VAR.TIME[eVarTime.KEYENCEWAIT] = DateTime.Now; + + VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = true; + VAR.BOOL[eVarBool.FG_WAIT_INFOSELECT] = false; + PUB.Result.ItemDataC.VisionData.PropertyChanged -= VisionData_PropertyChanged; + + ////사용자가 정보를 정확히 입력하지 않고 닫았다 + //if (PUB.Result.ItemDataC.VisionData.Confirm == false) + //{ + // if (PUB.sm.Step == eSMStep.RUN) + // PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INCOMPLETE_INFOSELECT, eNextStep.PAUSE, 1); + //} + } + + private void fLoaderInfo_Load(object sender, EventArgs e) + { + var sql = VAR.STR[eVarString.MULTISID_QUERY]; + var fields = VAR.STR[eVarString.MULTISID_FIELDS]; + + try + { + var cn = DBHelper.GetConnection(); + var cmd = new SqlCommand(sql, cn); + var da = new SqlDataAdapter(cmd); + var dt = new DataTable(); + da.Fill(dt); + int i = 0; + this.dsWMS.VW_GET_MAX_QTY_VENDOR_LOT.Clear(); + foreach (DataRow dr in dt.Rows) + { + var newdr = this.dsWMS.VW_GET_MAX_QTY_VENDOR_LOT.NewVW_GET_MAX_QTY_VENDOR_LOTRow(); + newdr.idx = dsWMS.VW_GET_MAX_QTY_VENDOR_LOT.Count + 1; + if (dt.Columns.Contains("SID")) newdr.SID = dr["SID"]?.ToString() ?? string.Empty; + else newdr.SID = string.Empty; + if (dt.Columns.Contains("PART_NO")) newdr.PART_NO = dr["PART_NO"]?.ToString() ?? string.Empty; + else newdr.PART_NO = string.Empty; + if (dt.Columns.Contains("VENDOR_LOT")) newdr.VENDOR_LOT = dr["VENDOR_LOT"]?.ToString() ?? string.Empty; + else newdr.VENDOR_LOT = string.Empty; + if (dt.Columns.Contains("VENDOR_NM")) newdr.VENDOR_NM = dr["VENDOR_NM"]?.ToString() ?? string.Empty; + else newdr.VENDOR_NM = string.Empty; + if (dt.Columns.Contains("BATCH_NO")) newdr.BATCH_NO = dr["BATCH_NO"]?.ToString() ?? string.Empty; + else newdr.BATCH_NO = string.Empty; + if (dt.Columns.Contains("CUST_CODE")) newdr.CUST_CODE = dr["CUST_CODE"]?.ToString() ?? string.Empty; + else newdr.CUST_CODE = string.Empty; + if (dt.Columns.Contains("MFG_DATE")) newdr.MFG_DATE = dr["MFG_DATE"]?.ToString() ?? string.Empty; + else newdr.MFG_DATE = string.Empty; + if (dt.Columns.Contains("QTY")) newdr.QTY = (dr["QTY"]?.ToString() ?? "0").toInt(); + else newdr.QTY = 0; + + + this.dsWMS.VW_GET_MAX_QTY_VENDOR_LOT.AddVW_GET_MAX_QTY_VENDOR_LOTRow(newdr);//?.ToString() ?? + //string.Empty; + } + + dsWMS.VW_GET_MAX_QTY_VENDOR_LOT.AcceptChanges(); + //this.dv1.DataSource = null; + //this.dv1.Rows.Clear(); + //this.dv1.Columns.Clear(); + + //var cols = new String[] { "No", "SID", "PartNo", "VendorLot", "VendorName", "MFGDate", "Qty" }; + //foreach (var colname in cols) + // this.dv1.Columns.Add($"col_{colname}", colname); + + //foreach (dsWMS.VW_GET_MAX_QTY_VENDOR_LOTRow row in dsWMS.VW_GET_MAX_QTY_VENDOR_LOT) + //{ + // this.dv1.Rows.Add(new string[] { }); + //} + } + catch (Exception ex) + { + UTIL.MsgE($"Data Query Error\n{ex.Message}"); + } + + //현재 바코드가 읽었단 자료를 모두 표시한다. + var item = PUB.Result.ItemDataC; + NewReelId = item.VisionData.RIDNew; + tbSID.Text = item.VisionData.SID; + tbLot.Text = item.VisionData.VLOT; + tbMFG.Text = item.VisionData.MFGDATE; + tbVName.Text = item.VisionData.VNAME; + tbPart.Text = item.VisionData.PARTNO; + TbCustCode.Text = item.VisionData.CUSTCODE; + tbBatch.Text = item.VisionData.BATCH; + + selectInput(this.tbSID); + + if (tbVName.Text.isEmpty()) + if (PUB.Result.vModel.Def_Vname.isEmpty() == false) + tbVName.Text = PUB.Result.vModel.Def_Vname; + + if (tbMFG.Text.isEmpty()) + if (PUB.Result.vModel.Def_MFG.isEmpty() == false) + tbMFG.Text = PUB.Result.vModel.Def_MFG; + + item.VisionData.PropertyChanged += VisionData_PropertyChanged; + + this.Show(); + this.dv1.AutoResizeColumns(); + } + + delegate void UpdateTextHandler(Control ctrl, string value); + public void UpdateText(Control ctrl, string value) + { + if (ctrl is Label || ctrl is TextBox) + { + if (ctrl.InvokeRequired) + { + ctrl.BeginInvoke(new UpdateTextHandler(UpdateText), new object[] { ctrl, value }); + } + else if (ctrl is Label) + ((Label)ctrl).Text = value; + else if (ctrl is TextBox) + ((TextBox)ctrl).Text = value; + } + + } + + private void VisionData_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + //값이 바뀌었으나 현재 값이 입력되지 않았따면 처리해준다. 220712 + var item = PUB.Result.ItemDataC; + + if (e.PropertyName.Equals("MFGDATE") && tbMFG.Text.isEmpty()) + UpdateText(tbMFG, item.VisionData.MFGDATE); + + if (e.PropertyName.Equals("VNAME") && tbVName.Text.isEmpty()) + UpdateText(tbVName, item.VisionData.VNAME); + + if (e.PropertyName.Equals("PARTNO") && tbPart.Text.isEmpty()) + UpdateText(tbPart, item.VisionData.PARTNO); + + if (e.PropertyName.Equals("CUSTCODE") && TbCustCode.Text.isEmpty()) + UpdateText(TbCustCode, item.VisionData.CUSTCODE); //210317 + + if (e.PropertyName.Equals("SID") && tbSID.Text.isEmpty()) + UpdateText(tbSID, item.VisionData.SID); + + if (e.PropertyName.Equals("VLOT") && tbLot.Text.isEmpty()) + UpdateText(tbLot, item.VisionData.VLOT); + } + + + string TagStr = string.Empty; + void selectInput(Control c) + { + TagStr = string.Empty; + if (c is TextBox) + { + var tb = c as TextBox; + TagStr = tb.Tag.ToString(); + } + else if (c is Label) + { + var lb = c as Label; + TagStr = lb.Tag.ToString(); + } + + //동일태그를 가진 textbox 의 배경색을 업데이트한다 + foreach (Control tb in panel3.Controls) + { + if (tb is TextBox) + { + if (tb.Tag.ToString() == TagStr) + { + tb.BackColor = Color.SkyBlue; + } + else tb.BackColor = SystemColors.Control; + } + } + } + + + + + private void tbDate_Click(object sender, EventArgs e) + { + selectInput(sender as TextBox); + } + + private void button4_Click(object sender, EventArgs e) + { + DateTime dt = DateTime.Now; + var dtstr = this.tbMFG.Text.Trim().Replace("-", "").Replace("/", ""); + if (dtstr.Length == 8) + { + dt = new DateTime( + int.Parse(dtstr.Substring(0, 4)), + int.Parse(dtstr.Substring(4, 2)), + int.Parse(dtstr.Substring(6, 2))); + } + + var f = new Dialog.fSelectDay(dt); + if (f.ShowDialog() == DialogResult.OK) + { + this.tbMFG.Text = f.dt.ToShortDateString(); + } + } + + private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbSID, "INPUT SID"); + } + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbLot, "INPUT VENDER LOT"); + } + + private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbMFG, "INPUT MFG DATE"); + } + + private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbVName, "INPUT SUPPLY NAME"); + } + + private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + //tbpartno + UTIL.TouchKeyShow(tbPart, "INPUT CUSTOMER PART NO."); + } + + + private void linkLabel8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(TbCustCode, "INPUT SUPPLY CODE"); + } + + + private void btOK_Click(object sender, EventArgs e) + { + bool topmost = this.TopMost; + //var IsBypas = VAR.STR[eVarString.JOB_TYPE] == "BP"; + if (System.Diagnostics.Debugger.IsAttached) + this.TopMost = false; + + var itemC = PUB.Result.ItemDataC; + + //manu 목록에 없다면 추가 해준다. + var manuName = tbVName.Text.Trim().ToLower(); + if (manuName.isEmpty() == false) + { + lock (PUB.Result.dsList) + { + if (PUB.Result.dsList.Supply.Where(t => t.TITLE.ToLower() == manuName).Any() == false) + { + //기존 manu 목록에 없으니 추가한다. + var newdr = PUB.Result.dsList.Supply.NewSupplyRow(); + newdr.TITLE = tbVName.Text.Trim(); + PUB.Result.dsList.Supply.AddSupplyRow(newdr); + PUB.Result.SaveListDB(); + } + } + } + + //필수값 입력 확인 + #region "Check iNput Data" + if (tbSID.Text.isEmpty()) + { + UTIL.MsgE("SID was not entered"); + tbSID.Focus(); + return; + } + + //if (tbLot.Text.isEmpty()) + //{ + // UTIL.MsgE("VLOT 가 입력되지 않았습니다"); + // tbLot.Focus(); + // return; + //} + + //if (tbMFG.Text.isEmpty()) + //{ + // UTIL.MsgE("MFG-DATE 가 입력되지 않았습니다"); + // tbMFG.Focus(); + // return; + //} + + //if (this.tbPart.Text.isEmpty()) + //{ + // UTIL.MsgE("PART No 가 입력되지 않았습니다"); + // tbPart.Focus(); + // return; + //} + + #endregion + + //현재 작업모드와 SID가 일치하는지 확인한다. + var sidNew = this.tbSID.Text.Trim(); + var partNo = this.tbPart.Text.Trim(); + var custCode = this.TbCustCode.Text.Trim(); + + //모든자료는 존재한다 저장가능하다 + if (AR.SETTING.Data.OnlineMode) + { + //시드정보테이블의 데이터를 역으로 저장한 경우 + if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && VAR.BOOL[eVarBool.Opt_SID_WriteServer]) + { + Dictionary wheres = new Dictionary(); + Dictionary columns = new Dictionary(); + + //조건절생성 + if (VAR.BOOL[eVarBool.Opt_SID_Where_CustCode]) wheres.Add("CustCode", TbCustCode.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Where_PartNo]) wheres.Add("PartNo", tbPart.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Where_SID]) wheres.Add("SID", tbSID.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) wheres.Add("VenderLot", tbLot.Text); + + //Make Target COlumns + if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode]) columns.Add("CustCode", TbCustCode.Text); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo]) columns.Add("PartNo", tbPart.Text); + //if (VAR.BOOL[eVarBool.Opt_SID_Apply_PrintPos]) columns.Add("PrintPosition", this.PrintPos); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID]) + { + //SID변환기능이 동작한상태에서는 변환된 SID정보를 저장하지 않는다 230510 + if (VAR.BOOL[eVarBool.Opt_SIDConvert]) + { + PUB.log.AddAT($"SID information is not updated due to the use of SID conversion function"); + } + else columns.Add("SID", tbSID.Text); + } + if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName]) columns.Add("VenderName", tbVName.Text); + + //EE-SID정보에 데이터를 저장한다 + ServerWriteINF_EED(columns, wheres); + //ServerWriteINF_WMS(columns, wheres); + } + } + + //값을 설정해주고 빠져나간다 + if (tbSID.Text.isEmpty() && + itemC.VisionData.SID.isEmpty() == false && + itemC.VisionData.SID.Equals(tbSID.Text.Trim()) == false) + itemC.VisionData.SID0 = itemC.VisionData.SID; + + //값이있는것들만 기록해준다. + if (tbSID.Text.isEmpty() == false) + { + itemC.VisionData.SID = tbSID.Text.Trim(); + itemC.VisionData.SID_Trust = true; + } + if (tbBatch.Text.isEmpty() == false) + { + itemC.VisionData.BATCH = tbBatch.Text.Trim(); + + } + if (tbLot.Text.isEmpty() == false) + { + itemC.VisionData.VLOT = tbLot.Text.Trim(); + itemC.VisionData.VLOT_Trust = true; + } + if (tbMFG.Text.isEmpty() == false) + { + itemC.VisionData.MFGDATE = tbMFG.Text.Trim(); + itemC.VisionData.MFGDATE_Trust = true; + } + if (tbVName.Text.isEmpty() == false) + { + itemC.VisionData.VNAME = tbVName.Text.Trim(); + itemC.VisionData.VNAME_Trust = true; + } + if (tbPart.Text.isEmpty() == false) + { + itemC.VisionData.PARTNO = tbPart.Text.Trim(); + itemC.VisionData.PARTNO_Trust = true; + } + + this.TopMost = topmost; + this.Close(); + } + + + /// + /// 지정한 자료를 서버에 기록합니다. 조건절과 대상 열을 제공해야합니다 + /// + void ServerWriteINF_WMS(Dictionary columns, Dictionary wheres) + { + //변경된 값만 저장여부를 확인할 것이므로 기존 값을 모두 가져온다 + var SQL = "select top 1 " + string.Join(",", columns.Select(t => "isnull([" + t.Key + "],'') as " + t.Key + "")) + + " from K4EE_Component_Reel_SID_Information WITH(NOLOCK)"; + + var WSQL = $" where MC='{PUB.MCCode}'"; + for (int i = 0; i < wheres.Count; i++) + { + var col = wheres.ElementAt(i); + var colname = col.Key; + var colvalue = col.Value; + WSQL += " AND "; + WSQL += $" {colname}='{colvalue.Replace("'", "''")}'"; + } + SQL += WSQL; + + Dictionary UpdateTarget = new Dictionary(); + var CN = new System.Data.SqlClient.SqlConnection(); + CN.ConnectionString = Properties.Settings.Default.CS; + var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN); + CN.Open(); + var DAR = CMD.ExecuteReader(); + var NoData = true; + Dictionary InsertTarget = new Dictionary(); + while (DAR.Read()) + { + NoData = false; + foreach (var col in columns) + { + var vStr = DAR[col.Key].ToString(); + var cStr = col.Value; + if (vStr.Equals(cStr) == false) + { + //differenct value + UpdateTarget.Add(col.Key, cStr); + } + } + } + DAR.Close(); + //자료가 없다면 데이터를 추가한다. + if (NoData) + { + foreach (var col in columns) + { + InsertTarget.Add(col.Key, col.Value); + } + foreach (var item in wheres) + { + if (InsertTarget.ContainsKey(item.Key) == false) + InsertTarget.Add(item.Key, item.Value); + } + } + + if (UpdateTarget.Count > 0) //if update target + { + + var dlgMsg = $"다음 값을 서버(SID정보)에 저장 하시겠습니까?\n"; + foreach (var item in UpdateTarget) + dlgMsg += $"Item:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + + //check double data 220706 + var CSQL = "select count(*) from K4EE_Component_Reel_SID_Information WITH(NOLOCK) "; + CSQL += WSQL; + CMD.CommandText = CSQL; + var cnt = int.Parse(CMD.ExecuteScalar().ToString()); + var whke = string.Join(",", wheres.Select(t => t.Key).ToList()); + if (cnt < 1) + { + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Cannot update information because there is no target reel information\n" + whke); + } + else if (cnt > 1) + { + + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Multiple target reel information({cnt} records) exists, cannot update information\n" + whke); + } + else + { + var USQL = $"update K4EE_Component_Reel_SID_Information set [MC]='{PUB.MCCode}'," + + string.Join(",", UpdateTarget.Select(t => "[" + t.Key + "]='" + t.Value + "'")); + + USQL += WSQL; + try + { + CMD.CommandText = USQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save Error\n" + ex.Message); + } + } + } + } + if (InsertTarget.Count > 0) + { + + var dlgMsg = $"다음 값을 서버에 저장 하시겠습니까?\n"; + foreach (var item in InsertTarget) + dlgMsg += $"Item:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + var ISQL = $"insert into K4EE_Component_Reel_SID_Information ([MC],wdate," + + string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" + + $"'{PUB.MCCode}',getdate()," + + string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")"; + + //ISQL += WSQL; + try + { + CMD.CommandText = ISQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save Error\n" + ex.Message); + } + } + + } + CN.Close(); + CN.Dispose(); + } + + /// + /// 지정한 자료를 서버에 기록합니다. 조건절과 대상 열을 제공해야합니다 + /// + void ServerWriteINF_EED(Dictionary columns, Dictionary wheres) + { + //변경된 값만 저장여부를 확인할 것이므로 기존 값을 모두 가져온다 + var SQL = "select top 1 " + string.Join(",", columns.Select(t => "isnull([" + t.Key + "],'') as " + t.Key + "")) + + " from K4EE_Component_Reel_SID_Information WITH(NOLOCK)"; + + var WSQL = $" where MC='{PUB.MCCode}'"; + for (int i = 0; i < wheres.Count; i++) + { + var col = wheres.ElementAt(i); + var colname = col.Key; + var colvalue = col.Value; + WSQL += " AND "; + WSQL += $" {colname}='{colvalue.Replace("'", "''")}'"; + } + SQL += WSQL; + + Dictionary UpdateTarget = new Dictionary(); + var CN = new System.Data.SqlClient.SqlConnection(); + CN.ConnectionString = Properties.Settings.Default.CS; + var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN); + CN.Open(); + var DAR = CMD.ExecuteReader(); + var NoData = true; + Dictionary InsertTarget = new Dictionary(); + while (DAR.Read()) + { + NoData = false; + foreach (var col in columns) + { + var vStr = DAR[col.Key].ToString(); + var cStr = col.Value; + if (vStr.Equals(cStr) == false) + { + //differenct value + UpdateTarget.Add(col.Key, cStr); + } + } + } + DAR.Close(); + //자료가 없다면 데이터를 추가한다. + if (NoData) + { + foreach (var col in columns) + { + InsertTarget.Add(col.Key, col.Value); + } + foreach (var item in wheres) + { + if (InsertTarget.ContainsKey(item.Key) == false) + InsertTarget.Add(item.Key, item.Value); + } + } + + if (UpdateTarget.Count > 0) //if update target + { + var dlgMsg = $"다음 값을 EED서버(SID정보)에 저장 하시겠습니까?\n"; + foreach (var item in UpdateTarget) + dlgMsg += $"Item:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + //check double data 220706 + var CSQL = "select count(*) from K4EE_Component_Reel_SID_Information WITH(NOLOCK) "; + CSQL += WSQL; + CMD.CommandText = CSQL; + var cnt = int.Parse(CMD.ExecuteScalar().ToString()); + var whke = string.Join(",", wheres.Select(t => t.Key).ToList()); + if (cnt < 1) + { + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Cannot update information because there is no target reel information\n" + whke); + } + else if (cnt > 1) + { + + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Multiple target reel information({cnt} records) exists, cannot update information\n" + whke); + } + else + { + var USQL = $"update K4EE_Component_Reel_SID_Information set [MC]='{PUB.MCCode}'," + + string.Join(",", UpdateTarget.Select(t => "[" + t.Key + "]='" + t.Value + "'")); + + USQL += WSQL; + try + { + CMD.CommandText = USQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save Error\n" + ex.Message); + } + } + } + } + if (InsertTarget.Count > 0) + { + var dlgMsg = $"다음 값을 EED서버에 저장 하시겠습니까?\n"; + foreach (var item in InsertTarget) + dlgMsg += $"Item:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + var ISQL = $"insert into K4EE_Component_Reel_SID_Information ([MC],wdate," + + string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" + + $"'{PUB.MCCode}',getdate()," + + string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")"; + + //ISQL += WSQL; + try + { + CMD.CommandText = ISQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save(EED) Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save(EED) Error\n" + ex.Message); + } + } + + } + CN.Close(); + CN.Dispose(); + } + /// + /// 지정한 자료를 서버에 기록합니다. 조건절과 대상 열을 제공해야합니다 + /// + void ServerWriteCNV(Dictionary columns, Dictionary wheres) + { + //변경된 값만 저장여부를 확인할 것이므로 기존 값을 모두 가져온다 + var tableName = "K4EE_Component_Reel_SID_Convert"; + var SQL = "select top 1 " + string.Join(",", columns.Select(t => "isnull([" + t.Key + "],'') as " + t.Key + "")) + + $" from {tableName} WITH(NOLOCK) "; + + var WSQL = $" where isnull(MC,'{PUB.MCCode}')='{PUB.MCCode}'"; + for (int i = 0; i < wheres.Count; i++) + { + var col = wheres.ElementAt(i); + var colname = col.Key; + var colvalue = col.Value; + WSQL += " AND "; + WSQL += $" {colname}='{colvalue.Replace("'", "''")}'"; + } + SQL += WSQL; + + Dictionary UpdateTarget = new Dictionary(); + var CN = new System.Data.SqlClient.SqlConnection(); + CN.ConnectionString = Properties.Settings.Default.CS; + var CMD = new System.Data.SqlClient.SqlCommand(SQL, CN); + CN.Open(); + var DAR = CMD.ExecuteReader(); + var NoData = true; + Dictionary InsertTarget = new Dictionary(); + while (DAR.Read()) + { + NoData = false; + foreach (var col in columns) + { + var vStr = DAR[col.Key].ToString(); + var cStr = col.Value; + if (vStr.Equals(cStr) == false) + { + //differenct value + UpdateTarget.Add(col.Key, cStr); + } + } + } + DAR.Close(); + + //자료가 없다면 데이터를 추가한다. + if (NoData) + { + foreach (var col in columns) + { + InsertTarget.Add(col.Key, col.Value); + } + foreach (var item in wheres) + { + if (InsertTarget.ContainsKey(item.Key) == false) + InsertTarget.Add(item.Key, item.Value); + } + } + + if (UpdateTarget.Count > 0) //if update target + { + + var dlgMsg = $"다음 SID변환값을 서버에 업데이트 하시겠습니까?\n"; + foreach (var item in UpdateTarget) + dlgMsg += $"Item:{item.Key} => {item.Value}\n"; + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + + //check double data 220706 + var CSQL = $"select count(*) from {tableName}"; + CSQL += WSQL; + CMD.CommandText = CSQL; + var cnt = int.Parse(CMD.ExecuteScalar().ToString()); + var whke = string.Join(",", wheres.Select(t => t.Key).ToList()); + if (cnt < 1) + { + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"No target reel information exists, cannot update conversion information\n" + whke); + } + else if (cnt > 1) + { + + PUB.log.AddAT("SQL=" + CSQL); + UTIL.MsgE($"Multiple target reel conversion information({cnt} records) exists, cannot update information\n" + whke); + } + else + { + var USQL = $"update {tableName} set isnull([MC],'{PUB.MCCode}')='{PUB.MCCode}'," + + string.Join(",", UpdateTarget.Select(t => "[" + t.Key + "]='" + t.Value + "'")); + + USQL += WSQL; + try + { + CMD.CommandText = USQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("(CNV)Save Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("(CNV)Save Error\n" + ex.Message); + } + } + } + } + if (InsertTarget.Count > 0) + { + + var dlgMsg = $"다음 변환값을 서버에 추가 하시겠습니까?\n"; + foreach (var item in InsertTarget) + dlgMsg += $"Item:{item.Key} => {item.Value}\n"; + + + var dlg = UTIL.MsgQ(dlgMsg); + if (dlg == DialogResult.Yes) + { + var ISQL = $"insert into {tableName} ([MC]," + + string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" + + $"'{PUB.MCCode}'," + + string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")"; + + //ISQL += WSQL; + try + { + CMD.CommandText = ISQL; + var UpdateOK = CMD.ExecuteNonQuery() == 1; + if (UpdateOK == false) + { + UTIL.MsgE("Save(CNV) Error"); + } + } + catch (Exception ex) + { + UTIL.MsgE("Save(CNV) Error\n" + ex.Message); + } + } + + } + CN.Close(); + CN.Dispose(); + + if (UpdateTarget.Any() || InsertTarget.Any()) + { + PUB.GetSIDConverDB(); + } + } + + private void button4_Click_1(object sender, EventArgs e) + { + if (tbPart.Text.isEmpty()) tbPart.Text = "N/A"; + else + { + var dlg = UTIL.MsgQ("Would you like to change the current Part No value to N/A?"); + if (dlg == DialogResult.Yes) tbPart.Text = "N/A"; + } + } + + + + private void button5_Click_2(object sender, EventArgs e) + { + if (tbVName.Text.isEmpty()) tbVName.Text = "N/A"; + else + { + var dlg = UTIL.MsgQ("Would you like to change the current VenderName value to N/A?"); + if (dlg == DialogResult.Yes) tbVName.Text = "N/A"; + } + } + + private void lnkBatch_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + UTIL.TouchKeyShow(tbBatch, "INPUT BATCH"); + } + + void ValueUpdate(TextBox tb, string value, string colname) + { + var tagstring = tb.Tag?.ToString() ?? string.Empty; + if (value.isEmpty() == false) + { + tb.Tag = tb.Text; + tb.Text = value; + } + //else if (tagstring.isEmpty() == false && value.isEmpty() == false && tb.Text != value) + //{ + // //한번설정된 값인데 다른 값을 선택했다 + // if (UTIL.MsgQ($"{colname} 값을 변경할까요?\n{tb.Text} -> {value}") == DialogResult.Yes) + // { + // tb.Text = value; + // } + + //} + } + + + private void vW_GET_MAX_QTY_VENDOR_LOTDataGridView_CellClick(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex < 0 || e.ColumnIndex < 0) return; + var col = this.dv1.Columns[e.ColumnIndex]; + if (col.DataPropertyName.Equals("SID") == false) return; + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as dsWMS.VW_GET_MAX_QTY_VENDOR_LOTRow; + if (dr == null) return; + + var dlg = UTIL.MsgQ("Would you like to enter the values of the selected items?\nEmpty values will be entered automatically and user confirmation will be required for existing values"); + if (dlg != DialogResult.Yes) return; + + //SID값은 반드시 있다 + ValueUpdate(tbSID, dr.SID, "SID"); + ValueUpdate(tbLot, dr.VENDOR_LOT, "LOT"); + ValueUpdate(tbPart, dr.PART_NO, "PARTNO"); + ValueUpdate(TbCustCode, dr.CUST_CODE, "CUST_CODE"); + ValueUpdate(tbVName, dr.VENDOR_NM, "VENDER_NM"); + ValueUpdate(tbMFG, dr.MFG_DATE, "MFG_DATE"); + ValueUpdate(tbBatch, dr.BATCH_NO, "BATCH_NO"); + } + + private void fSelectSIDInformation_Shown(object sender, EventArgs e) + { + this.dv1.AutoResizeColumns(); + } + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fSelectSIDInformation.resx b/Handler/Project/Dialog/fSelectSIDInformation.resx new file mode 100644 index 0000000..8bd6858 --- /dev/null +++ b/Handler/Project/Dialog/fSelectSIDInformation.resx @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 247, 17 + + + 664, 17 + + + 459, 17 + + + 364, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + 525, 17 + + + 589, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fVAR.Designer.cs b/Handler/Project/Dialog/fVAR.Designer.cs new file mode 100644 index 0000000..179cfcb --- /dev/null +++ b/Handler/Project/Dialog/fVAR.Designer.cs @@ -0,0 +1,116 @@ +namespace Project.Dialog +{ + partial class fVAR + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // comboBox1 + // + this.comboBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(0, 0); + this.comboBox1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(326, 36); + this.comboBox1.TabIndex = 0; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2, + this.columnHeader3}); + this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.listView1.FullRowSelect = true; + this.listView1.GridLines = true; + this.listView1.Location = new System.Drawing.Point(0, 36); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(326, 537); + this.listView1.TabIndex = 1; + this.listView1.Tag = "11"; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "IDX"; + // + // columnHeader2 + // + this.columnHeader2.Text = "Title"; + this.columnHeader2.Width = 150; + // + // columnHeader3 + // + this.columnHeader3.Text = "Value"; + this.columnHeader3.Width = 100; + // + // timer1 + // + this.timer1.Interval = 500; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // fVAR + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(326, 573); + this.Controls.Add(this.listView1); + this.Controls.Add(this.comboBox1); + this.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "fVAR"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fVAR"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.fVAR_FormClosed); + this.Load += new System.EventHandler(this.fVAR_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private System.Windows.Forms.ColumnHeader columnHeader3; + private System.Windows.Forms.Timer timer1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fVAR.cs b/Handler/Project/Dialog/fVAR.cs new file mode 100644 index 0000000..602eba3 --- /dev/null +++ b/Handler/Project/Dialog/fVAR.cs @@ -0,0 +1,198 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; + +namespace Project.Dialog +{ + public partial class fVAR : Form + { + public fVAR() + { + InitializeComponent(); + } + + private void fVAR_Load(object sender, EventArgs e) + { + comboBox1.Items.AddRange(new string[] { + "Byte", + "Bool", + "Time", + "String", + "UInt32", + "Int32", + "Dbl", + }); + comboBox1.SelectedIndex = -1; + timer1.Start(); + } + + object itemrefresh = new object(); + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboBox1.SelectedIndex < 0) return; + var strtype = comboBox1.Text.Trim().ToUpper(); + + if (System.Diagnostics.Debugger.IsAttached) + this.TopMost = false; + + lock (itemrefresh) + { + listView1.Items.Clear(); + Array valuelist; + if (strtype == "BOOL") + { + valuelist = Enum.GetValues(typeof(eVarBool)); + foreach (var item in valuelist) + { + var v = (eVarBool)item; + var lv = listView1.Items.Add($"{(int)v}"); + lv.SubItems.Add($"{item}"); + lv.SubItems.Add("--"); + } + } + //else if (strtype == "BYTE") + //{ + // valuelist = Enum.GetValues(typeof(eVarByte)); + // foreach (var item in valuelist) + // { + // var v = (eVarByte)item; + // var lv = listView1.Items.Add($"{(int)v}"); + // lv.SubItems.Add($"{item}"); + // lv.SubItems.Add("--"); + // } + //} + else if (strtype == "STRING") + { + valuelist = Enum.GetValues(typeof(eVarString)); + foreach (var item in valuelist) + { + var v = (eVarString)item; + var lv = listView1.Items.Add($"{(int)v}"); + lv.SubItems.Add($"{item}"); + lv.SubItems.Add("--"); + } + } + else if (strtype == "TIME") + { + valuelist = Enum.GetValues(typeof(eVarTime)); + foreach (var item in valuelist) + { + var v = (eVarTime)item; + var lv = listView1.Items.Add($"{(int)v}"); + lv.SubItems.Add($"{item}"); + lv.SubItems.Add("--"); + } + } + else if (strtype == "INT32") + { + valuelist = Enum.GetValues(typeof(eVarInt32)); + foreach (var item in valuelist) + { + var v = (eVarInt32)item; + var lv = listView1.Items.Add($"{(int)v}"); + lv.SubItems.Add($"{item}"); + lv.SubItems.Add("--"); + } + } + else if (strtype == "DBL") + { + valuelist = Enum.GetValues(typeof(eVarDBL)); + foreach (var item in valuelist) + { + var v = (eVarDBL)item; + var lv = listView1.Items.Add($"{(int)v}"); + lv.SubItems.Add($"{item}"); + lv.SubItems.Add("--"); + } + } + listView1.Tag = strtype; + } + + + } + + private void fVAR_FormClosed(object sender, FormClosedEventArgs e) + { + timer1.Stop(); + } + + private void timer1_Tick(object sender, EventArgs e) + { + if (comboBox1.SelectedIndex < 0) return; + if (this.listView1.Items.Count < 1) return; + + lock (itemrefresh) + { + var strtype = comboBox1.Text.Trim().ToUpper(); + if (strtype != listView1.Tag.ToString()) return; + + foreach (ListViewItem item in listView1.Items) + { + var idx = int.Parse(item.SubItems[0].Text); + //if (strtype == "UINT32") + //{ + // var v = VAR.U32[idx]; + // item.SubItems[2].Text = v.ToString(); + // item.ForeColor = v == 0 ? Color.DimGray : Color.Black; + //} + //else + if (strtype == "INT32") + { + var v = VAR.I32[idx];// ((eVarByte)idx); + item.SubItems[2].Text = v.ToString(); + item.ForeColor = v == 0 ? Color.DimGray : Color.Black; + } + else if (strtype == "BYTE") + { + var v = VAR.I32[idx];// ((eVarByte)idx); + item.SubItems[2].Text = v.ToString(); + item.ForeColor = v == 0 ? Color.DimGray : Color.Black; + } + else if (strtype == "BOOL") + { + var v = VAR.BOOL[idx];//[(eVarBool)idx); + item.SubItems[2].Text = v ? "O" : "X"; + item.ForeColor = v ? Color.Green : Color.DimGray; + } + else if (strtype == "STRING") + { + var v = VAR.STR[idx];// .GetString((eVarString)idx); + if (v == null) item.SubItems[2].Text = "(null)"; + else item.SubItems[2].Text = v.ToString(); + item.ForeColor = v.isEmpty() ? Color.DimGray : Color.Black; + } + else if (strtype == "TIME") + { + var v = VAR.TIME[idx];// ((eVarTime)idx); + if (v.Year == 1982) + { + item.SubItems[2].Text = "--"; + item.ForeColor = Color.DimGray; + } + else + { + item.SubItems[2].Text = v.ToString(); + item.ForeColor = Color.Black; + } + } + else if (strtype == "DBL") + { + var v = VAR.DBL[idx];// .GetString((eVarString)idx); + item.SubItems[2].Text = v.ToString(); + item.ForeColor = v == 0 ? Color.DimGray : Color.Black; + } + + } + } + + } + } +} diff --git a/Handler/Project/Dialog/fVAR.resx b/Handler/Project/Dialog/fVAR.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/Handler/Project/Dialog/fVAR.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Handler/Project/Dialog/fWebView.cs b/Handler/Project/Dialog/fWebView.cs new file mode 100644 index 0000000..953a988 --- /dev/null +++ b/Handler/Project/Dialog/fWebView.cs @@ -0,0 +1,207 @@ +using System; +using System.Windows.Forms; +using Microsoft.Web.WebView2.Core; +using Microsoft.Web.WebView2.WinForms; + +namespace Project.Dialog +{ + public partial class fWebView : Form + { + private WebView2 webView2; + private TextBox txtUrl; + private Button btnGo; + private Button btnBack; + private Button btnForward; + private Button btnRefresh; + + public fWebView() + { + InitializeComponent(); + InitializeWebView(); + } + + private void InitializeComponent() + { + this.SuspendLayout(); + + // Form + this.ClientSize = new System.Drawing.Size(1200, 800); + this.Text = "WebView2 Browser"; + this.Name = "fWebView"; + + // URL TextBox + this.txtUrl = new TextBox(); + this.txtUrl.Location = new System.Drawing.Point(100, 10); + this.txtUrl.Size = new System.Drawing.Size(900, 25); + this.txtUrl.KeyDown += TxtUrl_KeyDown; + + // Go Button + this.btnGo = new Button(); + this.btnGo.Location = new System.Drawing.Point(1010, 10); + this.btnGo.Size = new System.Drawing.Size(70, 25); + this.btnGo.Text = "Go"; + this.btnGo.Click += BtnGo_Click; + + // Back Button + this.btnBack = new Button(); + this.btnBack.Location = new System.Drawing.Point(10, 10); + this.btnBack.Size = new System.Drawing.Size(25, 25); + this.btnBack.Text = "◀"; + this.btnBack.Click += BtnBack_Click; + + // Forward Button + this.btnForward = new Button(); + this.btnForward.Location = new System.Drawing.Point(40, 10); + this.btnForward.Size = new System.Drawing.Size(25, 25); + this.btnForward.Text = "▶"; + this.btnForward.Click += BtnForward_Click; + + // Refresh Button + this.btnRefresh = new Button(); + this.btnRefresh.Location = new System.Drawing.Point(70, 10); + this.btnRefresh.Size = new System.Drawing.Size(25, 25); + this.btnRefresh.Text = "⟳"; + this.btnRefresh.Click += BtnRefresh_Click; + + // WebView2 + this.webView2 = new WebView2(); + this.webView2.Location = new System.Drawing.Point(10, 45); + this.webView2.Size = new System.Drawing.Size(1170, 740); + + this.Controls.Add(this.txtUrl); + this.Controls.Add(this.btnGo); + this.Controls.Add(this.btnBack); + this.Controls.Add(this.btnForward); + this.Controls.Add(this.btnRefresh); + this.Controls.Add(this.webView2); + + this.ResumeLayout(false); + } + + private async void InitializeWebView() + { + try + { + await webView2.EnsureCoreWebView2Async(null); + + // 네비게이션 이벤트 핸들러 + webView2.CoreWebView2.NavigationCompleted += CoreWebView2_NavigationCompleted; + webView2.CoreWebView2.SourceChanged += CoreWebView2_SourceChanged; + + // 기본 페이지 로드 + webView2.CoreWebView2.Navigate("http://localhost:3000"); + txtUrl.Text = "http://localhost:3000"; + } + catch (Exception ex) + { + MessageBox.Show($"WebView2 초기화 실패: {ex.Message}", "Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void CoreWebView2_SourceChanged(object sender, CoreWebView2SourceChangedEventArgs e) + { + txtUrl.Text = webView2.Source.ToString(); + } + + private void CoreWebView2_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e) + { + btnBack.Enabled = webView2.CanGoBack; + btnForward.Enabled = webView2.CanGoForward; + } + + private void BtnGo_Click(object sender, EventArgs e) + { + NavigateToUrl(); + } + + private void TxtUrl_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + NavigateToUrl(); + e.Handled = true; + e.SuppressKeyPress = true; + } + } + + private void NavigateToUrl() + { + string url = txtUrl.Text; + if (!url.StartsWith("http://") && !url.StartsWith("https://")) + { + url = "http://" + url; + } + + try + { + webView2.CoreWebView2.Navigate(url); + } + catch (Exception ex) + { + MessageBox.Show($"페이지 로드 실패: {ex.Message}", "Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void BtnBack_Click(object sender, EventArgs e) + { + if (webView2.CanGoBack) + { + webView2.GoBack(); + } + } + + private void BtnForward_Click(object sender, EventArgs e) + { + if (webView2.CanGoForward) + { + webView2.GoForward(); + } + } + + private void BtnRefresh_Click(object sender, EventArgs e) + { + webView2.Reload(); + } + + // JavaScript 실행 예제 메서드 + public async void ExecuteScriptAsync(string script) + { + try + { + string result = await webView2.CoreWebView2.ExecuteScriptAsync(script); + MessageBox.Show($"실행 결과: {result}"); + } + catch (Exception ex) + { + MessageBox.Show($"스크립트 실행 실패: {ex.Message}", "Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + // C#에서 JavaScript로 메시지 전송 + public void PostMessageToWeb(string message) + { + try + { + webView2.CoreWebView2.PostWebMessageAsString(message); + } + catch (Exception ex) + { + MessageBox.Show($"메시지 전송 실패: {ex.Message}", "Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + // JavaScript에서 C#으로 메시지 수신 + private void SetupWebMessageReceived() + { + webView2.CoreWebView2.WebMessageReceived += (sender, e) => + { + string message = e.TryGetWebMessageAsString(); + MessageBox.Show($"웹에서 받은 메시지: {message}"); + }; + } + } +} diff --git a/Handler/Project/Dialog/fZPLEditor.Designer.cs b/Handler/Project/Dialog/fZPLEditor.Designer.cs new file mode 100644 index 0000000..0f0fe50 --- /dev/null +++ b/Handler/Project/Dialog/fZPLEditor.Designer.cs @@ -0,0 +1,176 @@ + +namespace Project.Dialog +{ + partial class fZPLEditor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); + this.logTextBox1 = new arCtl.LogTextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStrip1.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // richTextBox1 + // + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.richTextBox1.Location = new System.Drawing.Point(0, 39); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(664, 440); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = ""; + // + // toolStrip1 + // + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton1, + this.toolStripButton2, + this.toolStripButton3, + this.toolStripButton4}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(664, 39); + this.toolStrip1.TabIndex = 1; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripButton1 + // + this.toolStripButton1.Image = global::Project.Properties.Resources.icons8_folder_40; + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(69, 36); + this.toolStripButton1.Text = "Load"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // toolStripButton2 + // + this.toolStripButton2.Image = global::Project.Properties.Resources.icons8_save_40; + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(68, 36); + this.toolStripButton2.Text = "Save"; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click); + // + // toolStripButton3 + // + this.toolStripButton3.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton3.Image = global::Project.Properties.Resources.icons8_printer_48; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(82, 36); + this.toolStripButton3.Text = "Print(L)"; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // + // toolStripButton4 + // + this.toolStripButton4.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton4.Image = global::Project.Properties.Resources.icons8_printer_48; + this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton4.Name = "toolStripButton4"; + this.toolStripButton4.Size = new System.Drawing.Size(83, 36); + this.toolStripButton4.Text = "Print(R)"; + this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); + // + // logTextBox1 + // + this.logTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[0]; + this.logTextBox1.DateFormat = "yy-MM-dd HH:mm:ss"; + this.logTextBox1.DefaultColor = System.Drawing.Color.LightGray; + this.logTextBox1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.logTextBox1.EnableDisplayTimer = true; + this.logTextBox1.EnableGubunColor = true; + this.logTextBox1.Font = new System.Drawing.Font("Consolas", 9F); + this.logTextBox1.ListFormat = "[{0}] {1}"; + this.logTextBox1.Location = new System.Drawing.Point(0, 479); + this.logTextBox1.MaxListCount = ((ushort)(200)); + this.logTextBox1.MaxTextLength = ((uint)(4000u)); + this.logTextBox1.MessageInterval = 50; + this.logTextBox1.Name = "logTextBox1"; + this.logTextBox1.Size = new System.Drawing.Size(664, 100); + this.logTextBox1.TabIndex = 2; + this.logTextBox1.Text = ""; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1}); + this.statusStrip1.Location = new System.Drawing.Point(0, 579); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(664, 22); + this.statusStrip1.TabIndex = 3; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(121, 17); + this.toolStripStatusLabel1.Text = "toolStripStatusLabel1"; + // + // fZPLEditor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(664, 601); + this.Controls.Add(this.richTextBox1); + this.Controls.Add(this.logTextBox1); + this.Controls.Add(this.toolStrip1); + this.Controls.Add(this.statusStrip1); + this.Name = "fZPLEditor"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ZPL Printer Code Editor"; + this.Load += new System.EventHandler(this.fZPLEditor_Load); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripButton toolStripButton4; + private arCtl.LogTextBox logTextBox1; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + } +} \ No newline at end of file diff --git a/Handler/Project/Dialog/fZPLEditor.cs b/Handler/Project/Dialog/fZPLEditor.cs new file mode 100644 index 0000000..13c7015 --- /dev/null +++ b/Handler/Project/Dialog/fZPLEditor.cs @@ -0,0 +1,91 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fZPLEditor : Form + { + string fn = string.Empty; + public fZPLEditor(string fn_) + { + InitializeComponent(); + this.fn = fn_; + this.FormClosed += FZPLEditor_FormClosed; + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[] { + new arCtl.sLogMessageColor("NORM",Color.White), + new arCtl.sLogMessageColor("ERR", Color.Red), + new arCtl.sLogMessageColor("WARN",Color.Tomato), + new arCtl.sLogMessageColor("INFO",Color.SkyBlue), + new arCtl.sLogMessageColor("BCD", Color.Yellow) + }; + this.logTextBox1.EnableDisplayTimer = false; + this.logTextBox1.DateFormat = "HH:mm:ss"; + this.logTextBox1.ForeColor = Color.White; + toolStripStatusLabel1.Text = fn_; + } + + private void FZPLEditor_FormClosed(object sender, FormClosedEventArgs e) + { + PUB.log.RaiseMsg -= Log_RaiseMsg; + } + + private void fZPLEditor_Load(object sender, EventArgs e) + { + if (System.IO.File.Exists(this.fn)) + this.richTextBox1.Text = System.IO.File.ReadAllText(this.fn, System.Text.Encoding.Default); + + PUB.log.RaiseMsg += Log_RaiseMsg; + } + + private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + this.logTextBox1.AddMsg(LogTime, TypeStr, Message); + } + + private void toolStripButton1_Click(object sender, EventArgs e) + { + //load + if (UTIL.MsgQ("Do you want to reload?") == DialogResult.Yes) + this.richTextBox1.Text = System.IO.File.ReadAllText(this.fn, System.Text.Encoding.Default); + } + + private void toolStripButton2_Click(object sender, EventArgs e) + { + //save + if (UTIL.MsgQ("Do you want to save?") == DialogResult.Yes) + System.IO.File.WriteAllText(this.fn, this.richTextBox1.Text.Trim(), System.Text.Encoding.Default); + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + //right + if (PUB.PrinterR.IsOpen) + { + var prn = PUB.PrinterR.Print(this.richTextBox1.Text); + if (prn.result == false) PUB.log.AddE(prn.errmessage); + + } + else PUB.log.AddAT("Printer R not connected"); + } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + //left + if (PUB.PrinterL.IsOpen) + { + var prn = PUB.PrinterL.Print(this.richTextBox1.Text); + if (prn.result == false) PUB.log.AddE(prn.errmessage); + } + else + PUB.log.AddAT("Printer L not connected"); + } + } +} diff --git a/Handler/Project/Dialog/fZPLEditor.resx b/Handler/Project/Dialog/fZPLEditor.resx new file mode 100644 index 0000000..81868d6 --- /dev/null +++ b/Handler/Project/Dialog/fZPLEditor.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 124, 17 + + \ No newline at end of file diff --git a/Handler/Project/History.txt b/Handler/Project/History.txt new file mode 100644 index 0000000..8166f53 --- /dev/null +++ b/Handler/Project/History.txt @@ -0,0 +1,154 @@ +1. 초기화 후 카트 내려가게 하기 +2. 프린터 위치값이 조회되지 않고 오류나는 경우 있음 -> 로컬자료로 보정하자 +3. 데이터베이스 조회시 no lock 추가하기 +4. 완료대기중에 조건을 화면에 표시하자 1번 장비에서 완료가 되지 않는 경우가 있음 + + + +qucick onctrol 에서 실린더 on 시 버튼 배경색이 검정으로 보인다. +피커 실린더는 항상 사용하도록 한다 (길이가 안나옴 / 안쓰면 스프링 여유가 없다.) + + +돌아가는거,, 3개 고칠거,바코드 + +21PGJM0225C1E3R0WB01D,P105-80181-03R0,1TSC1527EE5,1J163SC00G83,16D20210527,14D20211127,Q20000,1PGJM0225C1E3R0WB01D:04:90%:3 + +컨트롤버튼이 안보인다 +모션초기화 오류가 게속 나온다 어딘가에서 off하는듯 +비젼 acq를 항상 유지하는 것으로 한다 (작업시작시 on , 작업 종료시 off); + +축 정보 + +-피치- +프린터Z : 10mm 피치 +프린터Y : 한바퀴가 49.5mm +피커Z : 10mm +피커X : 20mm +Theta : 1/50 + +0 : Picker X +1 : Picker Z +2 : Print Left - Y : 0.00325 +3 : Print Left Up/Dn +4 : Print Right - Y : 0.00325 +5 : Print Right Up/Dn +6 : Theta + + +//특정좌표가 기준점으로부터 몇도 틀어져 있는가? +math.atan2(PY-CY,PX-CX) + +//회전후좌표계산 +x = root( (px - cx)^2 + (py-cy)^2 ) * cos@ + cx +y = root( px^2 + py^2 ) * sin@ + cy + + +1. 카트교환시 - 가장 아래로 내리고 마그넷을 푸는 방식 확인 필요 / 동작중에도 교환을 누르면 / 교환프로세서를 port 시퀀스에 집어넣어야할듯 함. +2. SID변환등의 작업을 완료했을 떄 DB에도 해당 내용을 업데이트 해준다. SID별 Part no 와 customer Code 등 +3. 릴 ID는 신규생성이 필요하다 101=>103 변환 테이블 확인 필요 +4. 초반 시작시에 . 중앙에 너무 머무리는 경향이 있다. 아이템을 잡은 후 바로 가지않고, 중앙포트가 안정되면 그떄서야 움직인다. +5. 추가로 검증 할 수 있는 프로그램을 개발하여 제대로 붙었는지 체크한다. +검증 완료시 해당 비젼쪽에 검증 확인 메세지를 추가한다.(잘 보이게) + + + +미처리내역 +[h/w] + port0,2번 detect 센서 + 릴 카트 + 피커 진공패드 +[s/w] + 비젼 관련 (바코드) + port0,2번 센서가 없어서 해당 기능 oFF됨 + 최초 작업 실행 , 촬영작업 없이 실행 됨 + history 저장 기능 + 간헐적으로 진행중에 멈추는 현상 + 카메라 live 활성화시 해당 카메라만 활성화할 수 잇도록 context menu 에서 호출 인덱스 확인 필요 + 카트크기정보 및 카드관련 코드 추가 + 에러메세지 잡아야 함 + 작업완료시 데이터 저장하는 기능 추가 + JOBEND 화면 정리 + 작업시작 화면 멘트도 변경한다 + QR코드 읽는 명령에 유레시스의 것도 넣는다. + QR코드 읽기 실패시에 밝기를 += 3% 처리를 한다. + 릴 원형 감지하고 마스킹영역을 설정한다 + 중앙만 작업 완료 전에 limit 센서 터치되면 최하단으로 이동 : + + RDR 처리된 sid 로 변경된 것들 + 인쇄위치의 자동 결정 및 관련 UI 에 반영하기 (인쇄위치는 총 4면만 지원한다 N,E,W,S); + 인쇄위치에 따른 모션의 좌표 관련 처리 ( 모든 영역을 지정하거나 미리 계산해서 입력하거나 -> 비젼의 scale 값은 미리 계산해도 가능할 듯) + 티칭화면에서 길이(px) 값 확인하는 ruller 모드 추가 + 티칭화면에서 Mask 이미지 생성하는 화면 추가 (흑백 배경에 백색 원 추가하기) + 비젼 진행시 마스크 이미지 적용기능 (각 크기에 따름) + + +101SID bypass 옵션추가필요 +서버데이터 통신 기능 추가 필요(json) +비젼프로그램 통신이 느리다. 빠르게 할 방법 필요 함 + + +230511 chi bypass 모드 적용 완료 + => 피커 회전 off + => 인쇄 작업 off + 작업시작시 excel import 기능 제거 + 작업시작시 basemode save 시 오류메세지 추가 + 상단 카메라 옵션에서 비젼L/R에 trigger on/off 명령 추가 + + +230504 chi 작업완료후 10초이상 동작이 없는 경우에 완료되도록 함 + 컨베어모드관련 UI변경 작업 + +230503 chi 키엔스2대에 대한 코드 추가 + 초기 시작시 바코드 패턴 오류 처리 + 컨베어 모드를 옵션화 (기존 장비 호환됨) + + +220322 chi UI 저해상도 모드 추가 + +211201 chi offline mode 와, dry run 정의 +210414 chi 작업완료시 모든 포트를 아래로 내린다. + 포트가 하단 리밋에 걸리면 "포트잠금"을 해제 한다 + 로더포트의 오버로드 확인시 작업 시작 안됨 + 좌/우 활성화 여부에 따라서 포트의 동작 on/off 결정 + 비활성화된 축에 이동이 금지 되도록 코드 추가 + 최초 실행시 "포트잠금" 해제 기능이 1회 동작하지 않는 현상 수정 + +210325 chi 위치리셋후에 오른쪽으로 비키게 됨 +210302 chi 작업형태에 return 항목 추가 return 시에는 신규 생성시 return 이 기본 체크되게 함 + 모션작업시 timeout 항목에 -1을 입력한 데이터는 timeout 을 적용하지 않게함 + 바코드 검증 실패 메세지 변경 (mfg date 항목을 추가하고 rid는 줄을 분리 함) + +210112 chi 감지된 카트크기 화면에 표시함 + 비젼 외각 인식 관련 코드 추가 중 + +201229 chi + 비젼촬영횟수도 저장하자 + 이미지파일 저장하기 + PRINTR_AIRON , PRINTL_AIRON 핀이 서로 바뀜 + 프린트 횟수 추가 해서 보여주기 + 비젼촬영작업시 0,2번의 경우에는 프린터의Y축 값도 확인해야함 + 비젼iLOCK 이름중 PY 를 피커X로 변경 해야 함 + 프린트 출력이 다량 발생하는 오류 있음( 이거 해결하면 시퀀스는 일단 됨) + 비젼의 lock 정보도 loader 컨트롤에 전달하고 화면에 표시한다 + 전면에 카드 감지센서가 들어오고 몇초있다가 마그넷을 활성화 해준다. + +201224 chi X축의 안전위치를 화면에 표시해준다. + 마그넷 활성화를 화면에 표시해준다. + Theta는 홈 안잡음 + +201223* chi Loader 컨트롤의 모터 표시 방향 변경 + 인터락제한조건 수정 + 로더컨트롤에 safezone 과 포트 magnet 상태 표시함 + ILock 상태 display + +201223 chi [O]피커 Z축 - Limit 동작 안함 + [O]Printer Y 축 떨림 해결 + +201222 chi 모션화면에서 SVON 이 제대로 표시되지 않는 현상 수정 + 포트 up/dn 위치 확인 및 limit 센서 위치 조정 + 모션의 limit 센서 및 org 위치 동작 확인 (피커 z는 n-lim 은 동작 안함) + 모션화면에서 svon 과 p.clr 버튼 추가 + Y-PICKER -> X-PICKER 명칭 변경 + 카메라3대 확인 라이브 영상 확인 +201005 chi 시작시 카메라 연결확인 +200915 chi 프로젝트초기화 \ No newline at end of file diff --git a/Handler/Project/Manager/DBHelper.cs b/Handler/Project/Manager/DBHelper.cs new file mode 100644 index 0000000..cb8d859 --- /dev/null +++ b/Handler/Project/Manager/DBHelper.cs @@ -0,0 +1,376 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data.SqlClient; +using System.Data; +using AR; + +namespace Project +{ + public static class DBHelper + { + public static SqlConnection GetConnection() + { + var cs = SETTING.Data.WMS_DB_PROD ? Properties.Settings.Default.WMS_PRD : Properties.Settings.Default.WMS_DEV; + return new SqlConnection(cs); + } + + public static object ExecuteScalar(string sql, params SqlParameter[] p) + { + var cn = GetConnection(); + try + { + var cmd = new SqlCommand(sql, cn); + if (p != null) cmd.Parameters.AddRange(p); + cn.Open(); + return cmd.ExecuteScalar(); + } + catch (Exception ex) + { + // 예외 처리 (필요에 따라 로깅 추가) + return null; + } + finally + { + if (cn != null && cn.State != ConnectionState.Closed) + cn.Close(); + } + } + + + public static int ExecuteNonQuery(string sql, params SqlParameter[] p) + { + var cn = GetConnection(); + try + { + var cmd = new SqlCommand(sql, cn); + if (p != null) cmd.Parameters.AddRange(p); + cn.Open(); + return cmd.ExecuteNonQuery(); + } + catch (Exception ex) + { + // 예외 처리 (필요에 따라 로깅 추가) + return -1; + } + finally + { + if (cn != null && cn.State != ConnectionState.Closed) + cn.Close(); + } + } + + // CodeIgniter 스타일의 UPDATE 헬퍼 (Dictionary 방식) + public static int Update(string tableName, Dictionary data, string whereClause = "", params SqlParameter[] whereParams) + { + if (data == null || data.Count == 0) + return 0; + + var setClause = new List(); + var parameters = new List(); + int paramIndex = 0; + + // SET 절 생성 + foreach (var item in data) + { + string paramName = $"@set{paramIndex}"; + setClause.Add($"{item.Key} = {paramName}"); + parameters.Add(new SqlParameter(paramName, item.Value ?? DBNull.Value)); + paramIndex++; + } + + // WHERE 절 파라미터 추가 + if (whereParams != null) + { + parameters.AddRange(whereParams); + } + + string sql = $"UPDATE {tableName} SET {string.Join(", ", setClause)}"; + if (!string.IsNullOrEmpty(whereClause)) + { + sql += $" WHERE {whereClause}"; + } + + return ExecuteNonQuery(sql, parameters.ToArray()); + } + + // SqlParameter 배열 방식의 UPDATE 헬퍼 + public static int Update(string tableName, string setClause, string whereClause = "", params SqlParameter[] parameters) + { + string sql = $"UPDATE {tableName} SET {setClause}"; + if (!string.IsNullOrEmpty(whereClause)) + { + sql += $" WHERE {whereClause}"; + } + + return ExecuteNonQuery(sql, parameters); + } + + + // 여러 조건을 위한 헬퍼 (Dictionary 방식) + public static int UpdateWhere(string tableName, Dictionary data, Dictionary whereConditions) + { + if (whereConditions == null || whereConditions.Count == 0) + return Update(tableName, data); + + var whereClause = new List(); + var whereParams = new List(); + int paramIndex = 0; + + foreach (var condition in whereConditions) + { + string paramName = $"@where{paramIndex}"; + whereClause.Add($"{condition.Key} = {paramName}"); + whereParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value)); + paramIndex++; + } + + return Update(tableName, data, string.Join(" AND ", whereClause), whereParams.ToArray()); + } + + public static int UpdateWhere(string tableName, string setClause, string whereColumn, object whereValue) + { + return Update(tableName, setClause, $"{whereColumn} = @whereValue", new SqlParameter("@whereValue", whereValue)); + } + + // CodeIgniter 스타일의 DELETE 헬퍼 + public static int Delete(string tableName, string whereClause = "", params SqlParameter[] whereParams) + { + string sql = $"DELETE FROM {tableName}"; + if (!string.IsNullOrEmpty(whereClause)) + { + sql += $" WHERE {whereClause}"; + } + + return ExecuteNonQuery(sql, whereParams); + } + + // 간단한 WHERE 조건을 위한 DELETE 헬퍼 + public static int DeleteWhere(string tableName, string whereColumn, object whereValue) + { + return Delete(tableName, $"{whereColumn} = @whereValue", new SqlParameter("@whereValue", whereValue)); + } + + // 여러 조건을 위한 DELETE 헬퍼 (Dictionary 방식) + public static int DeleteWhere(string tableName, Dictionary whereConditions) + { + if (whereConditions == null || whereConditions.Count == 0) + return Delete(tableName); // WHERE 절 없이 전체 삭제 + + var whereClause = new List(); + var whereParams = new List(); + int paramIndex = 0; + + foreach (var condition in whereConditions) + { + string paramName = $"@where{paramIndex}"; + whereClause.Add($"{condition.Key} = {paramName}"); + whereParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value)); + paramIndex++; + } + + return Delete(tableName, string.Join(" AND ", whereClause), whereParams.ToArray()); + } + + // SqlParameter 배열을 받는 DELETE 헬퍼 오버로드 + public static int DeleteWhere(string tableName, string whereClause, params SqlParameter[] whereParams) + { + return Delete(tableName, whereClause, whereParams); + } + + // 테이블 전체 삭제 (TRUNCATE 대신 DELETE 사용) + public static int DeleteAll(string tableName) + { + return Delete(tableName); + } + + // CodeIgniter 스타일의 SELECT 헬퍼 + public static DataTable Select(string tableName, string columns = "*", string whereClause = "", params SqlParameter[] whereParams) + { + string sql = $"SELECT {columns} FROM {tableName}"; + if (!string.IsNullOrEmpty(whereClause)) + { + sql += $" WHERE {whereClause}"; + } + + return Get(sql, whereParams); + } + + // 간단한 WHERE 조건을 위한 SELECT 헬퍼 + public static DataTable SelectWhere(string tableName, string columns = "*", string whereColumn = "", object whereValue = null) + { + if (string.IsNullOrEmpty(whereColumn) || whereValue == null) + return Select(tableName, columns); + + return Select(tableName, columns, $"{whereColumn} = @whereValue", new SqlParameter("@whereValue", whereValue)); + } + + // SqlParameter 배열을 받는 SELECT 헬퍼 오버로드 + public static DataTable SelectWhere(string tableName, string columns, string whereClause, params SqlParameter[] whereParams) + { + return Select(tableName, columns, whereClause, whereParams); + } + + // Dictionary로 WHERE 조건을 받는 SELECT 헬퍼 오버로드 + public static DataTable SelectWhere(string tableName, string columns, Dictionary whereConditions) + { + if (whereConditions == null || whereConditions.Count == 0) + return Select(tableName, columns); + + var whereClause = new List(); + var whereParams = new List(); + int paramIndex = 0; + + foreach (var condition in whereConditions) + { + string paramName = $"@where{paramIndex}"; + whereClause.Add($"{condition.Key} = {paramName}"); + whereParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value)); + paramIndex++; + } + + return Select(tableName, columns, string.Join(" AND ", whereClause), whereParams.ToArray()); + } + + // Dictionary로 WHERE 조건을 받는 SELECT 헬퍼 (기본 컬럼 *) + public static DataTable SelectWhere(string tableName, Dictionary whereConditions) + { + return SelectWhere(tableName, "*", whereConditions); + } + + // ORDER BY가 포함된 SELECT 헬퍼 + public static DataTable SelectOrderBy(string tableName, string columns = "*", string whereClause = "", string orderBy = "", params SqlParameter[] whereParams) + { + string sql = $"SELECT {columns} FROM {tableName}"; + if (!string.IsNullOrEmpty(whereClause)) + { + sql += $" WHERE {whereClause}"; + } + if (!string.IsNullOrEmpty(orderBy)) + { + sql += $" ORDER BY {orderBy}"; + } + + return Get(sql, whereParams); + } + + // LIMIT이 포함된 SELECT 헬퍼 (TOP 사용) + public static DataTable SelectLimit(string tableName, int limit, string columns = "*", string whereClause = "", string orderBy = "", params SqlParameter[] whereParams) + { + string sql = $"SELECT TOP {limit} {columns} FROM {tableName}"; + if (!string.IsNullOrEmpty(whereClause)) + { + sql += $" WHERE {whereClause}"; + } + if (!string.IsNullOrEmpty(orderBy)) + { + sql += $" ORDER BY {orderBy}"; + } + + return Get(sql, whereParams); + } + + public static DataRow SelectFirst(string tableName, string columns = "*", Dictionary whereParams = null) + { + if (whereParams == null || whereParams.Count == 0) + return SelectFirst(tableName, columns); + + var whereClause = new List(); + var sqlParams = new List(); + int paramIndex = 0; + + foreach (var condition in whereParams) + { + string paramName = $"@where{paramIndex}"; + whereClause.Add($"{condition.Key} = {paramName}"); + sqlParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value)); + paramIndex++; + } + + var dt = SelectLimit(tableName, 1, columns, string.Join(" AND ", whereClause), "", sqlParams.ToArray()); + return dt.Rows.Count > 0 ? dt.Rows[0] : null; + } + // 단일 행 조회 (첫 번째 행만) + public static DataRow SelectFirst(string tableName, string columns = "*", string whereClause = "", params SqlParameter[] whereParams) + { + var dt = SelectLimit(tableName, 1, columns, whereClause, "", whereParams); + return dt.Rows.Count > 0 ? dt.Rows[0] : null; + } + + // 단일 값 조회 (첫 번째 행의 첫 번째 컬럼) + public static object SelectValue(string tableName, string column, string whereClause = "", params SqlParameter[] whereParams) + { + var row = SelectFirst(tableName, column, whereClause, whereParams); + return row != null ? row[0] : null; + } + + public static T Get(string sql, params SqlParameter[] p) where T : DataTable + { + var dt = (T)Activator.CreateInstance(typeof(T)); + var cn = GetConnection(); + try + { + var cmd = new SqlCommand(sql, cn); + if (p != null) cmd.Parameters.AddRange(p); + var da = new SqlDataAdapter(cmd); + da.Fill(dt); + } + catch (Exception ex) + { + + } + finally + { + if (cn != null && cn.State != ConnectionState.Closed) + cn.Close(); + } + return dt; + } + public static DataTable Get(string sql, params SqlParameter[] p) + { + var dt = new DataTable(); + var cn = GetConnection(); + try + { + var cmd = new SqlCommand(sql, cn); + if (p != null) cmd.Parameters.AddRange(p); + var da = new SqlDataAdapter(cmd); + da.Fill(dt); + } + catch (Exception ex) + { + + } + finally + { + if (cn != null && cn.State != ConnectionState.Closed) + cn.Close(); + } + + return dt; + } + public static void Fill(string sql, DataTable dt, params SqlParameter[] p) + { + var cn = GetConnection(); + try + { + var cmd = new SqlCommand(sql, cn); + if (p != null) cmd.Parameters.Add(p); + var da = new SqlDataAdapter(cmd); + dt = new DataTable(); + da.Fill(dt); + } + catch (Exception ex) + { + + } + finally + { + if (cn != null && cn.State != ConnectionState.Closed) + cn.Close(); + } + } + } +} diff --git a/Handler/Project/Manager/DataBaseManagerCount.cs b/Handler/Project/Manager/DataBaseManagerCount.cs new file mode 100644 index 0000000..01bf524 --- /dev/null +++ b/Handler/Project/Manager/DataBaseManagerCount.cs @@ -0,0 +1,369 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Project.Manager +{ + public class DatabaseManagerCount + { + /// + /// 파일검색방법 + /// + public enum eFileSearchMode + { + Normal, + Project, + Model, + MCCode, + Barcode, + All, + } + + public enum eStripSearchResult + { + None, + OK, + NG, + } + + /// + /// 최종파일 + /// + private String LastFileName; + public string dataPath = string.Empty; + + /// + /// 파일디비초기화작업(클라이언트 갯수만큼 버퍼를 확보한다) + /// + public DatabaseManagerCount() + { + LastFileName = string.Empty; + } + + public Boolean UpdateCountDate(DateTime jobStartTime, int shutIndex, int slotIndex, int count = 1) + { + //대상파일을 설정한다. + var fileName = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "Count", + jobStartTime.Year.ToString("0000"), + jobStartTime.Month.ToString("00"), + jobStartTime.Day.ToString("00"), + "S" + (shutIndex == 0 ? "F" : "B") + "_" + slotIndex.ToString("0000") + ".xml"); + return UpdateCount(fileName, "", count); + } + + public Boolean UpdateCountDM(string DataMatrix, int count = 1) + { + string ww, seq; + PUB.splitID(DataMatrix, out ww, out seq); + + //대상파일을 설정한다. + try + { + var fileName = ""; + if (seq.Length > 2) + { + fileName = System.IO.Path.Combine(this.dataPath, "Count", ww, seq.Substring(0, 2), seq + ".xml"); + } + else + fileName = System.IO.Path.Combine(this.dataPath, "Count", ww, seq + ".xml"); + + return UpdateCount(fileName, DataMatrix, count); + } + catch (Exception ex) + { + PUB.log.AddE("UpdateCountDM(" + DataMatrix + ") " + ex.Message); + return false; + } + } + + public enum eCountTarget + { + Year = 0, + Month, + Day + } + + + /// + /// 전체수량을 업데이트 합니다. + /// + public void AddTotalCount(UInt32 New, UInt32 Good, UInt32 Over, UInt32 Err, UInt32 Empty, string modelName) + { + AddTotalCount(eCountTarget.Year, New, Good, Over, Err, Empty, ""); + AddTotalCount(eCountTarget.Month, New, Good, Over, Err, Empty, ""); + AddTotalCount(eCountTarget.Day, New, Good, Over, Err, Empty, ""); + + //모델별로 추가 기록을 해준다 + if (modelName != "") + { + AddTotalCount(eCountTarget.Year, New, Good, Over, Err, Empty, modelName); + AddTotalCount(eCountTarget.Month, New, Good, Over, Err, Empty, modelName); + AddTotalCount(eCountTarget.Day, New, Good, Over, Err, Empty, modelName); + } + + //기존값에 해당값을 누적만 시킨다. + } + private void AddTotalCount(eCountTarget target, UInt32 New, UInt32 good, UInt32 Over, UInt32 Err, UInt32 Empty, string modelName) + { + DateTime dt = DateTime.Now; + var filename = ""; + if (target == eCountTarget.Year) + { + filename = System.IO.Path.Combine(this.dataPath, "Count", + dt.Year.ToString("0000"), "count.xml"); + } + else if (target == eCountTarget.Month) + { + filename = System.IO.Path.Combine(this.dataPath, "Count", + dt.Year.ToString("0000"), + dt.Month.ToString("00"), "count.xml"); + } + else if (target == eCountTarget.Day) + { + filename = System.IO.Path.Combine(this.dataPath, "Count", + dt.Year.ToString("0000"), + dt.Month.ToString("00"), + dt.Day.ToString("00"), "count.xml"); + } + + var keyname = modelName == "" ? "userdata" : modelName; + + //파일이 없다면 생성한다 + var fi = new System.IO.FileInfo(filename); + if (fi.Directory.Exists == false) fi.Directory.Create(); + var xml = new AR.XMLHelper(fi.FullName); + if (xml.Exist() == false) xml.CreateFile(); + + var str_new = xml.get_Data(keyname,"cnt_new"); + var str_good = xml.get_Data(keyname, "cnt_good"); + var str_over = xml.get_Data(keyname, "cnt_over"); + var str_empty = xml.get_Data(keyname, "cnt_empty"); + var str_err = xml.get_Data(keyname, "cnt_error"); + if (str_new == "") str_new = "0"; + if (str_good == "") str_good = "0"; + if (str_over == "") str_over = "0"; + if (str_empty == "") str_empty = "0"; + if (str_err == "") str_err = "0"; + + var cnt_New = UInt32.Parse(str_new); + var cnt_good = UInt32.Parse(str_good); + var cnt_Over = UInt32.Parse(str_over); + var cnt_Empty = UInt32.Parse(str_empty); + var cnt_Err = UInt32.Parse(str_err); + + //기존수량에 누적 + cnt_New += New; + cnt_good += good; + cnt_Over += Over; + cnt_Empty += Empty; + cnt_Err += Err; + + //값을 더해서 다시 기록해준다. + xml.set_Data(keyname, "cnt_new", (cnt_New).ToString()); + xml.set_Data(keyname, "cnt_good", cnt_good.ToString()); + xml.set_Data(keyname, "cnt_over", cnt_Over.ToString()); + xml.set_Data(keyname, "cnt_empty", cnt_Empty.ToString()); + xml.set_Data(keyname, "cnt_error", cnt_Err.ToString()); + string msg; + xml.Save(out msg); + } + + public struct eCountData + { + public UInt32 NewCount; + public UInt32 GoodCount; + public UInt32 OverCount; + public UInt32 EmptyCount; + public UInt32 ErrorCount; + public UInt32 TotalCount + { + get + { + return NewCount + GoodCount + OverCount + EmptyCount + ErrorCount; + } + } + public void clear() + { + NewCount = 0; + GoodCount = 0; + OverCount = 0; + EmptyCount = 0; + ErrorCount = 0; + } + } + + public eCountData ReadTotalCount(eCountTarget target,string modelName) + { + var cnt = new eCountData(); + cnt.clear(); + + DateTime dt = DateTime.Now; + var fi = ""; + if (target == eCountTarget.Year) + { + fi = System.IO.Path.Combine(this.dataPath, "Count", + dt.Year.ToString("0000"), "count.xml"); + } + else if (target == eCountTarget.Month) + { + fi = System.IO.Path.Combine(this.dataPath, "Count", + dt.Year.ToString("0000"), + dt.Month.ToString("00"), "count.xml"); + } + else if (target == eCountTarget.Day) + { + fi = System.IO.Path.Combine(this.dataPath, "Count", + dt.Year.ToString("0000"), + dt.Month.ToString("00"), + dt.Day.ToString("00"), "count.xml"); + } + + var appkey = modelName == "" ? "userdata" : modelName; + + //년도데이터가없다면 처리안함 + if (System.IO.File.Exists(fi)) + { + var xmlYear = new AR.XMLHelper(fi); + var str_new = xmlYear.get_Data(appkey,"cnt_new"); + var str_good = xmlYear.get_Data(appkey, "cnt_good"); + var str_over = xmlYear.get_Data(appkey, "cnt_over"); + var str_empty = xmlYear.get_Data(appkey, "cnt_empty"); + var str_err = xmlYear.get_Data(appkey, "cnt_error"); + + if (str_new == "") str_new = "0"; + if (str_good == "") str_good = "0"; + if (str_over == "") str_over = "0"; + if (str_empty == "") str_empty = "0"; + if (str_err == "") str_err = "0"; + + cnt.NewCount = UInt32.Parse(str_new); + cnt.GoodCount = UInt32.Parse(str_good); + cnt.OverCount = UInt32.Parse(str_over); + cnt.EmptyCount = UInt32.Parse(str_empty); + cnt.ErrorCount = UInt32.Parse(str_err); + } + + return cnt; + } + + //해다 자료가 있다면 수량을 올려주고, 그렇지 않다면 파일을 생성해준다. + private Boolean UpdateCount(string fileName, string DataMatrix, int count = 1) + { + var fi = new System.IO.FileInfo(fileName); + + try + { + var xml = new AR.XMLHelper(fileName); + var newCount = count; + if (fi.Exists == false) + { + //신규이다 + if (fi.Directory.Exists == false) fi.Directory.Create(); + + //생성해서 추가한다 + xml.CreateFile(); + xml.set_Data("id", DataMatrix); + newCount = 2; + } + else + { + //기존에 있으므로 수량을 읽어서 증가시킨다. + int curCnt; + var cntStr = xml.get_Data("count"); + if (int.TryParse(cntStr, out curCnt) == false) + { + curCnt = 2; + PUB.log.AddE("Failed to read existing usage count. Counter string=" + cntStr + ". Setting to default value(1)"); + } + newCount = curCnt + newCount; + } + xml.set_Data("count", newCount.ToString()); + + //이수량입력되는 시점의 데이터를 기록한다 200117 + string saveMssage; + xml.set_Data("History" + newCount.ToString("000"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + xml.Save(out saveMssage); + + LastFileName = fileName; + return true; + } + catch + { + return false; + } + } + + + /// + /// 지정된 파일의 모든 내용을 읽어서 DataTable 로 반환합니다. + /// + /// + /// + public Dictionary GetDatas(int sYear, int sWorkWeek, int eYear, int eWorkWeek, string searchDataMatrix = "") + { + var retval = new Dictionary(); + //모든파일을 대상으로한다. + + List retfiles = new List(); + + //날짜사이의 모든 파일을 대상으로해야함 + int sy = sYear; + int ey = eYear; + int sw = sWorkWeek; + int ew = eWorkWeek; + + int eym = ey * 100 + ew; + int sym = sy * 100 + sw; + + Boolean endtast = false; + for (int y = sy; y <= ey; y++) + { + var yPath = System.IO.Path.Combine(dataPath, "Count", y.ToString("0000")); + if (System.IO.Directory.Exists(yPath) == false) continue; + + for (int w = 1; w <= 50; w++) + { + var ym = y * 100 + w; + if (ym == eym) endtast = true; //마지막 날짜이다. + if (ym < sym) continue; //이전 WW는 넘어간다 + + var path = new System.IO.DirectoryInfo(System.IO.Path.Combine(yPath, w.ToString("00"))); + if (path.Exists == false) continue; //경로가 없다면 처리하지 않음 + + //검색할 파일 혹은 조건을 생성 + var searchFileName = (searchDataMatrix == "") ? "*.xml" : (searchDataMatrix + ".xml"); + + var files = path.GetFiles(searchFileName, System.IO.SearchOption.TopDirectoryOnly); + foreach (var file in files) + { + try + { + var xml = new AR.XMLHelper(file.FullName); + var id = xml.get_Data("id"); + int curCnt; + var cntStr = xml.get_Data("count"); + if (int.TryParse(cntStr, out curCnt) == false) + { + curCnt = 1; + PUB.log.AddE("Failed to read existing usage count. Counter string=" + cntStr + ". Setting to default value(1)"); + } + retval.Add(id, curCnt); + } + catch (Exception ex) + { + PUB.log.AddE("database count getdata" + ex.Message); + } + } + + if (endtast) + break; // TODO: might not be correct. Was : Exit For + } + if (endtast) + break; // TODO: might not be correct. Was : Exit For + } + return retval; + } + + } +} diff --git a/Handler/Project/Manager/DatabaseManager.cs b/Handler/Project/Manager/DatabaseManager.cs new file mode 100644 index 0000000..59f6264 --- /dev/null +++ b/Handler/Project/Manager/DatabaseManager.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Project +{ + public static class DB + { + public static int ChangeRegExName(string oldname, string newname) + { + var sql = DBHelper.UpdateWhere("K4EE_Component_Reel_RegExRule", + new Dictionary(){ + { "CustCode",newname } + }, new Dictionary() + { + { "CustCode",oldname } + }); + return sql; + } + public static int CopyRegEx(string oldname, string newname) + { + var sql = "insert into K4EE_Component_Reel_RegExRule(custcode,seq,description,symbol,pattern,groups,isenable,istrust,isamkstd,isignore)" + + $" select '{newname}',seq,description,symbol,pattern,groups,isenable,istrust,isamkstd,isignore " + + $" from K4EE_Component_Reel_RegExRule" + + $" where custcode = '{oldname}'"; + return DBHelper.ExecuteNonQuery(sql); + } + } +} diff --git a/Handler/Project/Manager/DatabaseManagerHistory.cs b/Handler/Project/Manager/DatabaseManagerHistory.cs new file mode 100644 index 0000000..bbab522 --- /dev/null +++ b/Handler/Project/Manager/DatabaseManagerHistory.cs @@ -0,0 +1,333 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Project.Manager +{ + //public class DatabaseManagerHistory + //{ + // /// + // /// 최종파일 + // /// + // private String LastFileName; + // // private DataSet1.ResultDataDataTable dt; + // private string baseDirName = "History"; + + // /// + // /// 파일디비초기화작업(클라이언트 갯수만큼 버퍼를 확보한다) + // /// + // public DatabaseManagerHistory(string basedirbname = "History") + // { + // LastFileName = string.Empty; + // //dt = new DataSet1.ResultDataDataTable(); + // baseDirName = basedirbname; + // } + + // /// + // /// JOB데이터를 작업기록에 추가한다 + // /// + // /// + // /// + // public Boolean Add(Class.JobData job) + // { + // //작업기록은 별도 xml 에 데이터를 넣는다 + // var newdr = this.dt.NewResultDataRow(); + + + // newdr.model_motion = Pub.Result.mModel.Title; + // newdr.model_device = Pub.Result.vModel.Title; + // newdr.time_jobs = job.JobStart; + // newdr.time_jobe = job.JobEnd; + // newdr.runtime_job = job.JobRun.TotalSeconds; + + // newdr.info_filename = string.Empty; //이 값을 파일불러올떄 자동생성됨 + + // newdr.info_message = job.Message; + // newdr.info_imagel = job.VisionData.FileNameL; + // newdr.info_imageu = job.VisionData.FileNameU; + // newdr.info_portpos = job.PortPos; + // newdr.info_printpos = job.PrintPos; + // newdr.info_angle = job.VisionData.Angle; + // newdr.info_inputraw = job.VisionData.QRInputRaw; + // newdr.info_outputraw = job.VisionData.QROutRaw; + // newdr.info_rid = job.VisionData.RID; + // newdr.info_sid = job.VisionData.SID; + // newdr.info_lot = job.VisionData.VLOT; + // newdr.info_mfgdate = job.VisionData.MFGDATE; + // newdr.info_manu = job.VisionData.MANU; + // if (job.VisionData.QTY.isEmpty()) newdr.info_qty = -1; + // else newdr.info_qty = int.Parse(job.VisionData.QTY); + + // this.dt.AddResultDataRow(newdr); + // try + // { + // Flush(); //파일에 실제저장한다. + // return true; + // } + // catch (Exception ex) + // { + // Pub.log.AddE("history data add" + ex.Message); + // return false; + // } + // } + + // //해당 결과를 버퍼에 추가한다. + // public Boolean Add(DataSet1.ResultDataRow dataRow, Boolean autoFlush = false) + // { + // //입력된 자료를 복사해서 버퍼에 넣는다. + // var newdr = this.dt.NewResultDataRow(); + // foreach (string col in getDataColumnList()) + // { + // if (col.ToLower() == "idx") continue; + // newdr[col] = dataRow[col]; + // } + // this.dt.AddResultDataRow(newdr); + + // try + // { + // Flush(); //파일에 실제저장한다. + // return true; + // } + // catch (Exception ex) + // { + // Pub.log.AddE("history data add" + ex.Message); + // return false; + // } + + // } + + // /// + // /// 신규파일을 생성합니다. + // /// + // /// + // void MakeFile(string filename) + // { + // //파일이없다면 헤더를 만들어준다. + // var cols = getDataColumnList(); + // var headerstr = string.Join("\t", cols); + // System.IO.File.WriteAllText(filename, headerstr, System.Text.Encoding.UTF8); + // } + + // /// + // /// 저장해야할 컬럼명을 반환한다.(idx는 제외한다) + // /// + // /// + // public string[] getDataColumnList() + // { + // //저장하고자하는 순서를 미리 지정한다.(지정안된 자료는 알아서 저장된다) + // string[] reserveCols = new string[] { }; + // List cols = new List(); + // cols.AddRange(reserveCols); + + // for (int i = 0; i < this.dt.Columns.Count; i++) + // { + // string colname = dt.Columns[i].ColumnName; + // if (colname.ToLower() == "idx") continue; //제외한다 + // if (reserveCols.Contains(colname)) continue; + // cols.Add(colname); + // } + // return cols.ToArray(); + // } + + // public string GetFileName(DateTime time_jobs, string jobseqdate, string jobseqno) + // { + // var saveFileName = System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, + // time_jobs.Year.ToString("0000"), + // time_jobs.Month.ToString("00"), + // time_jobs.Day.ToString("00"), + // string.Format("{0}_{1}_{2}", jobseqdate, jobseqno, time_jobs.ToString("HHmmss"))); + // return saveFileName; + // } + + // public void Flush() + // { + // //데이터가없다면 처리하지 않음 + // if (this.dt.Rows.Count < 1) return; + + // //쓸데이터를 모두 버퍼에 밀어넣는다. + + // foreach (DataSet1.ResultDataRow dr in dt.Rows) + // { + // if (dr.RowState == System.Data.DataRowState.Deleted || dr.RowState == System.Data.DataRowState.Detached) continue; + + // //lot date check + // //if (dr.time_lotstart.Year == 1982) dr.time_lotstart = DateTime.Now; + + // //작업이 종료된 시간을 기준으로 파일을 생성한다. + // // if (dr.info_lot.isEmpty()) dr.info_lot = "NoLot"; + // //if (dr.info_stripid.isEmpty()) dr.info_stripid = "S" + dr.time_pcbstart.ToString("yyyyMMddHHmmss"); + + // //string curdatestr = string.Format("{0:0000}\\{1:00}\\{2:00}\\{3}\\{4}", + // // dr.time_lotstart.Year, dr.time_lotstart.Month, dr.time_lotstart.Day, dr.info_lot,dr.info_stripid); + + // //작업이 시작한 시간으로 데이터 파일을 저장해야함 + // var saveFileName = System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, + // dr.time_jobs.Year.ToString("0000"), + // dr.time_jobs.Month.ToString("00"), + // dr.time_jobs.Day.ToString("00"), + // string.Format("{0}.tab", dr.time_jobs.ToString("HH"))); + + // dr.info_filename = saveFileName; + // dr.EndEdit(); + + // //저장할 파일 체크 + // System.IO.FileInfo fi = new System.IO.FileInfo(saveFileName); + + // //폴더새엇ㅇ + // if (!fi.Directory.Exists) fi.Directory.Create(); + + // //파일없는경우 헤더생성 + // if (!fi.Exists) MakeFile(fi.FullName); + + // //파일에기록 + // try + // { + // //general info + // //파일의 내용을 탭으로 분리되게 저장한다 + // //var xml = new arUtil.XMLHelper(fi.FullName); + // var cols = this.getDataColumnList(); + // List buffer = new List(); + // foreach (var col in cols) + // { + // var dc = dt.Columns[col]; + // if (dc.ColumnName.ToLower() == "idx") continue; + // if (dc.ColumnName.ToLower() == "info_filename") continue; + // var colname = dc.ColumnName.Split('_'); + // var data = dr[dc.ColumnName]; + // if (colname[0].ToLower() == "time") + // { + // string date_value = ""; + // if (data != null && data != DBNull.Value) + // date_value = ((DateTime)data).ToString("yyyy-MM-dd HH:mm:ss"); + // buffer.Add(date_value); //xml.set_Data(colname[0], colname[1], date_value); + // } + // else + // { + // if (data != null && data != DBNull.Value) + // buffer.Add(data.ToString());// xml.set_Data(colname[0], colname[1], data.ToString()); + // else + // buffer.Add("");// xml.set_Data(colname[0], colname[1], ""); + // } + // } + // string savemsg; + // // xml.Save(out savemsg); + // System.IO.File.AppendAllText(fi.FullName, "\r\n" + string.Join("\t", buffer), System.Text.Encoding.UTF8); + // } + // catch (Exception ex) + // { + // Pub.log.AddE("DBMAN:FLUSH:" + ex.Message); + // return; + // } + + // Pub.log.Add("DATABASE", string.Format("◆ Data Saved : {0}", fi.Name)); + // } + + // dt.Clear(); + // dt.AcceptChanges(); + // } + + // /// + // /// 지정된 파일의 모든 내용을 읽어서 DataTable 로 반환합니다. + // /// + // /// + // /// + // public DataSet1.ResultDataDataTable GetDatas(List files) + // { + // DataSet1.ResultDataDataTable retval = new DataSet1.ResultDataDataTable(); + // //모든파일을 대상으로한다. + + // foreach (var file in files) + // { + // var newdr = retval.NewResultDataRow(); + + // arUtil.XMLHelper xml = new arUtil.XMLHelper(file.FullName); + // foreach (System.Data.DataColumn col in retval.Columns) + // { + // if (col.ColumnName.ToLower() == "idx") continue; + // if (col.ColumnName.ToLower() == "filename") continue; + // var colbuf = col.ColumnName.Split('_'); + + // var readstr = xml.get_Data(colbuf[0], colbuf[1]); + // if (col.DataType == typeof(DateTime)) + // { + // if (readstr != "") + // { + // DateTime dt; + // if (DateTime.TryParse(readstr, out dt)) + // newdr[col.ColumnName] = dt; + // } + // } + // else + // { + // if (readstr.isEmpty() == false) + // newdr[col.ColumnName] = readstr; + // } + // } + // newdr.info_filename = file.FullName; + // retval.AddResultDataRow(newdr); + // } + + + // retval.AcceptChanges(); + // return retval; + // } + + + + // /// + // /// 지정된 기간사이의 파일명을 반환합니다. + // /// + // /// 검색시작일(시간은 적용안함) + // /// 검색종료일(시간은 적용안함) + // /// 검색필터 + // /// 장치번호 + // /// 검색바코드 + // /// + // public List Getfiles(DateTime sdate, DateTime edate) + // { + // List retfiles = new List(); + // //날짜사이의 모든 파일을 대상으로해야함 + + // string sd = sdate.ToShortDateString(); + // string ed = edate.ToShortDateString(); + + // int sy = sdate.Year; + // int ey = edate.Year; + // int sm = sdate.Month; + // int em = edate.Month; + // int sday = sdate.Day; + // int eday = edate.Day; + + // Boolean endtast = false; + // for (int y = sy; y <= ey; y++) + // { + // for (int m = 1; m <= 12; m++) + // { + // for (int d = 1; d <= 31; d++) + // { + // string daystr = string.Format("{0:0000}-{1:00}-{2:00}", y, m, d); + // if (ed == daystr) endtast = true; //마지막 날짜이다. + + // if (y == sy && m < sm) continue; //시작년도 시작월 이전의 자료라면 넘어간다. + // else if (y == sy && m == sm && d < sday) continue; //시작년도 시작월 시작일 이전의 자료라면 넘어간다. + + // var path = new System.IO.DirectoryInfo( + // System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, daystr.Replace("-", "\\"))); + // if (path.Exists == false) continue; + // var files = path.GetFiles("*.xml", System.IO.SearchOption.TopDirectoryOnly); + // if (files != null && files.Length > 0) retfiles.AddRange(files.OrderBy(t => t.Name).ToList()); + + // if (endtast) + // break; // TODO: might not be correct. Was : Exit For + // } + // if (endtast) + // break; // TODO: might not be correct. Was : Exit For + // } + // if (endtast) + // break; // TODO: might not be correct. Was : Exit For + // } + // return retfiles; + // } + //} +} diff --git a/Handler/Project/Manager/DatabaseManagerSIDHistory.cs b/Handler/Project/Manager/DatabaseManagerSIDHistory.cs new file mode 100644 index 0000000..af03a17 --- /dev/null +++ b/Handler/Project/Manager/DatabaseManagerSIDHistory.cs @@ -0,0 +1,276 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Project.Manager +{ + public class DatabaseManagerSIDHistory + { + /// + /// 최종파일 + /// + private String LastFileName; + private DataSet1.SIDHistoryDataTable dt; + private string baseDirName; + + /// + /// 파일디비초기화작업(클라이언트 갯수만큼 버퍼를 확보한다) + /// + public DatabaseManagerSIDHistory(string basedirbname = "HistorySID") + { + LastFileName = string.Empty; + dt = new DataSet1.SIDHistoryDataTable(); + baseDirName = basedirbname; + } + + //해당 결과를 버퍼에 추가한다. + public Boolean Add(DataSet1.SIDHistoryRow dataRow, Boolean autoFlush = false) + { + //입력된 자료를 복사해서 버퍼에 넣는다. + var newdr = this.dt.NewSIDHistoryRow(); + foreach (string col in getDataColumnList()) + { + if (col.ToLower() == "idx") continue; + newdr[col] = dataRow[col]; + } + this.dt.AddSIDHistoryRow(newdr); + + try + { + Flush(); //파일에 실제저장한다. + return true; + } + catch (Exception ex) + { + PUB.log.AddE("history data add" + ex.Message); + return false; + } + + } + + /// + /// 신규파일을 생성합니다. + /// + /// + void MakeFile(string filename) + { + //파일이없다면 헤더를 만들어준다. + var xml = new AR.XMLHelper(filename); + xml.CreateFile(); + } + + /// + /// 저장해야할 컬럼명을 반환한다.(idx는 제외한다) + /// + /// + public string[] getDataColumnList() + { + //저장하고자하는 순서를 미리 지정한다.(지정안된 자료는 알아서 저장된다) + string[] reserveCols = new string[] { }; + List cols = new List(); + cols.AddRange(reserveCols); + + for (int i = 0; i < this.dt.Columns.Count; i++) + { + string colname = dt.Columns[i].ColumnName; + if (reserveCols.Contains(colname)) continue; + cols.Add(colname); + } + return cols.ToArray(); + } + + public string GetFileName(string jobseqdate, string jobseqno, string sid) + { + var saveFileName = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), baseDirName, + jobseqdate.Substring(0, 4), + jobseqdate.Substring(4, 2), + jobseqdate.Substring(6, 2), + string.Format("{0}_{1}_{2}", jobseqdate, jobseqno, sid)); + return saveFileName; + } + + public void Flush() + { + //데이터가없다면 처리하지 않음 + if (this.dt.Rows.Count < 1) return; + + //쓸데이터를 모두 버퍼에 밀어넣는다. + + foreach (DataSet1.SIDHistoryRow dr in dt.Rows) + { + if (dr.RowState == System.Data.DataRowState.Deleted || dr.RowState == System.Data.DataRowState.Detached) continue; + + //lot date check + //if (dr.time_lotstart.Year == 1982) dr.time_lotstart = DateTime.Now; + + //작업이 종료된 시간을 기준으로 파일을 생성한다. + // if (dr.info_lot.isEmpty()) dr.info_lot = "NoLot"; + //if (dr.info_stripid.isEmpty()) dr.info_stripid = "S" + dr.time_pcbstart.ToString("yyyyMMddHHmmss"); + + //string curdatestr = string.Format("{0:0000}\\{1:00}\\{2:00}\\{3}\\{4}", + // dr.time_lotstart.Year, dr.time_lotstart.Month, dr.time_lotstart.Day, dr.info_lot,dr.info_stripid); + + //작업이 시작한 시간으로 데이터 파일을 저장해야함 + var saveFileName = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), baseDirName, + dr.seqdate.Substring(0, 4), + dr.seqdate.Substring(4, 2), + dr.seqdate.Substring(6, 2), + string.Format("{0}_{1}_{2}.csv", dr.seqdate, dr.seqno, dr.sid)); + + + dr.EndEdit(); + + //저장할 파일 체크 + System.IO.FileInfo fi = new System.IO.FileInfo(saveFileName); + + //폴더새엇ㅇ + if (!fi.Directory.Exists) fi.Directory.Create(); + + //파일없는경우 헤더생성 + // if (!fi.Exists) MakeFile(fi.FullName); + + //파일에기록 + try + { + //general info + //데이터는 csv 형태로 저장한다 + var line = string.Format("{2},{0},{1},{3}\r\n", dr.rid, dr.qty, dr.time.ToString("yyyy-MM-dd HH:mm:ss"), dr.rev); + System.IO.File.AppendAllText(fi.FullName, line, System.Text.Encoding.UTF8); + } + catch (Exception ex) + { + PUB.log.AddE("DBMAN:FLUSH:" + ex.Message); + return; + } + + PUB.log.Add("DATABASE", string.Format("◆ Data Saved : {0}", fi.Name)); + } + + dt.Clear(); + dt.AcceptChanges(); + } + + + /// + /// 지정된 파일의 모든 내용을 읽어서 DataTable 로 반환합니다. + /// + /// + /// + public DataSet1.SIDHistoryDataTable GetDatas(System.IO.FileInfo[] files) + { + DataSet1.SIDHistoryDataTable retval = new DataSet1.SIDHistoryDataTable(); + //모든파일을 대상으로한다. + + if (files != null && files.Count() > 0) + { + foreach (var file in files) + { + + + var lines = System.IO.File.ReadAllLines(file.FullName, System.Text.Encoding.UTF8); + foreach (var line in lines) + { + var onlyName = file.Name.Replace(file.Extension, "").Split('_'); + if (String.IsNullOrEmpty(line.Trim())) continue; + var buf = line.Split(','); + + var newdr = retval.NewSIDHistoryRow(); + newdr.seqdate = onlyName[0]; + newdr.seqno = onlyName[1]; + newdr.sid = onlyName[2]; + + newdr.time = DateTime.Parse(buf[0]); + newdr.rid = buf[1]; + + int qty, rev; + if (int.TryParse(buf[2], out qty)) newdr.qty = qty; + else newdr.qty = 0; + if (buf.Length > 3 && int.TryParse(buf[3], out rev)) newdr.rev = rev; + else newdr.rev = 0; + + //newdr.qty = int.Parse(buf[2]); + //newdr.rev = int.Parse(buf[3]); + + retval.AddSIDHistoryRow(newdr); + } + + } + + } + + + retval.AcceptChanges(); + return retval; + } + + public System.IO.FileInfo[] Getfiles(string seqdate, string seqno) + { + var path = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), baseDirName, + seqdate.Substring(0, 4), + seqdate.Substring(4, 2), + seqdate.Substring(6, 2)); + + var di = new System.IO.DirectoryInfo(path); + if (di.Exists == false) return null; + else return di.GetFiles(string.Format("{0}_{1}_*.csv", seqdate, seqno)); + } + + + + /// + /// 지정된 기간사이의 파일명을 반환합니다. + /// + /// 검색시작일(시간은 적용안함) + /// 검색종료일(시간은 적용안함) + /// 검색필터 + /// 장치번호 + /// 검색바코드 + /// + //public List Getfiles(DateTime sdate, DateTime edate) + //{ + // List retfiles = new List(); + // //날짜사이의 모든 파일을 대상으로해야함 + + // string sd = sdate.ToShortDateString(); + // string ed = edate.ToShortDateString(); + + // int sy = sdate.Year; + // int ey = edate.Year; + // int sm = sdate.Month; + // int em = edate.Month; + // int sday = sdate.Day; + // int eday = edate.Day; + + // Boolean endtast = false; + // for (int y = sy; y <= ey; y++) + // { + // for (int m = 1; m <= 12; m++) + // { + // for (int d = 1; d <= 31; d++) + // { + // string daystr = string.Format("{0:0000}-{1:00}-{2:00}", y, m, d); + // if (ed == daystr) endtast = true; //마지막 날짜이다. + + // if (y == sy && m < sm) continue; //시작년도 시작월 이전의 자료라면 넘어간다. + // else if (y == sy && m == sm && d < sday) continue; //시작년도 시작월 시작일 이전의 자료라면 넘어간다. + + // var path = new System.IO.DirectoryInfo( + // System.IO.Path.Combine(COMM.SETTING.Data.Path_Data, baseDirName, daystr.Replace("-", "\\"))); + // if (path.Exists == false) continue; + // var files = path.GetFiles("*.csv", System.IO.SearchOption.TopDirectoryOnly); + // if (files != null && files.Length > 0) retfiles.AddRange(files.OrderBy(t => t.Name).ToList()); + + // if (endtast) + // break; // TODO: might not be correct. Was : Exit For + // } + // if (endtast) + // break; // TODO: might not be correct. Was : Exit For + // } + // if (endtast) + // break; // TODO: might not be correct. Was : Exit For + // } + // return retfiles; + //} + } +} diff --git a/Handler/Project/Manager/ModelManager.cs b/Handler/Project/Manager/ModelManager.cs new file mode 100644 index 0000000..cd35c77 --- /dev/null +++ b/Handler/Project/Manager/ModelManager.cs @@ -0,0 +1,504 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using AR; + +namespace Project.Manager +{ + public class ModelManager + { + public DataSet1 dataSet; + readonly private string fn_ModelV; + readonly private string fn_ModelM; + readonly private string fn_Error; + readonly private string fn_Input; + readonly private string fn_Output; + + public ModelManager(string fnVision, string fnMachine, string fnError, string fnInput, string fnOutput) + { + this.fn_ModelV = fnVision; + this.fn_ModelM = fnMachine; + this.fn_Error = fnError; + this.fn_Input = fnInput; + this.fn_Output = fnOutput; + + dataSet = new DataSet1(); + } + public void LoadModelE() + { + //set filename + string filename = fn_Error; + + //read file + var fi = new FileInfo(filename); + if (fi.Exists == false) + { + PUB.log.AddE("▣ No Load Model(Error)-Data)"); + return; + } + dataSet.ErrorDescription.Clear(); + dataSet.ErrorDescription.ReadXml(fi.FullName); + dataSet.ErrorDescription.AcceptChanges(); + } + public void LoadModelV() + { + //set filename + string filename = fn_ModelV; + int lineCount = 0; + string buffer = string.Empty; + + //read file + var fi = new FileInfo(filename); + if (fi.Exists == false) + { + PUB.log.AddE("▣ No Load Model(Vision)-Data)"); + return; + } + + lineCount = 0; + try + { + buffer = System.IO.File.ReadAllText(fi.FullName, System.Text.Encoding.Default); + } + catch (Exception ex) + { + buffer = string.Empty; + PUB.log.AddE(string.Format("Model(Vision) Error File={0},Message={1}", filename, ex.Message)); + return; + } + + //존재하는 컬럼확인을 위해 미리 저장함 + List dbCols = new List(); + foreach (System.Data.DataColumn col in dataSet.OPModel.Columns) + dbCols.Add(col.ColumnName); + + List Cols = new List(); + foreach (string items in buffer.Split('\r')) + { + lineCount += 1; + var line = items.Replace("\r", "").Replace("\n", ""); + if (line.Trim() == "" || line.StartsWith("ver")) continue; //빈줄과 버젼표기는 제거한다. + string[] buf = line.Split(','); + + //첫줄에는 컬럼명이 들어있다. + if (Cols.Count < 1) + { + foreach (string colname in buf) + { + if (colname.isEmpty()) continue; //비어있는값은 처리하지 않는다. + Cols.Add(colname); + } + continue; + } + + //데이터를 각 컬럼에 넣는다. + DataSet1.OPModelRow dr = dataSet.OPModel.NewOPModelRow(); + + //비젼속성은 컬럼명이 v_로 시작한다. + for (int i = 0; i < Cols.Count; i++) //0번은 Mccode이므로 제외한다. + { + try + { + if (dbCols.IndexOf(Cols[i]) == -1) continue; //존재하지 않는 컬럼은 제외한다. + if (Cols[i].ToUpper() == "IDX") continue; + dr[Cols[i]] = buf[i]; + } + catch (Exception ex) + { + PUB.log.AddE("Model(Vision) Load Error:" + ex.Message); + } + } + + //if (dr.TagBarcode.isEmpty()) dr.Delete(); + try + { + if (dr.RowState == System.Data.DataRowState.Detached) dataSet.OPModel.AddOPModelRow(dr);//신규자료일경우에는 추가함 + else if (dr.RowState != System.Data.DataRowState.Deleted) dr.EndEdit(); + } + catch (Exception ex) + { + PUB.log.AddE("Load Model(Vision) file" + ex.Message); + } + } + + dataSet.OPModel.AcceptChanges(); + } + public void LoadModelM() + { + //set filename + string filename = fn_ModelM; + int lineCount = 0; + string buffer = string.Empty; + + //read file + var fi = new FileInfo(filename); + if (fi.Exists == false) + { + PUB.log.AddE("▣ No Load M/C Model-Data)"); + return; + } + + lineCount = 0; + try + { + buffer = System.IO.File.ReadAllText(fi.FullName, System.Text.Encoding.Default); + } + catch (Exception ex) + { + buffer = string.Empty; + PUB.log.AddE(string.Format("M/C ModelData Error File={0},Message={1}", filename, ex.Message)); + return; + } + + //존재하는 컬럼확인을 위해 미리 저장함 + List dbCols = new List(); + foreach (System.Data.DataColumn col in dataSet.MCModel.Columns) + dbCols.Add(col.ColumnName); + + List Cols = new List(); + foreach (string items in buffer.Split('\r')) + { + lineCount += 1; + var line = items.Replace("\r", "").Replace("\n", ""); + if (line.Trim() == "" || line.StartsWith("ver")) continue; //빈줄과 버젼표기는 제거한다. + string[] buf = line.Split('\t'); + + //첫줄에는 컬럼명이 들어있다. + if (Cols.Count < 1) + { + foreach (string colname in buf) + { + if (colname.isEmpty()) continue; //비어있는값은 처리하지 않는다. + Cols.Add(colname); + } + continue; + } + + //데이터를 각 컬럼에 넣는다. + var dr = dataSet.MCModel.NewMCModelRow(); + + //비젼속성은 컬럼명이 v_로 시작한다. + for (int i = 0; i < Cols.Count; i++) //0번은 Mccode이므로 제외한다. + { + try + { + if (dbCols.IndexOf(Cols[i]) == -1) continue; //존재하지 않는 컬럼은 제외한다. + // if (Cols[i].ToUpper() == "IDX") continue; + dr[Cols[i]] = buf[i]; + } + catch (Exception ex) + { + PUB.log.AddE("M/C Model Load Error:" + ex.Message); + } + } + + //if (dr.TagBarcode.isEmpty()) dr.Delete(); + try + { + if (dr.RowState == System.Data.DataRowState.Detached) dataSet.MCModel.AddMCModelRow(dr);//신규자료일경우에는 추가함 + else if (dr.RowState != System.Data.DataRowState.Deleted) dr.EndEdit(); + } + catch (Exception ex) + { + PUB.log.AddE("Load M/C Model Data file" + ex.Message); + } + } + + //자료중 보정 + foreach (var dr in this.dataSet.MCModel) + { + if (dr.IsSpeedAccNull()) dr.SpeedAcc = 100; + if (dr.IsSpeedDccNull()) dr.SpeedDcc = 0; + if (dr.IsSpeedNull()) dr.Speed = 50; + } + dataSet.OPModel.AcceptChanges(); + + } + public void LoadModelI() + { + //set filename + string filename = fn_Input; + + //read file + var fi = new FileInfo(filename); + if (fi.Exists == false) + { + PUB.log.AddE("▣ No Load Model(Error)-Data)"); + return; + } + dataSet.InputDescription.Clear(); + dataSet.InputDescription.ReadXml(fi.FullName); + dataSet.InputDescription.AcceptChanges(); + } + public void LoadModelO() + { + //set filename + string filename = fn_Output; + + //read file + var fi = new FileInfo(filename); + if (fi.Exists == false) + { + PUB.log.AddE("▣ No Load Model(Error)-Data)"); + return; + } + dataSet.OutputDescription.Clear(); + dataSet.OutputDescription.ReadXml(fi.FullName); + dataSet.OutputDescription.AcceptChanges(); + } + + /// + /// project , model read from file + /// + public void Load() + { + //데이터셋 초기화 + if (dataSet == null) dataSet = new DataSet1(); + else dataSet.Clear(); + + //파일로부터 데이터를 읽어들인다. + this.LoadModelV(); + this.LoadModelM(); + this.LoadModelE(); + this.LoadModelI(); + this.LoadModelO(); + this.dataSet.AcceptChanges(); + + var cntP = dataSet.OPModel.Rows.Count; + var cntM = dataSet.MCModel.Rows.Count; + var cntE = dataSet.ErrorDescription.Rows.Count; + var cntI = dataSet.InputDescription.Rows.Count; + var cntO = dataSet.OutputDescription.Rows.Count; + + PUB.log.AddI(string.Format("※ Model Manager : P{0},M{1},E{2},I{3},O:{4}", cntP, cntM, cntE, cntI, cntO)); + } + + //public void Save() + //{ + // this.dataSet.AcceptChanges(); + // System.IO.DirectoryInfo di = new DirectoryInfo(modelPath); + // if (!di.Exists) di.Create(); + // SaveModelM(); + // SaveModelV(); + //} + + public string modelPath + { + get + { + return System.IO.Path.Combine(UTIL.CurrentPath, "Model"); + } + + } + + public void SaveModelM() + { + this.dataSet.MCModel.AcceptChanges(); + var data = new StringBuilder(); + data.AppendLine("ver\t" + "1"); //version + // data.Append("Title"); //첫열에는 Mccode를 넣는다. + + List cols = new List(); + //cols.AddRange(new string[] { "title","idx","pidx"}); + + foreach (System.Data.DataColumn col in this.dataSet.MCModel.Columns) + { + string colname = col.ColumnName.ToLower(); + if (cols.Contains(colname) == true) continue; //이미 존재하면 처리하지 않음 + // if (colname == "idx") continue; //기본열은 제외한다. + cols.Add(col.ColumnName); + } + + //열을 정렬해서 추가한다. + //var bb = cols.OrderBy(t => t); + for (int i = 0; i < cols.Count; i++) + { + var colname = cols[i]; + if (i > 0) data.Append("\t"); + data.Append(colname); + } + data.AppendLine(); + + //output data(글로벌 셋팅하고 MC코드값만 취한다) + foreach (var list in dataSet.MCModel.Rows) + { + var dr = list as DataSet1.MCModelRow; + //bb = cols.OrderBy(t => t); + for (int i = 0; i < cols.Count; i++) + { + var colname = cols[i]; + if (i > 0) data.Append("\t"); + + if (dr[colname] != DBNull.Value) + data.Append(dr[colname].ToString()); + else if ( dataSet.MCModel.Columns[colname].DataType == typeof(Boolean)) + data.Append("False"); + else if (dataSet.MCModel.Columns[colname].DataType == typeof(double) || + dataSet.MCModel.Columns[colname].DataType == typeof(Int32) || + dataSet.MCModel.Columns[colname].DataType == typeof(UInt32) || + dataSet.MCModel.Columns[colname].DataType == typeof(Single) || + dataSet.MCModel.Columns[colname].DataType == typeof(byte) || + dataSet.MCModel.Columns[colname].DataType == typeof(Int16) || + dataSet.MCModel.Columns[colname].DataType == typeof(UInt16)) + { + //숫자는 기본 0으로 처리한다 + data.Append("0"); + } + else data.Append(""); + } + data.AppendLine(); + } + try + { + var mfile = new System.IO.FileInfo(fn_ModelM); + var bakfile = new System.IO.FileInfo(System.IO.Path.Combine(mfile.Directory.FullName, "Backup", "m" + DateTime.Now.ToString("yyyyMMddHHmmss") + mfile.Extension)); + if (bakfile.Exists) bakfile.Delete(); + if (bakfile.Directory.Exists == false) bakfile.Directory.Create(); + if (mfile.Exists) System.IO.File.Copy(mfile.FullName, bakfile.FullName, true); + PUB.log.Add("model backup(motion) : " + bakfile.FullName); + + System.IO.File.WriteAllText(fn_ModelM, data.ToString(), System.Text.Encoding.Default); + PUB.log.AddAT("Save M/C Model Parameter - OK"); + } + catch (Exception ex) + { + UTIL.MsgE("M/C Model Save Error\r\n" + ex.Message); + PUB.log.AddE("M/C Model Save Error :: " + ex.Message); + } + } + + public void SaveModelV() + { + this.dataSet.OPModel.AcceptChanges(); + var data = new StringBuilder(); + data.AppendLine("ver,:" + "1"); //version + data.Append("Title"); //첫열에는 Mccode를 넣는다. + + List cols = new List(); + foreach (System.Data.DataColumn col in this.dataSet.OPModel.Columns) + { + string colname = col.ColumnName.ToLower(); + if (colname == "Memo" || colname == "idx") continue; //기본열은 제외한다. + cols.Add(col.ColumnName); + } + cols.Add("Memo"); + + //열을 정렬해서 추가한다. + var bb = cols.OrderBy(t => t); + foreach (string colname in bb) + data.Append("," + colname); + data.AppendLine(); + + //output data(글로벌 셋팅하고 MC코드값만 취한다) + foreach (var list in dataSet.OPModel.Select("isnull(Title,'') <> ''", "Title")) + { + var dr = list as DataSet1.OPModelRow; + data.Append(dr.Title); //일반셋팅은 mccode 값 그대로 넣는다. + bb = cols.OrderBy(t => t); + foreach (string colname in bb) //지정된 열제목의 데이터를 가져온다. + { + data.Append(","); + if (dr[colname] != DBNull.Value) data.Append(dr[colname].ToString()); + else if (dataSet.OPModel.Columns[colname].DataType == typeof(Boolean)) + data.Append("False"); + else if (dataSet.OPModel.Columns[colname].DataType == typeof(double) || + dataSet.OPModel.Columns[colname].DataType == typeof(Int32) || + dataSet.OPModel.Columns[colname].DataType == typeof(UInt32) || + dataSet.OPModel.Columns[colname].DataType == typeof(Single) || + dataSet.OPModel.Columns[colname].DataType == typeof(byte) || + dataSet.OPModel.Columns[colname].DataType == typeof(Int16) || + dataSet.OPModel.Columns[colname].DataType == typeof(UInt16)) + { + //숫자는 기본 0으로 처리한다 + data.Append("0"); + } + else data.Append(""); + } + data.AppendLine(); + } + try + { + //기존파일은 백업을 한다. + var mfile = new System.IO.FileInfo(fn_ModelV); + var bakfile = new System.IO.FileInfo(System.IO.Path.Combine(mfile.Directory.FullName, "Backup", "v" + DateTime.Now.ToString("yyyyMMddHHmmss") + mfile.Extension)); + if (bakfile.Exists) bakfile.Delete(); + if (bakfile.Directory.Exists == false) bakfile.Directory.Create(); + if (mfile.Exists) System.IO.File.Copy(mfile.FullName, bakfile.FullName, true); + PUB.log.Add("model backup(vision) : " + bakfile.FullName); + System.IO.File.WriteAllText(fn_ModelV, data.ToString(), System.Text.Encoding.Default); + PUB.log.AddAT("Save Model(Vision) Parameter - OK"); + } + catch (Exception ex) + { + UTIL.MsgE(" Model(Vision) Save Error\r\n" + ex.Message); + PUB.log.AddE(" Model(Vision) Save Error :: " + ex.Message); + } + } + public void SaveModelI() + { + SaveModel(fn_Input, "i", dataSet.InputDescription); + } + public void SaveModelO() + { + SaveModel(fn_Output, "o", dataSet.OutputDescription); + } + public void SaveModelE() + { + SaveModel(fn_Error, "e", dataSet.ErrorDescription); + } + + void SaveModel(string fn, string prefix, System.Data.DataTable dt) + { + dt.AcceptChanges(); + + try + { + var mfile = new System.IO.FileInfo(fn); + var bakfile = new System.IO.FileInfo(System.IO.Path.Combine(mfile.Directory.FullName, "Backup", prefix + DateTime.Now.ToString("yyyyMMddHHmmss") + mfile.Extension)); + if (bakfile.Exists) bakfile.Delete(); + if (bakfile.Directory.Exists == false) bakfile.Directory.Create(); + if (mfile.Exists) System.IO.File.Copy(mfile.FullName, bakfile.FullName, true); + //Pub.log.Add($"model backup({dt.TableName}) : " + bakfile.FullName); + + var savefeil = mfile.FullName; + if (savefeil.EndsWith(".csv")) savefeil = savefeil.Replace(".csv", ".xml"); + + dt.WriteXml(savefeil, true); + //System.IO.File.WriteAllText(savefeil, data.ToString(), System.Text.Encoding.Default); + PUB.log.AddAT($"Save {dt.TableName} Model Parameter - OK"); + } + catch (Exception ex) + { + UTIL.MsgE($"{dt.TableName} Model Save Error\r\n" + ex.Message); + PUB.log.AddE($"{dt.TableName} Model Save Error :: " + ex.Message); + } + } + + /// + /// 지정된 mccode 의 개체를 반환합니다. (없거나 중복일경우 mccode 가 비어있습니다) + /// + /// + /// + public DataSet1.MCModelRow GetDataM(string title) + { + if (title.isEmpty()) return null; + if (dataSet.MCModel == null || dataSet.MCModel.Rows.Count < 1) return null; + var datas = dataSet.MCModel.Where(t => t.Title == title).ToArray(); + if (datas.Length != 1) return null; + return datas[0]; + } + public DataSet1.OPModelRow GetDataV(string title) + { + if (title.isEmpty()) return null; + if (dataSet.OPModel == null || dataSet.OPModel.Rows.Count < 1) return null; + var datas = dataSet.OPModel.Where(t => t.Title == title).ToArray(); + if (datas.Length != 1) return null; + return datas[0]; + } + + + } + +} diff --git a/Handler/Project/Model1.Context1.cs b/Handler/Project/Model1.Context1.cs new file mode 100644 index 0000000..ca67c70 --- /dev/null +++ b/Handler/Project/Model1.Context1.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 템플릿에서 생성되었습니다. +// +// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다. +// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다. +// +//------------------------------------------------------------------------------ + +namespace Project +{ + using System; + using System.Data.Entity; + using System.Data.Entity.Infrastructure; + + public partial class EEEntities : DbContext + { + public EEEntities() + : base("name=EEEntities") + { + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + throw new UnintentionalCodeFirstException(); + } + + public virtual DbSet Component_Reel_Info { get; set; } + public virtual DbSet vCustomerList { get; set; } + public virtual DbSet Component_Reel_Result { get; set; } + public virtual DbSet Component_Reel_SIDConv { get; set; } + public virtual DbSet Component_Reel_CustInfo { get; set; } + public virtual DbSet Component_Reel_CustRule { get; set; } + public virtual DbSet Component_Reel_SIDInfo { get; set; } + } +} diff --git a/Handler/Project/Model11.Designer.cs b/Handler/Project/Model11.Designer.cs new file mode 100644 index 0000000..a655568 --- /dev/null +++ b/Handler/Project/Model11.Designer.cs @@ -0,0 +1,10 @@ +// 모델 'D:\Source\##### 완료아이템\(4576) 물류 Amkor Reel ID Print & Attach 장비 개발 (STD)\Source\Handler(EV)(UniConv)\Project\Model1.edmx'에 대해 T4 코드 생성이 사용됩니다. +// 레거시 코드 생성을 사용하려면 '코드 생성 전략' 디자이너 속성의 값을 +// 'Legacy ObjectContext'로 변경하십시오. 이 속성은 모델이 디자이너에서 열릴 때 +// 속성 창에서 사용할 수 있습니다. + +// 컨텍스트 및 엔터티 클래스가 생성되지 않은 경우 빈 모델을 만들었기 때문일 수도 있지만 +// 사용할 Entity Framework 버전을 선택하지 않았기 때문일 수도 있습니다. 모델에 맞는 컨텍스트 클래스 및 +// 엔터티 클래스를 생성하려면 디자이너에서 모델을 열고 디자이너 화면에서 마우스 오른쪽 단추를 클릭한 +// 다음 '데이터베이스에서 모델 업데이트...', '모델에서 데이터베이스 생성...' 또는 '코드 생성 항목 추가...'를 +// 선택하십시오. \ No newline at end of file diff --git a/Handler/Project/Model11.cs b/Handler/Project/Model11.cs new file mode 100644 index 0000000..593fb34 --- /dev/null +++ b/Handler/Project/Model11.cs @@ -0,0 +1,9 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 템플릿에서 생성되었습니다. +// +// 이 파일을 수동으로 변경하면 응용 프로그램에서 예기치 않은 동작이 발생할 수 있습니다. +// 이 파일을 수동으로 변경하면 코드가 다시 생성될 때 변경 내용을 덮어씁니다. +// +//------------------------------------------------------------------------------ + diff --git a/Handler/Project/Program.cs b/Handler/Project/Program.cs new file mode 100644 index 0000000..e129b41 --- /dev/null +++ b/Handler/Project/Program.cs @@ -0,0 +1,152 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Resources; +using System.Threading; +using AR; +using System.Security.Principal; +using System.Diagnostics; + +namespace Project +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + if (CheckSingleInstance() == false) return; + Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); + Application.Run(new FMain()); + } + + static bool IsAdmin() + { + var identy = WindowsIdentity.GetCurrent(); + if (identy != null) + { + var princ = new WindowsPrincipal(identy); + return princ.IsInRole(WindowsBuiltInRole.Administrator); + } + return false; + } + + /// + /// 중복실행 방지 체크 + /// + /// 단일 인스턴스인 경우 true, 중복실행인 경우 false + static bool CheckSingleInstance() + { + string processName = Process.GetCurrentProcess().ProcessName; + Process[] processes = Process.GetProcessesByName(processName); + + if (processes.Length > 1) + { + // 중복실행 감지 + string message = $"⚠️ {Application.ProductName} 프로그램이 이미 실행 중입니다!\n\n" + + "동시에 여러 개의 프로그램을 실행할 수 없습니다.\n\n" + + "해결방법을 선택하세요:"; + + var result = MessageBox.Show(message + "\n\n예(Y): 기존 프로그램을 종료하고 새로 시작\n아니오(N): 현재 실행을 취소", + "중복실행 감지", + MessageBoxButtons.YesNo, + MessageBoxIcon.Warning); + + if (result == DialogResult.Yes) + { + // 기존 프로세스들을 종료 + try + { + int currentProcessId = Process.GetCurrentProcess().Id; + foreach (Process process in processes) + { + if (process.Id != currentProcessId) + { + process.Kill(); + process.WaitForExit(3000); // 3초 대기 + } + } + + // 잠시 대기 후 계속 진행 + Thread.Sleep(1000); + return true; + } + catch (Exception ex) + { + MessageBox.Show($"기존 프로그램 종료 중 오류가 발생했습니다:\n{ex.Message}\n\n" + + "작업관리자에서 수동으로 종료해주세요.", + "오류", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + else + { + // 현재 실행을 취소 + return false; + } + } + + return true; // 단일 인스턴스 + } + + + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + + string emsg = "Fatal Error(UHE)\n\n" + e.ExceptionObject.ToString(); + if (PUB.log != null) + { + PUB.log.AddE(emsg); + PUB.log.Flush(); + } + + + UTIL.SaveBugReport(emsg); + Shutdown(); + + using (var f = new AR.Dialog.fErrorException(emsg)) + f.ShowDialog(); + Application.ExitThread(); + } + + static void Shutdown() + { + PUB.dio.SetOutput(false); //모두끄기 + PUB.sm.SetNewStep(eSMStep.IDLE, true); + PUB.flag.set(eVarBool.FG_USERSTEP, false, "shutdown"); + PUB.log.Add("Program Close"); + PUB.log.Flush(); + PUB.dio.StopMonitor(); + PUB.mot.StopMonitor(); + PUB.sm.Stop(); + + } + + static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) + { + + string emsg = "Fatal Error(ATE)\n\n" + e.Exception.ToString(); + if(PUB.log != null) + { + PUB.log.AddE(emsg); + PUB.log.Flush(); + } + UTIL.SaveBugReport(emsg); + Shutdown(); + using (var f = new AR.Dialog.fErrorException(emsg)) + f.ShowDialog(); + Application.ExitThread(); + } + } +} diff --git a/Handler/Project/Properties/AssemblyInfo.cs b/Handler/Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..efffb16 --- /dev/null +++ b/Handler/Project/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("※ Amkor Standard Label Attach Inbound")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("K4-EET1P (chikyun.kim@amkor.co.kr, T8567)")] +[assembly: AssemblyProduct("※ Amkor Standard Label Attach Inbound")] +[assembly: AssemblyCopyright("Copyright ©Amkor-EET 2023")] +[assembly: AssemblyTrademark("EED")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("65f3e762-800c-772e-1111-b444642ec666")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("25.05.28.0000")] +[assembly: AssemblyFileVersion("25.05.28.0000")] diff --git a/Handler/Project/Properties/Resources.Designer.cs b/Handler/Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..a8f1bf2 --- /dev/null +++ b/Handler/Project/Properties/Resources.Designer.cs @@ -0,0 +1,683 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Project.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap action_go { + get { + object obj = ResourceManager.GetObject("action_go", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Arrow_Left { + get { + object obj = ResourceManager.GetObject("Arrow_Left", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap arrow_refresh_small { + get { + object obj = ResourceManager.GetObject("arrow_refresh_small", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Arrow_Right { + get { + object obj = ResourceManager.GetObject("Arrow_Right", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Barcode { + get { + object obj = ResourceManager.GetObject("Barcode", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Camera { + get { + object obj = ResourceManager.GetObject("Camera", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap copy { + get { + object obj = ResourceManager.GetObject("copy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_add_40 { + get { + object obj = ResourceManager.GetObject("icons8_add_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_add_image_40 { + get { + object obj = ResourceManager.GetObject("icons8_add_image_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_backward_40 { + get { + object obj = ResourceManager.GetObject("icons8_backward_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_black_circle_40 { + get { + object obj = ResourceManager.GetObject("icons8_black_circle_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_border_all_40 { + get { + object obj = ResourceManager.GetObject("icons8_border_all_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_broom_40 { + get { + object obj = ResourceManager.GetObject("icons8_broom_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_camera_40 { + get { + object obj = ResourceManager.GetObject("icons8_camera_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_cancel_40 { + get { + object obj = ResourceManager.GetObject("icons8_cancel_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_checked_40 { + get { + object obj = ResourceManager.GetObject("icons8_checked_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_checked_radio_button_48 { + get { + object obj = ResourceManager.GetObject("icons8_checked_radio_button_48", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_clamps_40 { + get { + object obj = ResourceManager.GetObject("icons8_clamps_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_control_panel_40 { + get { + object obj = ResourceManager.GetObject("icons8_control_panel_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_copy_40 { + get { + object obj = ResourceManager.GetObject("icons8_copy_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_delete_40 { + get { + object obj = ResourceManager.GetObject("icons8_delete_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_edit_48 { + get { + object obj = ResourceManager.GetObject("icons8_edit_48", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_exercise_40 { + get { + object obj = ResourceManager.GetObject("icons8_exercise_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_flip_vertical_40 { + get { + object obj = ResourceManager.GetObject("icons8_flip_vertical_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_folder_40 { + get { + object obj = ResourceManager.GetObject("icons8_folder_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_grab_tool_48 { + get { + object obj = ResourceManager.GetObject("icons8_grab_tool_48", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_green_circle_40 { + get { + object obj = ResourceManager.GetObject("icons8_green_circle_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_hand_40 { + get { + object obj = ResourceManager.GetObject("icons8_hand_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_input_40 { + get { + object obj = ResourceManager.GetObject("icons8_input_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_joystick_40 { + get { + object obj = ResourceManager.GetObject("icons8_joystick_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_laser_beam_40 { + get { + object obj = ResourceManager.GetObject("icons8_laser_beam_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_light_20 { + get { + object obj = ResourceManager.GetObject("icons8_light_20", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_light_30 { + get { + object obj = ResourceManager.GetObject("icons8_light_30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_light_on_40 { + get { + object obj = ResourceManager.GetObject("icons8_light_on_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_log_40 { + get { + object obj = ResourceManager.GetObject("icons8_log_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_move_right_40 { + get { + object obj = ResourceManager.GetObject("icons8_move_right_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_new_40 { + get { + object obj = ResourceManager.GetObject("icons8_new_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_no_running_40 { + get { + object obj = ResourceManager.GetObject("icons8_no_running_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_object_40 { + get { + object obj = ResourceManager.GetObject("icons8_object_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_pin_40 { + get { + object obj = ResourceManager.GetObject("icons8_pin_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_plus_40 { + get { + object obj = ResourceManager.GetObject("icons8_plus_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_printer_48 { + get { + object obj = ResourceManager.GetObject("icons8-printer-48", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_red_circle_40 { + get { + object obj = ResourceManager.GetObject("icons8_red_circle_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_refresh { + get { + object obj = ResourceManager.GetObject("icons8_refresh", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_repeat_40 { + get { + object obj = ResourceManager.GetObject("icons8_repeat_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_resize_horizontal_40 { + get { + object obj = ResourceManager.GetObject("icons8_resize_horizontal_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_robot_hand_40 { + get { + object obj = ResourceManager.GetObject("icons8_robot_hand_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_running_40 { + get { + object obj = ResourceManager.GetObject("icons8_running_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_save_40 { + get { + object obj = ResourceManager.GetObject("icons8_save_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_save_close_40 { + get { + object obj = ResourceManager.GetObject("icons8_save_close_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_save_to_grid_40 { + get { + object obj = ResourceManager.GetObject("icons8_save_to_grid_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_selection_40 { + get { + object obj = ResourceManager.GetObject("icons8_selection_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_tornado_40 { + get { + object obj = ResourceManager.GetObject("icons8_tornado_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_unavailable_40 { + get { + object obj = ResourceManager.GetObject("icons8_unavailable_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_what_40 { + get { + object obj = ResourceManager.GetObject("icons8_what_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_zoom_to_extents_40 { + get { + object obj = ResourceManager.GetObject("icons8_zoom_to_extents_40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Lock { + get { + object obj = ResourceManager.GetObject("Lock", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Motor { + get { + object obj = ResourceManager.GetObject("Motor", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Socket { + get { + object obj = ResourceManager.GetObject("Socket", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Vision { + get { + object obj = ResourceManager.GetObject("Vision", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Zoom_In { + get { + object obj = ResourceManager.GetObject("Zoom_In", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap Zoom_Out { + get { + object obj = ResourceManager.GetObject("Zoom_Out", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Handler/Project/Properties/Resources.resx b/Handler/Project/Properties/Resources.resx new file mode 100644 index 0000000..82e4fa7 --- /dev/null +++ b/Handler/Project/Properties/Resources.resx @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\icons8-black-circle-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-refresh.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-checked-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-laser-beam-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-zoom-in-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-add-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-repeat-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-no-running-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-flip-vertical-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\action_go.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-new-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\copy.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-unavailable-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-move-right-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-plus-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-light-20.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-barcode-scanner-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-add-image-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-what-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-joystick-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-copy-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-zoom-to-extents-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-light-on-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-log-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-arrow-40-right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-clamps-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-delete-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-broom-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-resize-horizontal-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-save-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-border-all-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-cancel-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-camera-401.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-vision-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-save-to-grid-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-camera-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-robot-hand-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-control-panel-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-grab-tool-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-input-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-zoom-out-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-socket-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-folder-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-arrow-pointing-left-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-hand-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-pin-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-light-30.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-running-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-smart-lock-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-exercise-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-backward-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-object-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-tornado-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-stepper-motor-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-edit-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-green-circle-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-red-circle-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-selection-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-printer-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-save-close-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-checked-radio-button-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_refresh_small.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Handler/Project/Properties/Settings.Designer.cs b/Handler/Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..11194ae --- /dev/null +++ b/Handler/Project/Properties/Settings.Designer.cs @@ -0,0 +1,107 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)] + [global::System.Configuration.DefaultSettingValueAttribute("http://k1xip00.amkor.co.kr:50000/XISOAPAdapter/MessageServlet?senderParty=&sender" + + "Service=eCIM_ATK&receiverParty=&receiverService=&interface=ZK_RFID_TRANS_SEQ&int" + + "erfaceNamespace=urn%3Asap-com%3Adocument%3Asap%3Arfc%3Afunctions")] + public string Logistics_Vision_wr_ZK_RFID_TRANS_SEQService { + get { + return ((string)(this["Logistics_Vision_wr_ZK_RFID_TRANS_SEQService"])); + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("K9OE1zaaQEPD8jE33YK1vDdDS4JBz1DB")] + public string Softtek { + get { + return ((string)(this["Softtek"])); + } + set { + this["Softtek"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;")] + public string BcdDemo { + get { + return ((string)(this["BcdDemo"])); + } + set { + this["BcdDemo"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9")] + public string libxl { + get { + return ((string)(this["libxl"])); + } + set { + this["libxl"] = value; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;Use" + + "r ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True")] + public string CS { + get { + return ((string)(this["CS"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;Use" + + "r ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True")] + public string WMS_DEV { + get { + return ((string)(this["WMS_DEV"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=V1SPCSQL,51122;Initial Catalog=WMS;Persist Security Info=True;User ID" + + "=wmsadm;Password=\"2!x2$yY8R;}$\";Encrypt=False;TrustServerCertificate=True")] + public string WMS_PRD { + get { + return ((string)(this["WMS_PRD"])); + } + } + } +} diff --git a/Handler/Project/Properties/Settings.settings b/Handler/Project/Properties/Settings.settings new file mode 100644 index 0000000..f3b2dc5 --- /dev/null +++ b/Handler/Project/Properties/Settings.settings @@ -0,0 +1,42 @@ + + + + + + http://k1xip00.amkor.co.kr:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=eCIM_ATK&receiverParty=&receiverService=&interface=ZK_RFID_TRANS_SEQ&interfaceNamespace=urn%3Asap-com%3Adocument%3Asap%3Arfc%3Afunctions + + + K9OE1zaaQEPD8jE33YK1vDdDS4JBz1DB + + + 101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101; + + + Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9 + + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <ConnectionString>Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True + + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <ConnectionString>Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True + + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <ConnectionString>Data Source=V1SPCSQL,51122;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password="2!x2$yY8R;}$";Encrypt=False;TrustServerCertificate=True</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=V1SPCSQL,51122;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password="2!x2$yY8R;}$";Encrypt=False;TrustServerCertificate=True + + + \ No newline at end of file diff --git a/Handler/Project/Properties/app.manifest b/Handler/Project/Properties/app.manifest new file mode 100644 index 0000000..e312aff --- /dev/null +++ b/Handler/Project/Properties/app.manifest @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/Pub.cs b/Handler/Project/Pub.cs new file mode 100644 index 0000000..287e625 --- /dev/null +++ b/Handler/Project/Pub.cs @@ -0,0 +1,1937 @@ +using AR; +using System; +using System.CodeDom; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Management; +using System.Net; +using System.Net.NetworkInformation; +using System.Runtime.CompilerServices; +using System.Runtime.Remoting; +using System.Runtime.Serialization.Formatters.Binary; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project +{ + public static class PUB + { + public static string MCCode = "R0"; + public static Class.StatusMessage StatusMessage { get; set; } = new Class.StatusMessage(); + public static string[] WaitMessage = new string[] { "", "", "", "", "", "", "", "", "", "", "" }; + + public static byte[] swPLCBuffer = new byte[16]; + + //######################################################## + // DEVICE DEFINE + //######################################################## + public static arDev.DIO.IDIO dio; //Ajin + public static arDev.MOT.IMotion mot; //Ajin + public static arDev.RS232 remocon; + public static arDev.RS232 BarcodeFix; + public static AR.MemoryMap.Client plc; + + public static Device.SATOPrinterAPI PrinterL; + public static Device.SATOPrinterAPI PrinterR; + + public static WatsonWebsocket.WatsonWsClient wsL; + public static WatsonWebsocket.WatsonWsClient wsR; + public static Device.KeyenceBarcode keyenceF = null; + public static Device.KeyenceBarcode keyenceR = null; + + public static int uploadcount = 0; + public static DateTime BuzzerTime; + public static DateTime MGZRunTime; + public static MessageWindow popup; + + //interlock check + public static CInterLock[] iLock; + public static CInterLock iLockPRL; //printer -left + public static CInterLock iLockPRR; //printer -right + public static CInterLock iLockVS0; //visoin - 0 + public static CInterLock iLockVS1; //vision - 1 + public static CInterLock iLockVS2; //vision - 2 + public static CInterLock iLockCVL; + public static CInterLock iLockCVR; + + public static System.Threading.ManualResetEvent LockModel = new System.Threading.ManualResetEvent(true); + + /// + /// database manager + /// + public static Manager.DatabaseManagerCount dbmCount; //Quantity records (by ID) + public static Manager.DatabaseManagerSIDHistory dbmSidHistory; + + + /// + /// model manager + /// + public static Manager.ModelManager mdm; + + public static System_MotParameter system_mot; + + public static Log logVision; + public static Log log; + public static Log logILStop; + public static Log logDbg; + public static Log logFlag; + public static Log logILock; + public static Log logWS; + public static Log logKeyence; + public static Log logbarcode; + + public static DataSet1.UsersDataTable userList; + public static DataSet1.MailRecipientDataTable mailList; + public static DataSet1.MailFormatDataTable mailForm; + + public static DateTime LastInputTime = DateTime.Now; + public static CResult Result; + public static double FreeSpace = 0; + + //######################################################## + // DEVICE DEFINE + //######################################################## + public static Device.CStateMachine sm; //State machine separation 190529 + + + public static Boolean UserAdmin { get { return true; } } + + public static bool OPT_CAMERA() + { + var retval = VAR.BOOL[eVarBool.Opt_DisableCamera]; + if (retval == false) + { + //Overall option is available but doesn't work when individual option in environment settings is off + retval = !AR.SETTING.Data.Enable_Unloader_QRValidation; + } + return retval; + } + public static bool OPT_BYPASS() + { + return SETTING.Data.SystemBypass; + } + public static bool OPT_PRINTEROFF(eWorkPort target) + { + var retval = VAR.BOOL[eVarBool.Opt_DisablePrinter]; + if (retval == false) + { + //Overall option is available but doesn't work when individual option in environment settings is off + if (target == eWorkPort.Left) + retval = AR.SETTING.Data.Disable_PrinterL; + else + retval = AR.SETTING.Data.Disable_PrinterR; + } + return retval; + } + + + + + + public static void AddDebugLog(string div, string msg, Boolean iserr = false) + { + if (AR.SETTING.Data.Log_Debug == false) return; + if (iserr) PUB.logDbg.AddE(msg); + else PUB.logDbg.Add(div, msg); + } + + /// + /// SQL Database Connection String + /// + /// + public static string GetWMSConnectionString() + { + if (SETTING.Data.WMS_DB_PROD) + return Properties.Settings.Default.WMS_PRD; + else + return Properties.Settings.Default.WMS_DEV; + } + public static bool SelectModelM(string modelName, bool bUploadConfig = true) + { + //if (this.InvokeRequired) + //{ + // this.Invoke(new SelectModelHandler(SelectModelM), new object[] { modelName, bUploadConfig }); + // return; + //} + + //Initialize + var rlt = PUB.Result.mModel.ReadValue(modelName); + if (rlt && PUB.Result.mModel.isSet) + { + PUB.log.AddAT("Motion model selection complete: " + PUB.Result.mModel.Title); + + //Save the model name used + if (SETTING.User.LastModelM != PUB.Result.mModel.Title) + { + SETTING.User.LastModelM = PUB.Result.mModel.Title; + SETTING.User.Save(); + } + return true; + } + else + { + PUB.log.AddE("Motion model selection failed (non-existent model name:" + modelName + ")"); + return false; + } + } + public static void AddDebugLog(string msg, Boolean iserr = false) + { + PUB.logDbg.Add("NORMAL", msg, iserr); + } + + //public static bool PrintSend(bool left, string zpl) + //{ + // var dev = left ? PUB.PrinterL : PUB.PrinterR; + // var tag = left ? COMM.SETTING.Data.PrintL_AddSend : COMM.SETTING.Data.PrintR_AddSend; + // if (dev.IsOpen == false) return false; + // try + // { + // dev.Write(zpl); + + // //추가 + // if (tag.isEmpty() == false) + // { + // var addbytes = UTIL.ConvertHexStringToByte(tag); + // dev.Write(addbytes); + // } + // return true; + // } + // catch (Exception ex) + // { + // return false; + // } + //} + + public static bool UpdateWMS(Class.VisionData Data) + { + PUB.log.AddE("updatewms wms 데이터베이스 기록 연결해야 함(아세테크)"); + return true; + } + public static bool SelectModelV(string modelName, bool bUploadConfig = true) + { + //Initialize + PUB.Result.vModel.Title = string.Empty; + PUB.PrinterL.ZPLFileName = UTIL.MakePath("Data", "zpl.txt"); //Set as default file + PUB.PrinterR.ZPLFileName = UTIL.MakePath("Data", "zpl.txt"); + + var modelVision = PUB.mdm.GetDataV(modelName); + if (modelVision != null) + { + var mv = PUB.Result.vModel; + mv.ReadValue(modelVision); //Util.CopyData(model, Pub.Result.vModel); + PUB.log.AddAT("Work model selection complete: " + mv.Title); + + //Save the selected model + if (SETTING.User.LastModelV != mv.Title) + { + SETTING.User.LastModelV = mv.Title; + SETTING.User.Save(); + } + + lock (PUB.Result.BCDPatternLock) + { + PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false); + PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true); + + PUB.log.Add($"Model pattern loading:{PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}"); + } + + if (modelVision.Code.isEmpty()) + { + //PUB.Result.CustCode = string.Empty; + VAR.STR[eVarString.JOB_CUSTOMER_CODE] = string.Empty; + } + else + { + var codlist = modelVision.Code.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + + string custcode = string.Empty; + if (codlist.Length == 1) custcode = codlist[0]; + VAR.STR[eVarString.JOB_CUSTOMER_CODE] = custcode; + } + + //Delete all saved barcodes + PUB.Result.ItemDataC.Clear("SELCTMODEL"); + + //Update barcode configuration file + if (bUploadConfig) + { + //SAVE + var k1 = MemLoadBarcodeConfig(PUB.keyenceF); + var k2 = MemLoadBarcodeConfig(PUB.keyenceR); + } + + if (mv.bOwnZPL) + { + var fn = UTIL.MakePath("Model", mv.idx.ToString(), "zpl.txt"); + if (System.IO.File.Exists(fn)) + { + PUB.PrinterL.ZPLFileName = fn; + PUB.PrinterR.ZPLFileName = fn; + PUB.log.AddI($"Dedicated ZPL settings {fn}"); + } + else + { + PUB.log.AddE($"No dedicated ZPL file {fn}"); + } + } + else + { + PUB.log.AddI($"Using shared ZPL file ({PUB.PrinterL.ZPLFileName})"); + } + return true; + } + else + { + //PUB.Result.CustCode = string.Empty; + VAR.STR[eVarString.JOB_CUSTOMER_CODE] = string.Empty; + PUB.log.AddE("Model selection failed (non-existent model name:" + modelName + ")"); + return false; + } + + } + + public static bool MemLoadBarcodeConfig(Device.KeyenceBarcode keyence) + { + var BarcodeMemoryNo = PUB.Result.vModel.BSave; + if (BarcodeMemoryNo < 1) + { + PUB.log.AddAT($"The currently selected model does not have a barcode memory number (BSAVE) specified."); + return false; + } + + if (keyence == null || keyence.IsConnect == false) + { + var tagstr = keyence?.Tag ?? string.Empty; + + PUB.log.AddAT($"Barcode ({tagstr}) is not connected, configuration file will not be uploaded." + + "This information will be retransmitted when starting a new job." + + $"This error will not occur if you select the model after checking the barcode connection at the {(tagstr == "F" ? "left" : "right")} bottom."); + return false; + } + + try + { + //접속되어잇ㅇ츠면 끈다 + var isTriggeronL = keyence.IsTriggerOn; + var tagstr = keyence?.Tag ?? string.Empty; + if (keyence.IsConnect) + { + keyence.Trigger(false); + PUB.log.Add($"[{tagstr}] Send BLoad({BarcodeMemoryNo})"); + keyence.BLoad(BarcodeMemoryNo); + } + + if (isTriggeronL && keyence.IsConnect) keyence.Trigger(true); + return true; + } + catch (Exception ex) + { + PUB.log.AddE($"Barcode({keyence.Tag}) FTP transfer failed:{ex.Message}"); + } + + return false; + } + public static bool UpLoadBarcodeConfig(Device.KeyenceBarcode keyence) + { + if (keyence == null || keyence.IsConnect == false) + { + var tagstr = keyence?.Tag ?? string.Empty; + + PUB.log.AddAT($"Barcode ({tagstr}) is not connected, configuration file will not be uploaded." + + "This information will be retransmitted when starting a new job." + + $"This error will not occur if you select the model after checking the barcode connection at the {(tagstr == "F" ? "left" : "right")} bottom."); + return false; + } + + //Input barcode configuration file + var mv = PUB.Result.vModel; + var configfilenameB = mv.Title; + if (configfilenameB.isEmpty()) configfilenameB = mv.Title; + if (configfilenameB.EndsWith(keyence.Tag) == false) configfilenameB += keyence.Tag; + + var configfilenameJ = configfilenameB; + //var jobcode = VAR.STR[eVarString.JOB_TYPE]; + //if (jobcode.isEmpty() == false) configfilenameJ += $"_{jobcode}"; + //else PUB.log.AddAT($"작업형태값이 없어 모델 기본을 사용 합니다"); + + + if (configfilenameB.ToLower().EndsWith("ptc") == false) configfilenameB += ".ptc"; + if (configfilenameJ.ToLower().EndsWith("ptc") == false) configfilenameJ += ".ptc"; + + var configpathB = System.IO.Path.Combine(UTIL.CurrentPath, "Model", configfilenameB); + var configpathJ = System.IO.Path.Combine(UTIL.CurrentPath, "Model", configfilenameJ); + var configfiB = new System.IO.FileInfo(configpathB); + var configfiJ = new System.IO.FileInfo(configpathJ); + + if (configfiB.Exists == false && configfiJ.Exists == false) + { + PUB.log.AddAT($"Barcode({keyence.Tag}) configuration file({configfiB.Name}) not found"); + } + else + { + try + { + //접속되어잇ㅇ츠면 끈다 + var ip = keyence.Tag == "F" ? SETTING.Data.Keyence_IPF : SETTING.Data.Keyence_IPR; + if (keyence.IsConnect) keyence.Trigger(false); + var ftp = new AR.FTPClient.FTPClient(); + ftp.Host = ip;// COMM.SETTING.Data.Keyence_IPF; + ftp.Port = 21; + var UPFileName = @"\CONFIG\CONFIG.PTC"; + + var fn = configfiJ.Exists ? configfiJ.FullName : configfiB.FullName; + var upOk = ftp.Upload(UPFileName, fn); + if (upOk == false) PUB.log.AddE($"Barcode({keyence.Tag}) configuration file upload failed"); + else PUB.log.AddI($"Barcode({keyence.Tag}) configuration file upload completed({fn})"); + if (keyence.IsConnect) keyence.Trigger(true); + return true; + } + catch (Exception ex) + { + PUB.log.AddE($"Barcode({keyence.Tag}) FTP transfer failed:{ex.Message}"); + } + } + return false; + } + + public static Task> UpdateSIDInfo() + { + var rlt = Task.Run>(() => + { + bool result = false; + string message = string.Empty; + int cnt = 0; + int rdy = 0; + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + wat.Restart(); + + //기존 SID정보에서 데이터를 취합니다. + var mc = AR.SETTING.Data.McName; + PUB.log.AddAT($"SID Information Data will be generated from existing information MC={mc}"); + using (var tainfo = new DataSet1TableAdapters.K4EE_Component_Reel_SID_InformationTableAdapter()) + { + var cntd = tainfo.DeleteAll("IB"); + PUB.log.AddAT($"{cntd} records deleted"); + var cnti = tainfo.MakeIBData(mc); + PUB.log.AddAT($"{cnti} records duplicated"); + } + message = "SID Information : Only M/C Data"; + result = true; + rdy = 1; + + wat.Stop(); + PUB.log.Add($"SID Information Add ({cnt}) - {wat.ElapsedMilliseconds:N2}ms"); + return new Tuple(result, message, rdy); + }); + return rlt; + } + + + /// + /// 전체 작업목록을 별도파일에 저장한다 + /// + /// + /// + /// + public static void AddJobList(string seqdate, string seqno, string file) + { + + //해당 차수로 저장된 파일이 잇는지 체크한다. + var savepath = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "JobData", seqdate.Substring(0, 6), seqdate + "-" + seqno + ".txt"); + var fi = new System.IO.FileInfo(savepath); + if (fi.Directory.Exists == false) fi.Directory.Create(); //폴더가 없다면 생성 + + //신규파일이므로, 해당 내용을 모두 옴겨놓는다(번호는 중요치않다) + List savedList = new List(); + if (fi.Exists) + { + var oldlist = System.IO.File.ReadAllLines(fi.FullName, System.Text.Encoding.UTF8); + savedList.AddRange(oldlist); + } + + //기존목록을 불러와서 없는 데이터만 추가해준다. + var newbuffer = System.IO.File.ReadAllLines(file, System.Text.Encoding.UTF8); + foreach (var line in newbuffer) + { + if (line.isEmpty() || line.StartsWith("#")) continue; + var buffer = line.Split('\t'); + var raw = buffer[3].Trim(); + if (savedList.Where(t => t == raw).Count() == 0) + savedList.Add(raw); + } + + //전체목록을 저장한다 + System.IO.File.WriteAllLines(fi.FullName, savedList.ToArray(), System.Text.Encoding.UTF8); + } + + public static bool GetSIDConverDB() + { + //230509 + try + { + //sid정보테이블을 다시 불러온다 + var taConv = new DataSet1TableAdapters.K4EE_Component_Reel_SID_ConvertTableAdapter(); + PUB.Result.DTSidConvert.Clear(); + taConv.Fill(PUB.Result.DTSidConvert); + PUB.Result.DTSidConvert.AcceptChanges(); + PUB.Result.DTSidConvertEmptyList.Clear(); + PUB.Result.DTSidConvertMultiList.Clear(); + PUB.log.Add($"SID conversion table {PUB.Result.DTSidConvert.Rows.Count} records checked"); + return true; + } + catch (Exception ex) + { + PUB.log.AddE("SID conversion information check failed\n" + ex.Message); + return false; + } + } + + //public static void MakeSelectState(ref List wheres, List<(bool option, bool condition, string colname)> items) + //{ + // foreach (var item in items) + // { + // var opt = item.option; + // var condition = item.condition; + // var column = item.colname; + // if (opt) + // { + // if (condition) wheres.Add($"{column}"); + // } + // } + //} + //public static bool MakeWhereState(ref List wheres, List<(bool option,bool condition, string colname, string value)> items) + //{ + // foreach (var item in items) + // { + // var opt = item.option; + // var condition = item.condition; + // var value = item.value; + // var column = item.colname; + // if(opt) + // { + // if (condition) wheres.Add($"{column}='{value}'"); + // return false; + // } + // } + // return true; + //} + + public static bool GetSIDInfo_And_SetData(List fields, + ref Class.VisionData vdata, + string SQL, string SQLC) + { + + bool NewBarcodeUpdated = false; + PUB.log.Add($"DATABAES : SID INFORMATIION QUERY"); + PUB.log.Add($"Data={SQL}"); + if (SQLC.isEmpty() == false) PUB.log.Add($"Count={SQLC}"); + var CS = Properties.Settings.Default.CS; + var CN = new System.Data.SqlClient.SqlConnection(CS); + var CMD = new System.Data.SqlClient.SqlCommand(SQLC, CN); + SqlDataReader DAR = null; + if (CN.State == System.Data.ConnectionState.Closed) CN.Open(); + + var cnt = 1; + + //수량체크쿼리가 있다면 그것을 사용한다 + if (SQLC.isEmpty() == false) + cnt = CMD.ExecuteScalar().ToString().toInt(); + + //데이터가 1건만 존재할때 사용한다 + if (cnt == 1) + { + CMD.CommandText = SQL; + DAR = CMD.ExecuteReader(); + while (DAR.Read()) + { + //loop select columns + for (int i = 0; i < fields.Count; i++) + { + var colName = fields[i]; + var v = DAR[colName]; + if (v != null) + { + var vStr = v.ToString().RemoveNoneASCII().Trim(); + if (vStr.isEmpty()) continue; + + if (PUB.UpdateSIDInfoData(ref vdata, colName, vStr)) NewBarcodeUpdated = true; + } + } + } + } + + + if (DAR != null) DAR.Close(); + if (CMD != null) CMD.Dispose(); + if (CN != null) + { + if (CN.State == System.Data.ConnectionState.Open) CN.Close(); + CN.Dispose(); + } + return NewBarcodeUpdated; + } + + /// + /// 지정된 VisionData에 해당 값을 기록 합니다 + /// ColName 이 하드코딩되어있으니 필드명이 변경되면 값을 변경해야 함 + /// + /// + /// + /// + /// + public static bool UpdateSIDInfoData(ref Class.VisionData vdata, string colNameOrg, string vStr) + { + var colName = colNameOrg.ToLower().Trim(); + if (colName == "custcode" || colName == "cust_code") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.CUSTCODE}=>{vStr}"); + vdata.CUSTCODE = vStr; + return true; + } + else if (colName == "partno" || colName == "part_no") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.PARTNO}=>{vStr}"); + vdata.PARTNO = vStr; + vdata.PARTNO_Trust = true; + return true; + } + else if (colName == "printposition" || colName == "pos") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.PrintPositionData}=>{vStr}"); + vdata.PrintPositionData = vStr; + vdata.PrintPositionCheck = true; + return true; + } + else if (colName == "vname" || colName == "vendername" || colName == "vendorname" || colName == "vendor_nm") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.VNAME}=>{vStr}"); + vdata.VNAME = vStr; + vdata.VNAME_Trust = true; + return true; + } + else if (colName == "venderlot" || colName == "vendorlot" || colName == "vendor_lot") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.VLOT}=>{vStr}"); + vdata.VLOT = vStr; + vdata.VLOT_Trust = true; + return true; + } + else if (colName == "sid") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.SID}=>{vStr}"); + vdata.SID = vStr; + vdata.SID_Trust = vdata.SID.Length == 9; + if (vStr.Length != 9) + { + PUB.log.AddE($"DB SID LEN ERROR:{vStr},LEN={vStr.Length}"); + } + return true; + } + else if (colName == "batch" || colName == "batch_no") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.BATCH}=>{vStr}"); + vdata.BATCH = vStr; + return true; + } + else if (colName == "qtymax") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.BATCH}=>{vStr}"); + vdata.QTYMAX = vStr; + return true; + } + else if (colName == "attach") + { + PUB.log.Add($"UpdateSIDInfoData [{colNameOrg}] {vdata.Target}=>{vStr}"); + vdata.Target = vStr; + return true; + } + + return false; + } + + + + public static string SIDCovert(string oldsid, string src, out bool err) + { + err = true; + var retval = string.Empty; + + //원본sid가 있어야 한다 + if (oldsid.isEmpty()) + { + return $"[{src}] 원본SID값이 없습니다"; + } + + try + { + if (PUB.Result.DTSidConvert.Any() == false) + { + GetSIDConverDB(); + if (PUB.Result.DTSidConvert.Any()) + { + PUB.log.Add($"[{src}] SID conversion table query result: {PUB.Result.DTSidConvert.Rows.Count} records"); + VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] = false; + } + else + { + PUB.log.AddAT($"No data in SID conversion table"); + VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] = true; + } + + } + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + } + + + if (PUB.sm.Step == eSMStep.RUN) + PUB.log.Add($"[{src}] SID conversion work started, original:{oldsid}"); + + var sidconvlist = PUB.Result.DTSidConvert.Where(t => t.SIDFrom.Equals(oldsid)); + if (sidconvlist.Any() == false) + { + PUB.Result.DTSidConvertEmptyList.Add(oldsid); + return $"SID변환정보없음({oldsid}) 전체 DB {PUB.Result.DTSidConvert.Rows.Count}건"; + } + else + { + if (sidconvlist.Count() != 1) + { + //여러개가 있다면 그 데이터 목록을 반환한다. + PUB.Result.DTSidConvertMultiList.Add(oldsid); + var sb = new System.Text.StringBuilder(); + var tolist = sidconvlist.Select(t => t.SIDTo).ToList(); + return string.Join("|", tolist); + //foreach(var dr in sidconvlist) + //{ + // sb.AppendLine($"{dr.SIDFrom}|{dr.SIDTo}"); + //} + //return ($"sid변환테이블정보복수 {sidconvlist.Count()}건 있음"); + } + else + { + //1건의 변경정보가 있다. + //sid값의 빈값 및 동일sid값은 db쿼리시에 진행했으니 이곳의 데이터는 꺠긋하다 + var sidconvDr = sidconvlist.First(); + err = false; + if (PUB.sm.Step == eSMStep.RUN) + PUB.log.AddI($"[{src}] SID conversion completed {oldsid}->{sidconvDr.SIDTo}"); + return sidconvDr.SIDTo; + } + } + } + + /// + /// 바코드값을 비젼버퍼에 기록합니다. + /// + /// + /// + /// + /// 바코드 룰에서 신뢰 하도록 됨(amkor std 라벨이 설정되어있음) + /// + public static bool SetBCDValue(Class.VisionData vdata, string TargetPos, string Value, bool trust) + { + bool retval = false; + Value = Value.Replace("\r", "").Replace("\n", "").Trim(); + + //220901 - 특문있으면 추가 제거 + var r1 = (char)0x1D; + var r2 = (char)0x1E; + var r3 = (char)0x04; + Value = Value.Replace(r1.ToString(), ""); + Value = Value.Replace(r2.ToString(), ""); + Value = Value.Replace(r3.ToString(), ""); + Value = Value.Replace("\r", ""); + Value = Value.Replace("\n", ""); + Value = Value.RemoveNoneASCII().Trim(); + + switch (TargetPos) + { + case "TARGET": + + if (vdata.Target != Value) PUB.log.Add($"update target : {vdata.Target} > {Value}"); + vdata.Target = Value; + retval = true; + + break; + case "MCN": + + if (vdata.MCN != Value) PUB.log.Add($"update mcn : {vdata.MCN} > {Value}"); + vdata.MCN = Value; + retval = true; + + break; + case "SID": + if (vdata.SID.isEmpty()) + { + vdata.SID = Value; + vdata.SID_Trust = trust && vdata.SID.Length == 9 && vdata.SID.StartsWith("10"); + retval = true; + } + else + { + //이전의 값이있지만 신뢰값이 아닌경우이다 + if (vdata.SID_Trust == false) + { + if (trust) + { + vdata.SID = Value; + vdata.SID_Trust = (vdata.SID.Length == 9 && vdata.SID.StartsWith("10")); + retval = true; + } + } + } + break; + case "RID": + if (vdata.RID.isEmpty()) + { + vdata.SetRID(Value, "PASER"); + vdata.RID_Trust = trust; + retval = true; + } + else + { + //if value is not empty , check trust level and Apply data + if (vdata.RID_Trust == false) + { + if (trust) + { + vdata.SetRID(Value, "PASER"); + vdata.RID_Trust = trust; + retval = true; + } + } + else + { + //check newreelid _ old data + if (vdata.RIDNew) + { + if (vdata.RID0.isEmpty()) + { + PUB.log.Add($"RID(Org) Set =>{Value}"); + vdata.RID0 = Value; + } + + } + } + } + break; + + case "LOT": + case "VLOT": + if (vdata.VLOT.isEmpty()) + { + vdata.VLOT = Value; + vdata.VLOT_Trust = trust; + retval = true; + } + else + { + //if value is not empty , check trust level and Apply data + if (vdata.VLOT_Trust == false) + { + if (trust) + { + vdata.VLOT = Value; + vdata.VLOT_Trust = true; + retval = true; + } + } + } + break; + case "VNAME": + if (vdata.VNAME.isEmpty()) + { + vdata.VNAME = Value; + vdata.VNAME_Trust = trust; + retval = true; + } + else + { + //if value is not empty , check trust level and Apply data + if (vdata.VNAME_Trust == false) + { + if (trust) + { + vdata.VNAME = Value; + vdata.VNAME_Trust = true; + retval = true; + } + } + } + break; + case "PARTNO": + case "PART": + if (vdata.PARTNO.isEmpty()) + { + vdata.PARTNO = Value; + vdata.PARTNO_Trust = trust; + retval = true; + } + else + { + //if value is not empty , check trust level and Apply data + if (vdata.PARTNO_Trust == false) + { + if (trust) + { + vdata.PARTNO = Value; + vdata.PARTNO_Trust = true; + retval = true; + } + } + } + break; + case "MFG": + if (vdata.MFGDATE.isEmpty()) + { + vdata.MFGDATE = Value; + vdata.MFGDATE_Trust = trust; + retval = true; + } + else + { + //if value is not empty , check trust level and Apply data + if (vdata.MFGDATE_Trust == false) + { + if (trust) + { + vdata.MFGDATE = Value; + vdata.MFGDATE_Trust = true; + retval = true; + } + } + } + break; + case "QTY": + if (vdata.QTY.isEmpty()) + { + vdata.QTY = Value; + vdata.QTY_Trust = trust; + retval = true; + } + else + { + //if value is not empty , check trust level and Apply data + if (vdata.QTY_Trust == false) + { + if (trust) + { + vdata.QTY = Value; + vdata.QTY_Trust = true; + retval = true; + } + } + else + { + //신규발행에의해 신뢰된 자료라면 원본릴아이디에 이 값을 쓴다 + if (vdata.QTY0.Equals("NONE") || vdata.QTY0.isEmpty()) + { + PUB.log.AddAT($"Reel quantity(original) value applied(new value applied state):{Value}"); + vdata.QTY0 = Value.Trim(); + } + } + } + break; + case "QTYRQ": + if (vdata.QTY.isEmpty()) + { + vdata.QTY = Value; + vdata.QTYRQ = true; + vdata.QTY_Trust = trust; + retval = true; + } + else + { + if (trust) //if value is trust, + { + vdata.QTY = Value; + vdata.QTYRQ = true; + vdata.QTY_Trust = true; + retval = true; + } + } + break; + default: + PUB.log.AddAT($"Unknown RegEx Target Name : {TargetPos}"); + break; + } + return retval; + } + + + + + public static List GetPatterns(string custname, bool ignore) + { + var patterns = new List(); + if (custname.isEmpty()) custname = "%"; + + //데이터베이스에서 해당 데이터를 가져온다 + if (AR.SETTING.Data.OnlineMode) + { + try + { + using (var ta = new DataSet1TableAdapters.K4EE_Component_Reel_RegExRuleTableAdapter()) + { + ta.ClearBeforeFill = true; + if (ignore) ta.FillIgnore(PUB.mdm.dataSet.K4EE_Component_Reel_RegExRule, custname); + else ta.Fill(PUB.mdm.dataSet.K4EE_Component_Reel_RegExRule, custname); + PUB.mdm.dataSet.K4EE_Component_Reel_RegExRule.AcceptChanges(); + } + } + catch (Exception ex) + { + PUB.log.Add(ex.Message); + } + } + + //data + foreach (DataSet1.K4EE_Component_Reel_RegExRuleRow dr in PUB.mdm.dataSet.K4EE_Component_Reel_RegExRule) + { + if (ignore) + { + if (dr.Pattern.isEmpty()) continue; + } + else + { + if (dr.Groups.isEmpty() || dr.Pattern.isEmpty()) continue; + } + + var groupsbuf = dr.Groups.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + var Groups = new List(); + foreach (var item in groupsbuf) + { + var itembuf = item.Split('='); + if (itembuf.Length > 1) + { + int grpno = 0; + string targetpos = ""; + + if (int.TryParse(itembuf[1].Trim(), out grpno) == false) + { + if (int.TryParse(itembuf[0].Trim(), out grpno) == false) + { + PUB.log.AddE($"RegEX Grp Data Error = {item}"); + } + else targetpos = itembuf[1].Trim(); + } + else targetpos = itembuf[0].Trim(); + + Groups.Add(new Class.RegexGroupMatch + { + GroupNo = grpno,//int.Parse(itembuf[1].Trim()), + TargetPos = targetpos,//itembuf[0].Trim(), + }); + } + else PUB.log.AddE($"RegEX Grp Data Error = {item}"); + } + + //add pattern data + patterns.Add(new Class.RegexPattern + { + Seq = dr.Seq, + Customer = dr.CustCode, + Description = dr.Description, + Symbol = dr.Symbol, + Pattern = dr.Pattern, + IsTrust = dr.IsTrust, + IsAmkStd = dr.IsAmkStd, + IsEnable = dr.IsEnable, + Groups = Groups.ToArray(), + }); + } + return patterns; + } + + public static int RemoveCache(string basefile) + { + var fi = new System.IO.FileInfo(basefile); + //해당폴더에서 해당 차수의 파일 및 다른 확장자 모두를 삭제한다. + var fisearch = fi.Name.Replace(fi.Extension, ".*"); + var delFiles = fi.Directory.GetFiles(fisearch, System.IO.SearchOption.TopDirectoryOnly); + if (delFiles.Count() < 1) return 0; + else + { + //파일을 삭제한다. + var cnt = 0; + try + { + foreach (var delFile in delFiles) + { + PUB.log.Add("Archive file deleted: " + delFile.FullName); + delFile.Delete(); + cnt += 1; + } + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + } + return cnt; + } + } + //public static class flag + //{ + // public static void set(eFlag idx, bool value, string remark) + // { + // VAR.BOOL[(int)idx] + // } + //} + + public static class flag + { + public static bool get(eVarBool flag) + { + return VAR.BOOL[(int)flag]; + } + public static void set(eVarBool flag, bool value, string remark) + { + VAR.BOOL.Set((int)flag, value, remark); + } + } + + public static void initCore() + { + system_mot = new System_MotParameter(UTIL.MakePath("Data", "System_mot.xml")); + system_mot.Load(); + + //setting + SETTING.Load(); + VAR.Init(LenI32: 128, LenBool: 192); + + //log + log = new Log(); + logDbg = new Log(); logDbg.FileNameFormat = "{yyyyMMdd}_DEBUG"; + logFlag = new Log(); logFlag.FileNameFormat = "{yyyyMMdd}_FG"; + logILock = new Log(); logILock.FileNameFormat = "{yyyyMMdd}_IL"; + logbarcode = new Log(); logbarcode.FileNameFormat = "{yyyyMMdd}_BC"; + logWS = new Log(); logWS.FileNameFormat = "{yyyyMMdd}_WS"; + logKeyence = new Log(); logKeyence.FileNameFormat = "{yyyyMMdd}_KEYENCE"; + logILStop = new Log(); logILStop.FileNameFormat = "{yyyyMMdd}_ILOCK"; + logVision = new Log(); logVision.FileNameFormat = "{yyyyMMdd}_VISION"; + + //popupmessage + popup = new MessageWindow(); + popup.WindowClose += popup_WindowClose; + popup.WindowOpen += popup_WindowOpen; + + //zpl파일 만든다. + var fn = Path.Combine(UTIL.CurrentPath, "Data", "zpl.txt"); + // i// File.WriteAllText(fn, Properties.Settings.Default.ZPL7, Encoding.Default); + } + + static void popup_WindowOpen(object sender, EventArgs e) + { + var msgdata = sender as MessageWindow.CMessageData; + Console.WriteLine("window open : " + msgdata.Tag); + } + + static void popup_WindowClose(object sender, EventArgs e) + { + var msgdata = sender as MessageWindow.CMessageData; + Console.WriteLine("window close : " + msgdata.Tag); + } + public static void LogFlush() + { + PUB.log.Flush(); + PUB.logbarcode.Flush(); + PUB.logDbg.Flush(); + PUB.logFlag.Flush(); + PUB.logILock.Flush(); + PUB.logKeyence.Flush(); + PUB.logILStop.Flush(); + PUB.logVision.Flush(); + } + + public static void init() + { + Result = new CResult(); + + //state machine + sm = new Device.CStateMachine(); + + //database + mdm = new Manager.ModelManager( + UTIL.CurrentPath + "Model\\modelv.csv", + UTIL.CurrentPath + "Model\\modelc.csv", + UTIL.CurrentPath + "Model\\modele.xml", + UTIL.CurrentPath + "Model\\modeli.xml", + UTIL.CurrentPath + "Model\\modelo.xml"); + + mdm.Load(); + + //핀정보설정 + DIO.Pin = new PinList(); + DIO.Pin.SetOutputData(PUB.mdm.dataSet.OutputDescription); + DIO.Pin.SetInputData(PUB.mdm.dataSet.InputDescription); + + + //dbSQL = new Manager.DataBaseMSSQL(); + //dbmHistory = new Manager.DatabaseManagerHistory(); + dbmSidHistory = new Manager.DatabaseManagerSIDHistory(); + + dbmCount = new Manager.DatabaseManagerCount(); + dbmCount.dataPath = AR.SETTING.Data.GetDataPath(); //200113 + + dio = new arDev.AjinEXTEK.DIO(arDev.AjinEXTEK.ELibraryType.AXT); + mot = new arDev.AjinEXTEK.MOT(arDev.AjinEXTEK.ELibraryType.AXT); + + // flag = new Flag(); + + //모터축에대한 인터락우선추가 + var axislist = Enum.GetNames(typeof(eAxis)); + iLock = new CInterLock[axislist.Length]; + int i = 0; + for (i = 0; i < axislist.Length; i++) + { + var axisname = axislist[i]; + iLock[i] = new CInterLock(64, axisname); + iLock[i].idx = i; + } + + //프린터관련 인터락추가 + iLockPRL = new CInterLock(64, "PRL"); + iLockPRR = new CInterLock(64, "PRR"); + iLockVS0 = new CInterLock(64, "VS0"); + iLockVS1 = new CInterLock(64, "VS1"); + iLockVS2 = new CInterLock(64, "VS2"); + iLockCVL = new CInterLock(64, "CVL"); + iLockCVR = new CInterLock(64, "CVR"); + + Array.Resize(ref iLock, axislist.Length + 7); + iLock[i++] = iLockPRL; + iLock[i++] = iLockPRR; + iLock[i++] = iLockVS0; + iLock[i++] = iLockVS1; + iLock[i++] = iLockVS2; + iLock[i++] = iLockCVL; + iLock[i++] = iLockCVR; + + //default를 해제하면 sps에서 할당제한을 한다 + //sps도 같이 체크해야함 + for (i = 7; i < iLock.Length; i++) + { + //iLock[i].DefaultLock = false; + iLock[i].idx = i; + } + + //language - disabled (now using hardcoded English) + // Lang.Loading(AR.SETTING.Data.Language + ".ini"); + + LoadDataTable(); + + //allow list + userList = new DataSet1.UsersDataTable(); + string fn = UTIL.MakePath("Data", "users.xml"); + if (System.IO.File.Exists(fn)) userList.ReadXml(fn); + else userList.WriteXml(fn, true); + + + BuzzerTime = DateTime.Parse("1982-11-23"); + MGZRunTime = DateTime.Parse("1982-11-23"); + LoadSIDList(); //사용자sid목록 가져옴 + } + + public static string IP { get; set; } + public static string MAC { get; set; } + public static string HOSTNAME { get; set; } + + public static void GetIPMac() + { + string ip = ""; + string mac = ""; + try + { + var nif = NetworkInterface.GetAllNetworkInterfaces(); + var host = Dns.GetHostEntry(Dns.GetHostName()); + HOSTNAME = System.Net.Dns.GetHostEntry("").HostName; + foreach (IPAddress r in host.AddressList) + { + string str = r.ToString(); + + if (str != "" && str.Substring(0, 3) == "10.") + { + ip = str; + break; + } + } + + string rtn = string.Empty; + ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'"); + ManagementObjectSearcher query1 = new ManagementObjectSearcher(oq); + foreach (ManagementObject mo in query1.Get()) + { + string[] address = (string[])mo["IPAddress"]; + if (address[0] == ip && mo["MACAddress"] != null) + { + mac = mo["MACAddress"].ToString(); + break; + } + } + + } + catch (Exception ex) + { + ip = ""; + mac = ""; + } + + IP = ip; + MAC = mac; + + + + } + + /// + /// 프로그램 사용기록 추가 + /// + /// + /// + /// + public static void CheckNRegister3(string prgmName, string develop, string prgmVersion) + { + if (prgmName.Length > 50) prgmName = prgmName.Substring(0, 50); //길이제한 + var task = Task.Factory.StartNew(() => + { + GetIPMac(); + try + { + + if (IP == "" || MAC == "") + { + return; + } + + + SqlConnection conn = new SqlConnection("Data Source=K4FASQL.kr.ds.amkor.com,50150;Initial Catalog=EE;Persist Security Info=True;User ID=eeadm;Password=uJnU8a8q&DJ+ug-D"); + conn.Open(); + string ProcName = "AddPrgmUser3"; + SqlCommand cmd = new SqlCommand(ProcName, conn) + { + CommandType = CommandType.StoredProcedure + }; + + SqlParameter param = cmd.Parameters.Add("@mac", SqlDbType.NVarChar, 50); + param.Value = MAC; + + param = cmd.Parameters.Add("@ip", SqlDbType.NVarChar, 50); + param.Value = IP; + + param = cmd.Parameters.Add("@pgrm", SqlDbType.NVarChar, 50); + param.Value = prgmName; + + param = cmd.Parameters.Add("@develop", SqlDbType.NVarChar, 50); + param.Value = develop; + + param = cmd.Parameters.Add("@pgver", SqlDbType.NVarChar, 50); + param.Value = prgmVersion; + + param = cmd.Parameters.Add("@prgmLogin", SqlDbType.VarChar, 20); + param.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + param = cmd.Parameters.Add("@account", SqlDbType.NVarChar, 50); + param.Value = System.Environment.UserName; + + param = cmd.Parameters.Add("@hostname", SqlDbType.NVarChar, 100); + param.Value = HOSTNAME; + + cmd.ExecuteNonQuery(); + conn.Close(); + + + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + } + + }); + } + + /// + /// 디버깅정보르를 포함한 시스템 로그를 넣습니다. + /// + /// + /// + /// + /// + public static void AddSystemLog(string prgmVersion, string Screen, string Message, + [CallerFilePath] string filenpath = null, + [CallerLineNumber] int linenumer = -1, + [CallerMemberName] string callMember = null) + { + + var stackFrame = new System.Diagnostics.StackTrace(1).GetFrame(1); + string fileName = stackFrame.GetFileName(); + if (fileName.isEmpty()) fileName = filenpath; + + string methodName = stackFrame.GetMethod().ToString(); + if (methodName.isEmpty()) methodName = callMember; + + int lineNumber = stackFrame.GetFileLineNumber(); + if (linenumer != -1) lineNumber = linenumer; + + var maxlen = 100; + if (Screen.Length > maxlen) Screen = Screen.Substring(0, maxlen - 1); //길이제한 + maxlen = 255; + if (Message.Length > maxlen) Message = Message.Substring(0, maxlen - 1); //길이제한 + maxlen = 3000; + + var TraceInfo = stackFrame.ToString(); + if (TraceInfo.Length > maxlen) TraceInfo = TraceInfo.Substring(0, maxlen - 1); //길이제한 + + + var task = Task.Factory.StartNew(() => + { + try + { + string HostName = System.Net.Dns.GetHostEntry("").HostName; + + SqlConnection conn = new SqlConnection("Data Source=10.131.15.18;Initial Catalog=EE;Persist Security Info=True;User ID=eeuser;Password=Amkor123!"); + conn.Open(); + string ProcName = "insert into SystemLog_STDLabelAttach(HostName,Version,Screen,Message,TraceInfo,wdate,FileName,LineNumber) values(@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8)"; + SqlCommand cmd = new SqlCommand(ProcName, conn); + cmd.CommandType = CommandType.Text; + var param = cmd.Parameters.Add("@p1", SqlDbType.VarChar, 50); + param.Value = HostName; + + param = cmd.Parameters.Add("@p2", SqlDbType.VarChar, 20); + param.Value = prgmVersion; + + param = cmd.Parameters.Add("@p3", SqlDbType.VarChar, 100); + param.Value = Screen; + + param = cmd.Parameters.Add("@p4", SqlDbType.VarChar, 255); + param.Value = Message; + + param = cmd.Parameters.Add("@p5", SqlDbType.VarChar); + param.Value = TraceInfo; + + param = cmd.Parameters.Add("@p6", SqlDbType.DateTime); + param.Value = DateTime.Now; + + param = cmd.Parameters.Add("@p7", SqlDbType.VarChar, 1000); + param.Value = fileName; + + param = cmd.Parameters.Add("@p8", SqlDbType.Int); + param.Value = lineNumber; + + var cnt = cmd.ExecuteNonQuery(); + conn.Close(); + } + catch (Exception ex) + { + PUB.log.AddE(ex.Message); + } + + }); + } + public static Boolean PasswordCheck() + { + var pass = new AR.Dialog.fPassword(); + if (pass.ShowDialog() == DialogResult.OK) + { + var p = AR.SETTING.Data.Password_Setup; + if (p.isEmpty()) p = DateTime.Now.ToString("ddMM"); + if (pass.tbInput.Text.Trim() != p) return false; + else return true; + } + else return false; + } + public static void LoadDataTable() + { + mailForm = new DataSet1.MailFormatDataTable(); + string fn = AppDomain.CurrentDomain.BaseDirectory + "mailForm.xml"; + if (System.IO.File.Exists(fn)) mailForm.ReadXml(fn); + else + { + var nr = mailForm.NewMailFormatRow(); + nr.subject = ""; + nr.content = ""; + mailForm.AddMailFormatRow(nr); + mailForm.AcceptChanges(); + mailForm.WriteXml(fn, true); + } + mailList = new DataSet1.MailRecipientDataTable(); + string fn1 = AppDomain.CurrentDomain.BaseDirectory + "mailList.xml"; + if (System.IO.File.Exists(fn1)) mailList.ReadXml(fn1); + else mailList.WriteXml(fn, true); + } + public static Rectangle GetVisionOrientSearchArea( + Rectangle baserect, + int offsetX, + int offsetY, + out string VisionOrientMessage) + { + VisionOrientMessage = ""; + var newORectW = baserect.Width + offsetX; + var newORectH = baserect.Height + offsetY; + + var newORectX = baserect.X - ((newORectW - baserect.Width) / 2.0); + var newORectY = baserect.Y - ((newORectH - baserect.Height) / 2.0); + if (newORectX < 1) + { + newORectW += (int)newORectY; + newORectX = 1; + } + if (newORectY < 1) + { + newORectH += (int)newORectY; + newORectY = 1; + } + if (newORectW < 4) newORectW = 0; + if (newORectH < 4) newORectH = 0; + var newORect = new Rectangle((int)newORectX, (int)newORectY, (int)newORectW, (int)newORectH); + if (newORect.Width < 1 || newORect.Height < 1) + { + VisionOrientMessage = string.Format("기준영역 크기 오류({0},{1},{2},{3})", newORect.Left, newORect.Top, newORect.Width, newORect.Height); + return Rectangle.Empty; + } + else return newORect; + } + + public static void GetJobColor(Class.JobData.ErrorCode result, Color baseBack, out Color fColor, out Color bColor) + { + if (result == Class.JobData.ErrorCode.BarcodeRead) + { + //배출됫엇다면 색상을 변경한다. + fColor = Color.Tomato; + bColor = baseBack; + } + else + { + fColor = Color.WhiteSmoke; + bColor = baseBack; + } + } + + public static DataSet1.UserSIDDataTable DTUserSID; + public static void LoadSIDList() + { + if (DTUserSID == null) DTUserSID = new DataSet1.UserSIDDataTable(); + else DTUserSID.Clear(); + var fi = new System.IO.FileInfo(UTIL.CurrentPath + "Data\\UserSID.csv"); + + + if (fi.Exists == true) + { + string[] lines = null; + try + { + lines = System.IO.File.ReadAllLines(fi.FullName, System.Text.Encoding.UTF8); + } + catch (Exception ex) + { + UTIL.MsgE(ex.Message, true); + lines = new string[] { }; + } + foreach (var line in lines) + { + if (line.isEmpty()) continue; + if (line.StartsWith("#")) continue; //주석문 + var buffer = line.Split(','); + if (buffer.Length < 2) continue; + var port = buffer[0]; + var sid = buffer[1]; + if (sid.isEmpty()) continue; + if (port == "0") port = "11"; + if (port == "1") port = "12"; + if (port == "2") port = "21"; + if (port == "3") port = "22"; + if (port == "4") port = "31"; + if (port == "5") port = "32"; + if (port == "6") port = "41"; + if (port == "7") port = "42"; + + //중복체크 + var Exist = DTUserSID.Where(t => t.SID == sid && t.Port == port).Count() > 0; + if (Exist == false) + { + var newdr = DTUserSID.NewUserSIDRow(); + newdr.Port = port; + newdr.SID = sid; + DTUserSID.AddUserSIDRow(newdr); + } + } + } + else if (fi.Directory.Exists == false) fi.Directory.Create(); + + DTUserSID.AcceptChanges(); + PUB.log.Add("User SID list: " + DTUserSID.Count.ToString() + " records loaded"); + } + public static void SaveSIDList() + { + if (DTUserSID == null) return; + var fi = new System.IO.FileInfo(UTIL.CurrentPath + "Data\\UserSID.csv"); + if (fi.Directory.Exists == false) fi.Directory.Create(); + + if (DTUserSID.Count < 1) fi.Delete(); + else + { + //자료를 저장한다. + var sb = new System.Text.StringBuilder(); + sb.AppendLine("#PORT,SID"); + var orderlist = from m in DTUserSID + orderby m.Port + orderby m.SID + select m; + + var cnt = 0; + foreach (DataSet1.UserSIDRow dr in orderlist) + { + if (dr.SID.isEmpty() || dr.Port.isEmpty()) continue; + sb.AppendLine(string.Format("{0},{1}", dr.Port, dr.SID)); + cnt += 1; + } + System.IO.File.WriteAllText(fi.FullName, sb.ToString(), System.Text.Encoding.UTF8); + PUB.log.Add(string.Format("{0} user SIDs have been saved", cnt)); + } + } + + public static double GetFreeSpace(string driveletter) + { + try + { + var di = new System.IO.DriveInfo(driveletter); + var freespace = di.TotalFreeSpace; + var totalspace = di.TotalSize; + var freeSpaceRate = (freespace * 1.0 / totalspace) * 100.0; + return freeSpaceRate; + } + catch + { + return 100.0; + } + } + + public static string getSavePath(out double freespace) + { + Boolean path1Exist = false; + double freespace1 = 100.0; + string savePath1 = ""; + + freespace = 100.0; + + savePath1 = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "Images"); + if (savePath1 != "" && System.IO.Directory.Exists(savePath1)) + { + path1Exist = true; + //이폴더를 사용 + if (savePath1.StartsWith("\\")) return savePath1; + //남은잔량을 체크한다. + freespace1 = GetFreeSpace(savePath1.Substring(0, 1)); + if (freespace1 >= AR.SETTING.Data.AutoDeleteThreshold) return savePath1; + } + + if (path1Exist) + { + freespace = freespace1; + return savePath1; + } + + //이제 문제가 좀 심각? (폴더가 없다) + var savePath = System.IO.Path.Combine(UTIL.CurrentPath, "Images"); + if (System.IO.Directory.Exists(savePath) == false) + System.IO.Directory.CreateDirectory(savePath); + + freespace = GetFreeSpace(savePath.Substring(0, 1)); + return savePath; + } + public static double ChangeValuePopup(double value, string title) + { + var f = new AR.Dialog.fInput(title, value.ToString()); + if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + var val = double.Parse(f.tbInput.Text); + return val; + } + else return value; + + } + + public static (bool success, string newid, string message) MakeNewREELID(string sid) + { + //WMS은 DB에서 생성하낟. + var ta = new dsWMSTableAdapters.QueriesTableAdapter(); + + string NewID = string.Empty; + string Message = string.Empty; + var ip = PUB.IP ?? "127.0.0.1"; + + var retval = ta.X_SP_GET_UNIT_ID_LABEL(SETTING.Data.WMS_PROGRAM_ID, + SETTING.Data.WMS_CENTER_CD, sid, + SETTING.Data.WMS_REG_USERID, + ip, + ref NewID, + ref Message); + + return ((!NewID.isEmpty() && Message == "OK"), NewID, Message); + } + + public static void CheckFreeSpace() + { + //용량확인 + var DriveName = AR.SETTING.Data.GetDataPath().Substring(0, 1); + PUB.FreeSpace = UTIL.GetFreeSpace(DriveName); + + } + + public static void splitID(string ID, out string ww, out string seq) + { + if (ID.Length < 3) + { + ww = ""; + seq = ""; + } + else + { + try + { + ww = ID.Substring(0, 2);// int.Parse(ID.Substring(0, 2)); + seq = ID.Substring(2);// int.Parse(ID.Substring(2)); + } + catch (Exception ex) + { + PUB.log.AddE("slit id eerr" + ex.Message); + ww = ""; + seq = "-1"; + } + } + } + public static UInt16[] SIDtoUInt16(string sid) + { + var sidstr = sid.PadLeft(10, '0'); //총 10자리로 만들어놓는다 + var getbytes = System.Text.Encoding.Default.GetBytes(sidstr); + + var c1 = getbytes[1].ToString("X2") + getbytes[0].ToString("x2"); + var c2 = getbytes[3].ToString("X2") + getbytes[2].ToString("x2"); + var c3 = getbytes[5].ToString("X2") + getbytes[4].ToString("x2"); + var c4 = getbytes[7].ToString("X2") + getbytes[6].ToString("x2"); + var c5 = getbytes[9].ToString("X2") + getbytes[8].ToString("x2"); + + var Buffer = new UInt16[5]; + var index = 0; + Buffer[index++] = Convert.ToUInt16(c1, 16); + Buffer[index++] = Convert.ToUInt16(c2, 16); + Buffer[index++] = Convert.ToUInt16(c3, 16); + Buffer[index++] = Convert.ToUInt16(c4, 16); + Buffer[index++] = Convert.ToUInt16(c5, 16); + return Buffer; + } + + public static void ChangeUIPopup(System.Windows.Forms.NumericUpDown valueCtl) + { + var value = valueCtl.Value.ToString(); + AR.Dialog.fInput f = new AR.Dialog.fInput("Input value", value); + if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + var val = decimal.Parse(f.tbInput.Text); + if (val < valueCtl.Minimum) + { + UTIL.MsgE(string.Format("Minimum input value is {0}.", valueCtl.Minimum)); + val = valueCtl.Minimum; + } + if (val > valueCtl.Maximum) + { + UTIL.MsgE(string.Format("Maximum input value is {0}.", valueCtl.Maximum)); + val = valueCtl.Maximum; + } + valueCtl.Value = val; + } + } + + #region "message description" + + + public static string GetErrorMessage(eECode err, params object[] args) + { + string ermsg = string.Empty; + string description = string.Empty; + + // Get error description using switch statement with hardcoded messages + switch (err) + { + case eECode.EMERGENCY: + description = "Emergency stop activated\nPlease check the emergency button and reset"; + break; + case eECode.NOMODELV: + description = "Vision model not found\nPlease load or create a vision model"; + break; + case eECode.NOMODELM: + description = "Motion model not found\nPlease load or create a motion model"; + break; + case eECode.HOME_TIMEOUT: + description = "Home position timeout\nMotor failed to reach home position within timeout period"; + break; + case eECode.NOFUNCTION: + description = "Function not available\nThe requested function is not implemented"; + break; + case eECode.DOOFF: + description = "Digital output OFF failed\n{0}"; + break; + case eECode.DOON: + description = "Digital output ON failed\n{0}"; + break; + case eECode.DIOFF: + description = "Waiting for digital input OFF\n{0}"; + break; + case eECode.DION: + description = "Waiting for digital input ON\n{0}"; + break; + case eECode.MESSAGE_INFO: + description = "Information: {0}"; + break; + case eECode.MESSAGE_ERROR: + description = "Error: {0}"; + break; + case eECode.AZJINIT: + description = "Motion controller initialization failed\nPlease check the motion card connection"; + break; + case eECode.MOT_SVOFF: + description = "Motor servo is OFF\nPlease turn on the servo motor"; + break; + case eECode.MOT_CMD: + description = "Motion command error\n{0}"; + break; + case eECode.USER_STOP: + description = "User stop requested\nOperation stopped by user"; + break; + case eECode.USER_STEP: + description = "Step mode active\nPress continue to proceed"; + break; + case eECode.POSITION_ERROR: + description = "Position error\nAxis is not at the expected position\n{0}"; + break; + case eECode.MOTIONMODEL_MISSMATCH: + description = "Motion model mismatch\nThe loaded motion model does not match the system configuration"; + break; + case eECode.VISCONF: + description = "Vision configuration error\nPlease check vision system settings"; + break; + + case eECode.PRINTER: + description = "Printer error\nPlease check the printer connection and status\n{0}"; + break; + case eECode.QRDATAMISSMATCHL: + description = "Left QR data mismatch\nThe QR code data does not match expected format\n{0}"; + break; + case eECode.QRDATAMISSMATCHR: + description = "Right QR data mismatch\nThe QR code data does not match expected format\n{0}"; + break; + case eECode.MOTX_SAFETY: + description = "Motion X-axis safety error\nSafety condition violated for X-axis movement"; + break; + + default: + description = $"Unknown error code: {err}\n{{0}}"; + break; + } + + // Format the message with any provided arguments + try + { + ermsg = string.Format(description, args); + } + catch + { + // If formatting fails, just use the description as is + ermsg = description; + } + + return ermsg; + } + + public static string GetPinDescription(eDIName pin) + { + var pinno = (int)pin; + string ermsg = $"[X{pinno:X2}] {pin}"; + try + { + var dr = PUB.mdm.dataSet.InputDescription.Where(t => t.Idx == (short)pin).FirstOrDefault(); + if (dr != null) + { + if (dr.Description.isEmpty()) ermsg += $" {pin}"; + else ermsg += $" " + dr.Description.Replace("\\n", "\n"); + } + } + catch (Exception ex) { ermsg += "\n설명가져오기오류\n" + ex.Message; } + return ermsg; + } + + public static string GetPinDescription(eDOName pin) + { + var pinno = (int)pin; + string ermsg = $"[X{pinno:X2}] {pin}"; + try + { + var dr = PUB.mdm.dataSet.OutputDescription.Where(t => t.Idx == (short)pin).FirstOrDefault(); + if (dr != null) + { + if (dr.Description.isEmpty()) ermsg += $" {pin}"; + else ermsg += $" " + dr.Description.Replace("\\n", "\n"); + } + } + catch (Exception ex) { ermsg += "\n설명가져오기오류\n" + ex.Message; } + return ermsg; + } + + public static string GetPinName(eDIName pin) + { + var pinno = (int)pin; + string ermsg = $"[X{pinno:X2}] {pin}"; + + + try + { + var dr = PUB.mdm.dataSet.InputDescription.Where(t => t.Idx == (short)pin).FirstOrDefault(); + if (dr != null) + { + ermsg = dr.Title; + } + } + catch (Exception ex) { ermsg += "\n이름가져오기오류\n" + ex.Message; } + + + + return ermsg; + } + + public static string GetPinName(eDOName pin) + { + var pinno = (int)pin; + string ermsg = $"[Y{pinno:X2}] {pin}"; + + try + { + var dr = PUB.mdm.dataSet.OutputDescription.Where(t => t.Idx == (short)pin).FirstOrDefault(); + if (dr != null) + { + ermsg = dr.Title; + } + } + catch (Exception ex) { ermsg += "\n이름가져오기오류\n" + ex.Message; } + + + return ermsg; + } + public static string GetResultCodeMessage(eResult rltCode) + { + //별도 메세지처리없이 그대로 노출한다 + return rltCode.ToString().ToUpper(); + } + + #endregion + + } +} diff --git a/Handler/Project/Resources/action_go.gif b/Handler/Project/Resources/action_go.gif new file mode 100644 index 0000000..82ae7ed Binary files /dev/null and b/Handler/Project/Resources/action_go.gif differ diff --git a/Handler/Project/Resources/arrow_refresh_small.png b/Handler/Project/Resources/arrow_refresh_small.png new file mode 100644 index 0000000..d3087df Binary files /dev/null and b/Handler/Project/Resources/arrow_refresh_small.png differ diff --git a/Handler/Project/Resources/copy.gif b/Handler/Project/Resources/copy.gif new file mode 100644 index 0000000..ff81b3b Binary files /dev/null and b/Handler/Project/Resources/copy.gif differ diff --git a/Handler/Project/Resources/icons8-add-40.png b/Handler/Project/Resources/icons8-add-40.png new file mode 100644 index 0000000..d7acc3e Binary files /dev/null and b/Handler/Project/Resources/icons8-add-40.png differ diff --git a/Handler/Project/Resources/icons8-add-image-40.png b/Handler/Project/Resources/icons8-add-image-40.png new file mode 100644 index 0000000..7713915 Binary files /dev/null and b/Handler/Project/Resources/icons8-add-image-40.png differ diff --git a/Handler/Project/Resources/icons8-arrow-40-right.png b/Handler/Project/Resources/icons8-arrow-40-right.png new file mode 100644 index 0000000..c066ecf Binary files /dev/null and b/Handler/Project/Resources/icons8-arrow-40-right.png differ diff --git a/Handler/Project/Resources/icons8-arrow-pointing-left-40.png b/Handler/Project/Resources/icons8-arrow-pointing-left-40.png new file mode 100644 index 0000000..3296d3c Binary files /dev/null and b/Handler/Project/Resources/icons8-arrow-pointing-left-40.png differ diff --git a/Handler/Project/Resources/icons8-backward-40.png b/Handler/Project/Resources/icons8-backward-40.png new file mode 100644 index 0000000..60202e3 Binary files /dev/null and b/Handler/Project/Resources/icons8-backward-40.png differ diff --git a/Handler/Project/Resources/icons8-barcode-scanner-40.png b/Handler/Project/Resources/icons8-barcode-scanner-40.png new file mode 100644 index 0000000..a90a934 Binary files /dev/null and b/Handler/Project/Resources/icons8-barcode-scanner-40.png differ diff --git a/Handler/Project/Resources/icons8-black-circle-40.png b/Handler/Project/Resources/icons8-black-circle-40.png new file mode 100644 index 0000000..f70bfc3 Binary files /dev/null and b/Handler/Project/Resources/icons8-black-circle-40.png differ diff --git a/Handler/Project/Resources/icons8-border-all-40.png b/Handler/Project/Resources/icons8-border-all-40.png new file mode 100644 index 0000000..692dfed Binary files /dev/null and b/Handler/Project/Resources/icons8-border-all-40.png differ diff --git a/Handler/Project/Resources/icons8-broom-40.png b/Handler/Project/Resources/icons8-broom-40.png new file mode 100644 index 0000000..699b3ff Binary files /dev/null and b/Handler/Project/Resources/icons8-broom-40.png differ diff --git a/Handler/Project/Resources/icons8-camera-40.png b/Handler/Project/Resources/icons8-camera-40.png new file mode 100644 index 0000000..bc1d5c1 Binary files /dev/null and b/Handler/Project/Resources/icons8-camera-40.png differ diff --git a/Handler/Project/Resources/icons8-camera-401.png b/Handler/Project/Resources/icons8-camera-401.png new file mode 100644 index 0000000..bc1d5c1 Binary files /dev/null and b/Handler/Project/Resources/icons8-camera-401.png differ diff --git a/Handler/Project/Resources/icons8-cancel-40.png b/Handler/Project/Resources/icons8-cancel-40.png new file mode 100644 index 0000000..7d1f298 Binary files /dev/null and b/Handler/Project/Resources/icons8-cancel-40.png differ diff --git a/Handler/Project/Resources/icons8-checked-40.png b/Handler/Project/Resources/icons8-checked-40.png new file mode 100644 index 0000000..8d08969 Binary files /dev/null and b/Handler/Project/Resources/icons8-checked-40.png differ diff --git a/Handler/Project/Resources/icons8-checked-radio-button-48.png b/Handler/Project/Resources/icons8-checked-radio-button-48.png new file mode 100644 index 0000000..7130e2f Binary files /dev/null and b/Handler/Project/Resources/icons8-checked-radio-button-48.png differ diff --git a/Handler/Project/Resources/icons8-clamps-40.png b/Handler/Project/Resources/icons8-clamps-40.png new file mode 100644 index 0000000..1a267bb Binary files /dev/null and b/Handler/Project/Resources/icons8-clamps-40.png differ diff --git a/Handler/Project/Resources/icons8-control-panel-40.png b/Handler/Project/Resources/icons8-control-panel-40.png new file mode 100644 index 0000000..d7b3121 Binary files /dev/null and b/Handler/Project/Resources/icons8-control-panel-40.png differ diff --git a/Handler/Project/Resources/icons8-copy-40.png b/Handler/Project/Resources/icons8-copy-40.png new file mode 100644 index 0000000..29c6ef5 Binary files /dev/null and b/Handler/Project/Resources/icons8-copy-40.png differ diff --git a/Handler/Project/Resources/icons8-delete-40.png b/Handler/Project/Resources/icons8-delete-40.png new file mode 100644 index 0000000..11c1a98 Binary files /dev/null and b/Handler/Project/Resources/icons8-delete-40.png differ diff --git a/Handler/Project/Resources/icons8-edit-48.png b/Handler/Project/Resources/icons8-edit-48.png new file mode 100644 index 0000000..c45b94c Binary files /dev/null and b/Handler/Project/Resources/icons8-edit-48.png differ diff --git a/Handler/Project/Resources/icons8-exercise-40.png b/Handler/Project/Resources/icons8-exercise-40.png new file mode 100644 index 0000000..ee72597 Binary files /dev/null and b/Handler/Project/Resources/icons8-exercise-40.png differ diff --git a/Handler/Project/Resources/icons8-flip-vertical-40.png b/Handler/Project/Resources/icons8-flip-vertical-40.png new file mode 100644 index 0000000..231f62a Binary files /dev/null and b/Handler/Project/Resources/icons8-flip-vertical-40.png differ diff --git a/Handler/Project/Resources/icons8-folder-40.png b/Handler/Project/Resources/icons8-folder-40.png new file mode 100644 index 0000000..4e819e3 Binary files /dev/null and b/Handler/Project/Resources/icons8-folder-40.png differ diff --git a/Handler/Project/Resources/icons8-grab-tool-48.png b/Handler/Project/Resources/icons8-grab-tool-48.png new file mode 100644 index 0000000..f79590c Binary files /dev/null and b/Handler/Project/Resources/icons8-grab-tool-48.png differ diff --git a/Handler/Project/Resources/icons8-green-circle-40.png b/Handler/Project/Resources/icons8-green-circle-40.png new file mode 100644 index 0000000..6a0a7df Binary files /dev/null and b/Handler/Project/Resources/icons8-green-circle-40.png differ diff --git a/Handler/Project/Resources/icons8-hand-40.png b/Handler/Project/Resources/icons8-hand-40.png new file mode 100644 index 0000000..29484a7 Binary files /dev/null and b/Handler/Project/Resources/icons8-hand-40.png differ diff --git a/Handler/Project/Resources/icons8-input-40.png b/Handler/Project/Resources/icons8-input-40.png new file mode 100644 index 0000000..e7be5f0 Binary files /dev/null and b/Handler/Project/Resources/icons8-input-40.png differ diff --git a/Handler/Project/Resources/icons8-joystick-40.png b/Handler/Project/Resources/icons8-joystick-40.png new file mode 100644 index 0000000..0061b03 Binary files /dev/null and b/Handler/Project/Resources/icons8-joystick-40.png differ diff --git a/Handler/Project/Resources/icons8-laser-beam-40.png b/Handler/Project/Resources/icons8-laser-beam-40.png new file mode 100644 index 0000000..c0606ac Binary files /dev/null and b/Handler/Project/Resources/icons8-laser-beam-40.png differ diff --git a/Handler/Project/Resources/icons8-light-20.png b/Handler/Project/Resources/icons8-light-20.png new file mode 100644 index 0000000..9e6e5b8 Binary files /dev/null and b/Handler/Project/Resources/icons8-light-20.png differ diff --git a/Handler/Project/Resources/icons8-light-30.png b/Handler/Project/Resources/icons8-light-30.png new file mode 100644 index 0000000..4844ca9 Binary files /dev/null and b/Handler/Project/Resources/icons8-light-30.png differ diff --git a/Handler/Project/Resources/icons8-light-on-40.png b/Handler/Project/Resources/icons8-light-on-40.png new file mode 100644 index 0000000..86adb94 Binary files /dev/null and b/Handler/Project/Resources/icons8-light-on-40.png differ diff --git a/Handler/Project/Resources/icons8-log-40.png b/Handler/Project/Resources/icons8-log-40.png new file mode 100644 index 0000000..81794d2 Binary files /dev/null and b/Handler/Project/Resources/icons8-log-40.png differ diff --git a/Handler/Project/Resources/icons8-move-right-40.png b/Handler/Project/Resources/icons8-move-right-40.png new file mode 100644 index 0000000..b5fc850 Binary files /dev/null and b/Handler/Project/Resources/icons8-move-right-40.png differ diff --git a/Handler/Project/Resources/icons8-new-40.png b/Handler/Project/Resources/icons8-new-40.png new file mode 100644 index 0000000..85f3a28 Binary files /dev/null and b/Handler/Project/Resources/icons8-new-40.png differ diff --git a/Handler/Project/Resources/icons8-no-running-40.png b/Handler/Project/Resources/icons8-no-running-40.png new file mode 100644 index 0000000..be7c877 Binary files /dev/null and b/Handler/Project/Resources/icons8-no-running-40.png differ diff --git a/Handler/Project/Resources/icons8-object-40.png b/Handler/Project/Resources/icons8-object-40.png new file mode 100644 index 0000000..73b5e17 Binary files /dev/null and b/Handler/Project/Resources/icons8-object-40.png differ diff --git a/Handler/Project/Resources/icons8-pin-40.png b/Handler/Project/Resources/icons8-pin-40.png new file mode 100644 index 0000000..2352608 Binary files /dev/null and b/Handler/Project/Resources/icons8-pin-40.png differ diff --git a/Handler/Project/Resources/icons8-plus-40.png b/Handler/Project/Resources/icons8-plus-40.png new file mode 100644 index 0000000..aab1bc3 Binary files /dev/null and b/Handler/Project/Resources/icons8-plus-40.png differ diff --git a/Handler/Project/Resources/icons8-printer-48.png b/Handler/Project/Resources/icons8-printer-48.png new file mode 100644 index 0000000..be5c951 Binary files /dev/null and b/Handler/Project/Resources/icons8-printer-48.png differ diff --git a/Handler/Project/Resources/icons8-red-circle-40.png b/Handler/Project/Resources/icons8-red-circle-40.png new file mode 100644 index 0000000..84dc810 Binary files /dev/null and b/Handler/Project/Resources/icons8-red-circle-40.png differ diff --git a/Handler/Project/Resources/icons8-refresh.gif b/Handler/Project/Resources/icons8-refresh.gif new file mode 100644 index 0000000..5aecc11 Binary files /dev/null and b/Handler/Project/Resources/icons8-refresh.gif differ diff --git a/Handler/Project/Resources/icons8-repeat-40.png b/Handler/Project/Resources/icons8-repeat-40.png new file mode 100644 index 0000000..cb2fb87 Binary files /dev/null and b/Handler/Project/Resources/icons8-repeat-40.png differ diff --git a/Handler/Project/Resources/icons8-resize-horizontal-40.png b/Handler/Project/Resources/icons8-resize-horizontal-40.png new file mode 100644 index 0000000..6a5a735 Binary files /dev/null and b/Handler/Project/Resources/icons8-resize-horizontal-40.png differ diff --git a/Handler/Project/Resources/icons8-robot-hand-40.png b/Handler/Project/Resources/icons8-robot-hand-40.png new file mode 100644 index 0000000..bde7935 Binary files /dev/null and b/Handler/Project/Resources/icons8-robot-hand-40.png differ diff --git a/Handler/Project/Resources/icons8-running-40.png b/Handler/Project/Resources/icons8-running-40.png new file mode 100644 index 0000000..6329e3a Binary files /dev/null and b/Handler/Project/Resources/icons8-running-40.png differ diff --git a/Handler/Project/Resources/icons8-save-40.png b/Handler/Project/Resources/icons8-save-40.png new file mode 100644 index 0000000..a096fb1 Binary files /dev/null and b/Handler/Project/Resources/icons8-save-40.png differ diff --git a/Handler/Project/Resources/icons8-save-close-40.png b/Handler/Project/Resources/icons8-save-close-40.png new file mode 100644 index 0000000..8565781 Binary files /dev/null and b/Handler/Project/Resources/icons8-save-close-40.png differ diff --git a/Handler/Project/Resources/icons8-save-to-grid-40.png b/Handler/Project/Resources/icons8-save-to-grid-40.png new file mode 100644 index 0000000..3e4fea2 Binary files /dev/null and b/Handler/Project/Resources/icons8-save-to-grid-40.png differ diff --git a/Handler/Project/Resources/icons8-selection-40.png b/Handler/Project/Resources/icons8-selection-40.png new file mode 100644 index 0000000..2693a22 Binary files /dev/null and b/Handler/Project/Resources/icons8-selection-40.png differ diff --git a/Handler/Project/Resources/icons8-smart-lock-40.png b/Handler/Project/Resources/icons8-smart-lock-40.png new file mode 100644 index 0000000..db46b8a Binary files /dev/null and b/Handler/Project/Resources/icons8-smart-lock-40.png differ diff --git a/Handler/Project/Resources/icons8-socket-40.png b/Handler/Project/Resources/icons8-socket-40.png new file mode 100644 index 0000000..4bb1dea Binary files /dev/null and b/Handler/Project/Resources/icons8-socket-40.png differ diff --git a/Handler/Project/Resources/icons8-stepper-motor-40.png b/Handler/Project/Resources/icons8-stepper-motor-40.png new file mode 100644 index 0000000..4f9cdaa Binary files /dev/null and b/Handler/Project/Resources/icons8-stepper-motor-40.png differ diff --git a/Handler/Project/Resources/icons8-tornado-40.png b/Handler/Project/Resources/icons8-tornado-40.png new file mode 100644 index 0000000..a4c655c Binary files /dev/null and b/Handler/Project/Resources/icons8-tornado-40.png differ diff --git a/Handler/Project/Resources/icons8-unavailable-40.png b/Handler/Project/Resources/icons8-unavailable-40.png new file mode 100644 index 0000000..ecf2604 Binary files /dev/null and b/Handler/Project/Resources/icons8-unavailable-40.png differ diff --git a/Handler/Project/Resources/icons8-vision-40.png b/Handler/Project/Resources/icons8-vision-40.png new file mode 100644 index 0000000..857a345 Binary files /dev/null and b/Handler/Project/Resources/icons8-vision-40.png differ diff --git a/Handler/Project/Resources/icons8-what-40.png b/Handler/Project/Resources/icons8-what-40.png new file mode 100644 index 0000000..172e9ce Binary files /dev/null and b/Handler/Project/Resources/icons8-what-40.png differ diff --git a/Handler/Project/Resources/icons8-zoom-in-40.png b/Handler/Project/Resources/icons8-zoom-in-40.png new file mode 100644 index 0000000..4d87dbf Binary files /dev/null and b/Handler/Project/Resources/icons8-zoom-in-40.png differ diff --git a/Handler/Project/Resources/icons8-zoom-out-40.png b/Handler/Project/Resources/icons8-zoom-out-40.png new file mode 100644 index 0000000..ae3f5ff Binary files /dev/null and b/Handler/Project/Resources/icons8-zoom-out-40.png differ diff --git a/Handler/Project/Resources/icons8-zoom-to-extents-40.png b/Handler/Project/Resources/icons8-zoom-to-extents-40.png new file mode 100644 index 0000000..a9f5193 Binary files /dev/null and b/Handler/Project/Resources/icons8-zoom-to-extents-40.png differ diff --git a/Handler/Project/RunCode/Device/_Joystick.cs b/Handler/Project/RunCode/Device/_Joystick.cs new file mode 100644 index 0000000..de4a205 --- /dev/null +++ b/Handler/Project/RunCode/Device/_Joystick.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +using arDev; + +namespace Project +{ + public partial class FMain + { + + + } +} diff --git a/Handler/Project/RunCode/Device/_Keyence.cs b/Handler/Project/RunCode/Device/_Keyence.cs new file mode 100644 index 0000000..4efc35f --- /dev/null +++ b/Handler/Project/RunCode/Device/_Keyence.cs @@ -0,0 +1,475 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + public partial class FMain + { + + private void Keyence_BarcodeRecv(object sender, Device.KeyenceBarcode.RecvDataEvent e) + { + var dev = sender as Device.KeyenceBarcode; + if (e.RawData.StartsWith("ERROR")) + { + //로그가 너무 많이 쌓이니 해제한다 + //Pub.log.AddE("Reader RES : " + resp); + } + else if (e.RawData.StartsWith("OK,BLOAD")) + { + var str = e.RawData.Replace("\r", "").Replace("\n", ""); + PUB.log.AddI($"[{dev.Tag}] {str}"); + } + else if (e.RawData.StartsWith("OK,BSAVE")) + { + var str = e.RawData.Replace("\r", "").Replace("\n", ""); + PUB.log.AddI($"[{dev.Tag}] {str}"); + } + else if (e.RawData.StartsWith("OK")) + { + //OK회신 + } + else + { + //값은 받았다 + if (PUB.sm.Step != eSMStep.HOME_FULL && PUB.sm.Step != eSMStep.HOME_QUICK) + { + // PUB.logKeyence.Add($"{resp.Replace("\n", "").Replace("\r", "")}"); + var rawdata = e.RawData; //↔▲▼ + rawdata = rawdata.Replace('\x1D', '↔').Replace('\x1E', '▲').Replace('\x04', '▼'); + + var lines = rawdata.Split(new char[] { '\r' },StringSplitOptions.RemoveEmptyEntries); + foreach(var line in lines) + ParseBarcode(line, dev.Tag.ToString()); + } + else + { + //PUB.logKeyence.Add($"Code Ignore by Home Process({resp.Replace("\n", "").Replace("\r", "")})"); + } + } + } + + bool imageprocess = false; + private void Keyence_ImageRecv(object sender, Device.KeyenceBarcode.RecvImageEvent e) + { + + var dev = sender as Device.KeyenceBarcode; + System.Windows.Forms.PictureBox keyenceview; + if (dev.Tag == "R") keyenceview = keyenceviewR; + else keyenceview = keyenceviewF; + + if (imageprocess == false) + { + imageprocess = true; + + if (PUB.sm.Step >= eSMStep.IDLE && this.IsDisposed == false && this.Disposing == false) + { + + //var oimage = this.pictureBox1.Image; + //this.pictureBox1.Image = e.Image; + //if (oimage != null) oimage.Dispose(); + + if (keyenceview.Image == null) + { + //var newbitmap = new Bitmap(e.Image.Width,e.Image.Height, e.Image.PixelFormat); + var old = keyenceview.Image; + //var newbitmap = PUB.keyence.CreateBitmap(e.Image.Width, e.Image.Height); + //PUB.keyence.UpdateBitmap((Bitmap)e.Image, newbitmap); + keyenceview.Image = e.Image; + if (old != null) old.Dispose(); + PUB.log.AddAT("First image received"); + } + else + { + //내용ㅁㄴ업데이트하자 + var preimage = keyenceview.Image as Bitmap; + keyenceview.Image = e.Image; + if (preimage != null) preimage.Dispose(); + //PUB.keyence.UpdateBitmap((Bitmap)e.Image, preimage); + //this.pictureBox2.Invalidate(); + } + + + } + + if (this.IsDisposed) + { + dev.Dispose(); + } + + imageprocess = false; + } + } + + double GetAngle(Point pt1, Point pt2) + { + var val = Math.Asin((pt2.Y - pt1.Y) / Math.Sqrt(Math.Pow(pt2.X - pt1.X, 2.0) + Math.Pow(pt2.Y - pt1.Y, 2.0))); + + + double retval = 0.0; + if ((pt2.X - pt1.X) >= 0 && (pt2.Y - pt1.Y) >= 0) + retval = val; + else if ((pt2.X - pt1.X) < 0 && (pt2.Y - pt1.Y) >= 0) + retval = Math.PI - val; + else if ((pt2.X - pt1.X) < 0 && (pt2.Y - pt1.Y) < 0) + retval = Math.PI - val; + else if ((pt2.X - pt1.X) >= 0 && (pt2.Y - pt1.Y) < 0) + retval = Math.PI * 2 + val; + + return retval; + } + + private string KeyenceBarcodeDataF = string.Empty; + private string KeyenceBarcodeDataR = string.Empty; + + + /// + /// 키엔스로부터 받은 데이터를 분석한다. + /// + /// + /// + void ParseBarcode(string response, string Source) + { + + + + //220901 - 특문있었ㅇ츰 + var r1 = (char)0x1D; + var r2 = (char)0x1E; + var r3 = (char)0x04; + var r4 = (char)0x00; + response = response.Replace(r1.ToString(), ""); + response = response.Replace(r2.ToString(), ""); + response = response.Replace(r3.ToString(), ""); + response = response.Replace(r4.ToString(), ""); + response = response.Replace("\r", ""); + response = response.Replace("\n", ""); + response = response.Replace("\0", ""); + response = response.RemoveNoneASCII().Trim(); + + ///101409576:522/1171:427/1143:429/1134:524/1155:475/1151\r + var frames = response.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); + var itemC = PUB.Result.ItemDataC; + + //키엔스바코드패턴검사 + var Pattern = @"^(\d+):(\w+.*):(\d+/\d+):(\d+/\d+):(\d+/\d+):(\d+/\d+):(\d+/\d+)"; + Pattern = @"^(\d+):(.*):(\d+/\d+):(\d+/\d+):(\d+/\d+):(\d+/\d+):(\d+/\d+)"; + var RegX = new System.Text.RegularExpressions.Regex(Pattern); + foreach (var resp in frames) + { + var bcddata = resp.Trim().Split(','); + if (resp.Equals("0:ERROR")) + { + PUB.log.AddE($"[{Source}] {resp}"); + continue; + } + else if (bcddata.Length > 2 && bcddata[1] == "BLOAD") + { + if (bcddata[0] == "ER") + { + PUB.log.AddE($"[{Source}]Bacode Memory Read Error({resp})"); + } + else + { + PUB.log.AddI($"[{Source}]Bacode Memory Read Complete({resp})"); + } + continue; + } + else if (bcddata.Length > 2 && bcddata[1] == "BSAVE") + { + if (bcddata[0] == "ER") + { + PUB.log.AddE($"[{Source}]Bacode Memory Read Error({resp})"); + } + else + { + PUB.log.AddI($"[{Source}]Bacode Memory Read Complete({resp})"); + } + continue; + } + else if (RegX.IsMatch(resp.Trim()) == false) + { + //에러처리 221018 + if (resp.StartsWith("0:ERROR")) continue; + + PUB.log.AddE($"***Barcode({Source}) response data error value (please check Keyence transmission format) " + resp); + listView21.SetText(9, 3, "ERR");//.setTitle(8, 1, "ERR"); + continue; + } + + if (AR.VAR.BOOL[eVarBool.JOB_PickON_Retry]) //221110 + { + if (PUB.sm.Step == eSMStep.RUN) + PUB.log.AddAT($"Picker({Source}) is retrying, ignoring barcode:{resp}"); + continue; + } + + var MatchList = RegX.Matches(resp.Trim()); + var buf = MatchList[0].Groups; + + var angle = 0; + var sym = buf[1].Value; //symbol + var vData = buf[2].Value.Trim(); //data + + if (Source == "R") KeyenceBarcodeDataR = vData; //rear + else KeyenceBarcodeDataF = vData; //front + + //바코드 무시조건 확인 + //if (PUB.Result.BCDIgnorePattern != null) + //{ + // Boolean ignore = false; + // foreach (var ignoreitem in PUB.Result.BCDIgnorePattern) + // { + // if (ignoreitem.Pattern.isEmpty()) continue; + // RegX = new System.Text.RegularExpressions.Regex(ignoreitem.Pattern); + // if (RegX.IsMatch(vData)) + // { + // var igmsg = "무시바코드 Patter: " + ignoreitem.Pattern + ",값=" + vData; + // ignore = true; + // break; + // } + // } + // if (ignore) continue; + //} + + var vV1 = buf[3].Value.Split('/'); + var vV2 = buf[4].Value.Split('/'); + var vV3 = buf[5].Value.Split('/'); + var vV4 = buf[6].Value.Split('/'); + var vCP = buf[7].Value.Split('/'); + + var vertex = new Point[4]; + vertex[0] = new Point(int.Parse(vV1[0]), int.Parse(vV1[1])); + vertex[1] = new Point(int.Parse(vV2[0]), int.Parse(vV2[1])); + vertex[2] = new Point(int.Parse(vV3[0]), int.Parse(vV3[1])); + vertex[3] = new Point(int.Parse(vV4[0]), int.Parse(vV4[1])); + var vertextCP = new Point(int.Parse(vCP[0]), int.Parse(vCP[1])); + + var ReelCP = Point.Empty; + if (itemC.VisionData.ReelSize == eCartSize.Inch13) + ReelCP = AR.SETTING.Data.CenterPosition13; + else + ReelCP = AR.SETTING.Data.CenterPosition7; + + //각도를 이곳에서 처리함 + angle = (int)(GetAngle(vertex[0], vertex[1]) * 180.0 / Math.PI); + + //var atkstdbcd = new StdLabelPrint.CAmkorSTDBarcode(vData); + //if (atkstdbcd.DisposalCode) //사용하지않는 103코드라면 아에 처리안함 + //{ + // PUB.log.AddE("***폐기된 103 코드형태라 처리하지 않음" + vData); + // continue; + //} + + //특정좌표가 기준점으로부터 몇도 틀어져 있는가? + //math.atan2(PY - CY, PX - CX) + + //회전후좌표계산 + //x = root((px - cx) ^ 2 + (py - cy) ^ 2) * cos@ +cx + //y = root(px ^ 2 + py ^ 2) * sin@ +cy + double theta = 0.0;// Pub.Result.ItemData[1].VisionData.BaseAngle; + if (itemC.VisionData.BaseAngle(out string msg, out Class.KeyenceBarcodeData angbcd)) + { + theta = angbcd.Angle; + } + + var theta_rad = -theta * Math.PI / 180.0; + var PX = (int)(Math.Cos(theta_rad) * (vertextCP.X - ReelCP.X) - Math.Sin(theta_rad) * (vertextCP.Y - ReelCP.Y)) + ReelCP.X; + var PY = (int)(Math.Sin(theta_rad) * (vertextCP.X - ReelCP.X) + Math.Cos(theta_rad) * (vertextCP.Y - ReelCP.Y)) + ReelCP.Y; + + float LabelAngRad = (float)(Math.Atan2(PY - ReelCP.Y, PX - ReelCP.X));// 2; //라벨의 위치값을 찾아서 입력해야한다. + var labelpos = (float)(LabelAngRad * 180.0 / Math.PI); + if (labelpos < 0) labelpos = 360 + labelpos; + + byte lp = 0; + + if (labelpos >= 15 * 22.5 && labelpos <= 360) lp = 6; + else if (labelpos >= 0 && labelpos <= 22.5) lp = 6; + else if (labelpos >= 1 * 22.5 && labelpos <= 3 * 22.5) lp = 3; + else if (labelpos >= 3 * 22.5 && labelpos <= 5 * 22.5) lp = 2; + else if (labelpos >= 5 * 22.5 && labelpos <= 7 * 22.5) lp = 1; + else if (labelpos >= 7 * 22.5 && labelpos <= 9 * 22.5) lp = 4; + else if (labelpos >= 9 * 22.5 && labelpos <= 11 * 22.5) lp = 7; + else if (labelpos >= 11 * 22.5 && labelpos <= 13 * 22.5) lp = 8; + else if (labelpos >= 13 * 22.5 && labelpos <= 15 * 22.5) lp = 9; + else + { + + } + + //중첩된 데이터가 있는가? + lock (itemC.VisionData.barcodelist) + { + //키값에 소스위치도 같이 포함한다 + var valuekey = Source + vData; + var bcdin = itemC.VisionData.barcodelist.ContainsKey(valuekey);//.Where(t => t.Value.CheckIntersect(vertextCP, vData) == true).FirstOrDefault(); + if (bcdin == false) + { + //신규바코드데이터이므로 추가한다. + PUB.logKeyence.Add($"{resp.Replace("\n", "").Replace("\r", "")}"); + var newitem = new Class.KeyenceBarcodeData() + { + AmkorData = new StdLabelPrint.CAmkorSTDBarcode(vData), + CenterPX = vertextCP, + Data = vData, + vertex = vertex, + Angle = angle, + LabelPosition = lp, + barcodeSymbol = sym, + barcodeSource = Source, + }; + + var addok = itemC.VisionData.barcodelist.TryAdd(valuekey, newitem); + if (addok) PUB.log.Add($"[O]BCD RESERV[NEW:{sym}] " + Source + " " + vData); + else PUB.log.AddE($"[X]BCD RESERV[NEW:{sym}] " + Source + " " + vData); + + itemC.VisionData.UpdateBarcodePositionData(); + itemC.VisionData.BarcodeTouched = true; + } + else + { + //기존데이터와 좌표가 겹치면 두고 다르면 업데이트한다 + var predata = itemC.VisionData.barcodelist[valuekey]; + if (predata.CheckIntersect(vertextCP, vData) == false) + { + var newitem = new Class.KeyenceBarcodeData() + { + AmkorData = new StdLabelPrint.CAmkorSTDBarcode(vData), + CenterPX = vertextCP, + Data = vData, + vertex = vertex, + Angle = angle, + LabelPosition = lp, + barcodeSymbol = sym, + barcodeSource = Source, + }; + + //기존정보를 지우고 + PUB.log.Add($"[UPD]BCD RESERV:{sym}] " + Source + " " + vData); + itemC.VisionData.barcodelist[valuekey] = newitem; + itemC.VisionData.UpdateBarcodePositionData(); + itemC.VisionData.BarcodeTouched = true; + } + } + } + + listView21.SetText(9, 3, $"{angle} > {theta}"); + listView21.SetText(10, 3, itemC.VisionData.QRInputRaw.isEmpty() ? $"DETECT" : $"NONE"); + listView21.SetText(13, 2, $"LABEL"); + listView21.SetText(13, 3, $"{labelpos:N1}"); + } + } + + Boolean IsSIDValue(string data) + { + if (data.Length != 9) return false; + decimal a = 0; + if (decimal.TryParse(data, out a) == false) return false; + if (data.StartsWith("10") == false) return false; + return true; + } + Boolean IsDateValue(string date, out string datestr) + { + //821123 과 19821123 의 데이터를 판별한다 + datestr = string.Empty; + date = date.Replace("-", "").Replace("/", ""); + if (date.Length == 6) + { + var vy = date.Substring(0, 2); + var vm = date.Substring(2, 2); + var vd = date.Substring(4, 2); + if (isDigit(vy) == false || isDigit(vm) == false || isDigit(vd) == false) + return false; + if (vy.toInt() < 0 || vy.toInt() > 29) return false; + if (vm.toInt() < 1 || vm.toInt() > 12) return false; + if (vd.toInt() < 1 || vd.toInt() > 21) return false; + datestr = "20" + vy + vm + vd; + return true; + + } + else if (date.Length == 8) + { + var vy = date.Substring(0, 4); + var vm = date.Substring(4, 2); + var vd = date.Substring(6, 2); + if (isDigit(vy) == false || isDigit(vm) == false || isDigit(vd) == false) + return false; + if (vy.toInt() < 2000 || vy.toInt() > 2900) return false; + if (vm.toInt() < 1 || vm.toInt() > 12) return false; + if (vd.toInt() < 1 || vd.toInt() > 31) return false; + datestr = vy + vm + vd; + return true; + } + else return false; + } + Boolean isDigit(string v) + { + int a; + return int.TryParse(v, out a); + } + + + string cmd = string.Empty; + DateTime LastTrigOnTime = DateTime.Now; + Boolean bTrgOn = false; + //private void Keyence_Trigger(bool bOn) + //{ + + // if (PUB.flag.get(eVarBool.KEYENCE_TRIGGER) == bOn) return; + + // if (bOn) + // cmd = "LON"; + // else + // cmd = "LOFF"; + + // if (bOn) LastTrigOnTime = DateTime.Now; + + // string resp = reader.ExecCommand(cmd); + // bTrgOn = bOn; + // PUB.logKeyence.Add("BARCODE", $"트리거 전송({cmd})"); + // _isCrevisACQ[1] = bOn; + + // //트리거 + // PUB.flag.set(eVarBool.KEYENCE_TRIGGER, bOn, "JOB"); + //} + private void SaveImage(string filename) + { + var fi = new System.IO.FileInfo(filename); + var ext = fi.Extension; + var nameonly = fi.FullName.Replace(fi.Extension, ""); + var fiF = new System.IO.FileInfo(nameonly + "F" + ext); + var fiR = new System.IO.FileInfo(nameonly + "F" + ext); + + + if (PUB.keyenceF != null) + { + var img = this.keyenceviewF.Image; + if (img == null) return; + using (var newimg = new Bitmap(img.Width, img.Height, img.PixelFormat)) + { + PUB.keyenceR.UpdateBitmap((Bitmap)img, newimg); + if (fiF.Directory.Exists == false) fiF.Directory.Create(); + if (fiF.Exists) fiF.Delete(); + newimg.Save(fiF.FullName); + } + } + + if (PUB.keyenceR != null) + { + var img = this.keyenceviewR.Image; + if (img == null) return; + using (var newimg = new Bitmap(img.Width, img.Height, img.PixelFormat)) + { + PUB.keyenceR.UpdateBitmap((Bitmap)img, newimg); + if (fiR.Directory.Exists == false) fiR.Directory.Create(); + if (fiR.Exists) fiR.Delete(); + newimg.Save(fiR.FullName); + } + } + } + } +} diff --git a/Handler/Project/RunCode/Device/_Keyence_Rule_ReturnReel.cs b/Handler/Project/RunCode/Device/_Keyence_Rule_ReturnReel.cs new file mode 100644 index 0000000..3b5f982 --- /dev/null +++ b/Handler/Project/RunCode/Device/_Keyence_Rule_ReturnReel.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AR; + +namespace Project +{ + public partial class FMain + { + ///// + ///// RQ바코드값 사용 여부 + ///// + ///// + //Boolean Process_ReturnReel(string vData) + //{ + // //120326 - return 수량 관련 (오토에서만 사용한다) + // var qrbuf = vData.Split(';'); + // if (vData.EndsWith(";;;") && qrbuf.Length > 4 && VAR.BOOL[eVarBool.Opt_UserQtyRQ]== false) + // { + // var qrsid = qrbuf[0].Trim(); + // var qrlot = qrbuf[1].Trim(); + // var qrqty = qrbuf[2].Trim(); + // if (double.TryParse(qrqty, out double qtynum) && qrsid.Length == 9 && qrsid.StartsWith("10")) + // { + // //수량이 맞고 sid 가 101로 들어있는 경우에만 처리한다 + // PUB.log.Add("리턴릴 임시 바코드로 확인되어 데이터를 사용합니다 값:" + vData); + // PUB.log.Add("SID값 변경함 #2 " + PUB.Result.ItemDataC.VisionData.SID + "=>" + qrsid); + + // if (PUB.Result.ItemDataC.VisionData.QTY != qrqty) + // { + // PUB.AddSystemLog(AppContext.BaseDirectory, "_KEYENCE", $"리턴릴세미형태에서 QTY값을 적용 함({qrqty})"); + // } + // PUB.Result.ItemDataC.VisionData.QTY = qrqty; + // PUB.Result.ItemDataC.VisionData.SID = qrsid; + // PUB.Result.ItemDataC.VisionData.VLOT = qrlot; + // } + // } + + + // //리턴릴수량추가확인(수동일때에만 사용) + // if (vData.StartsWith("RQ")) + // { + // //리턴릴 바코드는 무조건 적용한다 + // var rqqtystr = vData.Substring(2); + // if (int.TryParse(rqqtystr, out int rqqty)) + // { + // //시스템로기 + // if (PUB.Result.ItemDataC.VisionData.QTY != rqqtystr || PUB.Result.ItemDataC.VisionData.QTYRQ == false) + // { + // PUB.AddSystemLog(AppContext.BaseDirectory, "_KEYENCE", $"리턴릴 QTY값 적용({rqqtystr})"); + + // //수량 + // PUB.Result.ItemDataC.VisionData.QTYRQ = true; + // PUB.Result.ItemDataC.VisionData.QTY = rqqtystr; + // PUB.log.Add("리턴릴 바코드값=" + vData + "을 적용합니다"); + // } + // } + // else + // { + // PUB.log.AddE("리턴릴 바코드값=" + vData + "을 적용 실패"); + // } + // return true; + // } + + // return false; + //} + } +} diff --git a/Handler/Project/RunCode/Display/DisplayTextHandler.cs b/Handler/Project/RunCode/Display/DisplayTextHandler.cs new file mode 100644 index 0000000..a426dd4 --- /dev/null +++ b/Handler/Project/RunCode/Display/DisplayTextHandler.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class FMain + { + delegate void ShowLotTextHandler(string value); + + delegate void UpdateDMTextHandler(string value1); + + //void UpdateResultText(string value1) + //{ + // if (this.lbResult.InvokeRequired) + // { + // lbResult.BeginInvoke(new UpdateDMTextHandler(UpdateResultText), new object[] { value1 }); + // } + // else + // { + // lbResult.Text = value1; + // } + //} + + delegate void UpdateLabelTextHandler(Control ctl, string value); + void UpdateLabelText(Control ctl, string value) + { + if (ctl.InvokeRequired) + { + ctl.BeginInvoke(new UpdateLabelTextHandler(UpdateLabelText), new object[] { ctl, value }); + } + else + { + ctl.Text = value; + } + } + } +} diff --git a/Handler/Project/RunCode/Display/_Interval_1min.cs b/Handler/Project/RunCode/Display/_Interval_1min.cs new file mode 100644 index 0000000..cb8437a --- /dev/null +++ b/Handler/Project/RunCode/Display/_Interval_1min.cs @@ -0,0 +1,63 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class FMain + { + + void _Display_Interval_1min() + { + //리셋카운트 + AutoResetCount(); + PUB.CheckFreeSpace(); + } + + /// + /// 환경설정에따른 카운트를 리셋처리한다. 171128 + /// + void AutoResetCount() + { + //수량누적시 자동으로 소거하게 되었다 + //if (COMM.SETTING.Data.datetime_Check_1 && COMM.SETTING.Data.datetime_Reset_1 != "") //오전 + //{ + // try + // { + // DateTime SetTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + COMM.SETTING.Data.datetime_Reset_1 + ":00"); + // DateTime LastClearTime = SETTING.Counter.; + + // //현재 시간이 클리어대상 시간보다 크고, 마지막으로 클리어한 시간이 지정시간보다 작아야함 + // if (DateTime.Now > SetTime && LastClearTime < SetTime) + // { + // Pub.log.AddI("Count Reset #1"); + // SETTING.Counter.ClearDay(); + // } + // } + // catch { } + //} + + //if (COMM.SETTING.Data.datetime_Check_2 && COMM.SETTING.Data.datetime_Reset_2 != "") //오후 + //{ + // try + // { + // DateTime SetTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + COMM.SETTING.Data.datetime_Reset_2 + ":00"); + // DateTime LastClearTime = SETTING.Counter.CountReset; + + // //현재 시간이 클리어대상 시간보다 크고, 마지막으로 클리어한 시간이 지정시간보다 작아야함 + // if (DateTime.Now > SetTime && LastClearTime < SetTime) + // { + // Pub.log.AddI("Count Reset #2"); + // SETTING.Counter.ClearDay(); + // } + // } + // catch { } + //} + } + + } +} diff --git a/Handler/Project/RunCode/Display/_Interval_250ms.cs b/Handler/Project/RunCode/Display/_Interval_250ms.cs new file mode 100644 index 0000000..f167f9b --- /dev/null +++ b/Handler/Project/RunCode/Display/_Interval_250ms.cs @@ -0,0 +1,629 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; +namespace Project +{ + public partial class FMain + { + + + void _Display_Interval_250ms() + { + //타워램프조정 + //if (COMM.SETTING.Data.Disable_TowerLamp == false) Update_TowerLamp(); + TowerLamp.Update(PUB.sm.Step); + + //컨베이어가동시간을 추적한다 230926 + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + ////왼쪽컨베이어에 아이템이 존재하는 경우에만 누적 + //if (DIO.GetIOOutput(eDOName.LEFT_CONV) && VAR.BOOL[eVarBool.LEFT_ITEM_PICKOFF]) + //{ + // if (VAR.TIME[eVarBool.LEFT_ITEM_PICKOFF].Year == 1982) + // VAR.TIME[eVarBool.LEFT_ITEM_PICKOFF] = DateTime.Now; //시간초기화 + // else + // { + // var ts = DateTime.Now - VAR.TIME[eVarBool.LEFT_ITEM_PICKOFF]; + // VAR.DBL[eVarDBL.LEFT_ITEM_PICKOFF] += ts.TotalSeconds; //경과시간누적 + // VAR.TIME[eVarBool.LEFT_ITEM_PICKOFF] = DateTime.Now; //시간초기화 + // } + //} + + ////오른쪽컨베이어에 아이템이 존재하는 경우에만 누적 + //if (DIO.GetIOOutput(eDOName.RIGHT_CONV) && VAR.BOOL[eVarBool.RIGT_ITEM_PICKOFF] ) + //{ + // if(VAR.TIME[eVarBool.RIGT_ITEM_PICKOFF].Year == 1982) + // { + // VAR.TIME[eVarBool.RIGT_ITEM_PICKOFF] = DateTime.Now; //시간초기화 + // } + // else + // { + // var ts = DateTime.Now - VAR.TIME[eVarBool.RIGT_ITEM_PICKOFF]; + // VAR.DBL[eVarDBL.RIGT_ITEM_PICKOFF] += ts.TotalSeconds; //경과시간누적 + // VAR.TIME[eVarBool.RIGT_ITEM_PICKOFF] = DateTime.Now; //시간초기화 + // } + + //} + + var t1 = VAR.I32[eVarInt32.LEFT_ITEM_COUNT]; + var t2 = VAR.I32[eVarInt32.RIGT_ITEM_COUNT]; + groupBox2.Text = $"Barcode({t1:N1}/{t2:N1})"; + } + else + { + groupBox2.Text = "Barcode"; + } + + if((VAR.BOOL?.Get(eVarBool.Use_Conveyor) ?? false) == true) + { + btAutoReelOut.BackColor = PUB.Result.AutoReelOut ? Color.Lime : SystemColors.Control; + btAutoReelOut.Visible = true; + } + else + { + btAutoReelOut.Visible = false; + } + + + groupBox1.Text = $"Equipment Operation({PUB.sm.Loop_ms:N0}ms)"; + //릴사이즈가 맞지 않으면 깜박인다. + if (DIO.getCartSize(1) != eCartSize.None) + { + if (VAR.BOOL[eVarBool.Use_Conveyor] == false && DIO.getCartSize(1) != DIO.getCartSize(0)) + { + if (listView21.GetStyle(0, 1).BackColor != Color.Red) + { + listView21.GetStyle(0, 1).BackColor = Color.Red; + } + else + { + listView21.GetStyle(0, 1).BackColor = Color.FromArgb(32, 32, 32); + } + } + else + { + listView21.GetStyle(0, 1).BackColor = Color.FromArgb(32, 32, 32); + } + + if (VAR.BOOL[eVarBool.Use_Conveyor] == false && DIO.getCartSize(1) != DIO.getCartSize(2)) + { + if (listView21.GetStyle(0, 5).BackColor != Color.Red) + { + listView21.GetStyle(0, 5).BackColor = Color.Red; + } + else + { + listView21.GetStyle(0, 5).BackColor = Color.FromArgb(32, 32, 32); + } + } + else + { + listView21.GetStyle(0, 5).BackColor = Color.FromArgb(32, 32, 32); + } + } + else + { + //모두 동일하게 흑색한다 + //lbSize0.BackColor = Color.FromArgb(32, 32, 32); + //lbSize1.BackColor = Color.FromArgb(32, 32, 32); + //lbSize2.BackColor = Color.FromArgb(32, 32, 32); + + listView21.GetStyle(0, 1).BackColor = Color.FromArgb(32, 32, 32); + listView21.GetStyle(0, 3).BackColor = Color.FromArgb(32, 32, 32); + listView21.GetStyle(0, 5).BackColor = Color.FromArgb(32, 32, 32); + + listView21.GetStyle(0, 1).ForeColor = Color.White; + listView21.GetStyle(0, 3).ForeColor = Color.White; + listView21.GetStyle(0, 5).ForeColor = Color.White; + + } + + + //락정보 + var l0 = DIO.GetIOOutput(eDOName.PORTL_MAGNET); + var l1 = DIO.GetIOOutput(eDOName.PORTC_MAGNET); + var l2 = DIO.GetIOOutput(eDOName.PORTR_MAGNET); + + lbLock0.Text = l0 ? "Cart Exchange" : "No Cart"; + lbLock1.Text = l1 ? "Cart Exchange" : "No Cart"; + lbLock2.Text = l2 ? "Cart Exchange" : "No Cart"; + + var sbVisTitle0 = listView21.GetCell(0, 1); + var sbVisTitle2 = listView21.GetCell(0, 5); + + if (PUB.wsL == null || PUB.wsL.Connected == false) + { + sbVisTitle0.ForeColor = Color.Red; + } + else + { + //데이터수신시간에 따른 색상 + var tswecv = DateTime.Now - VAR.TIME[eVarTime.lastRecvWSL]; + if (tswecv.TotalSeconds > 5) + { + sbVisTitle0.ForeColor = Color.HotPink; + } + else + { + if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_L)) + sbVisTitle0.ForeColor = Color.Lime; + else + sbVisTitle0.ForeColor = Color.Magenta; + } + + } + + // + if (PUB.wsR == null || PUB.wsR.Connected == false) + { + sbVisTitle2.ForeColor = Color.Red; + } + else + { + var tswecv = DateTime.Now - VAR.TIME[eVarTime.lastRecvWSR]; + if (tswecv.TotalSeconds > 5) + { + sbVisTitle2.ForeColor = Color.HotPink; + } + else + { + if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_R)) + sbVisTitle2.ForeColor = Color.Lime; + else + sbVisTitle2.ForeColor = Color.Magenta; + } + + } + + //arLabel18.Text = camliveBusy ? "카메라 (라이브뷰)" : "카메라"; + + btStart.Enabled = PUB.flag.get(eVarBool.FG_MOVE_PICKER) == false; + btStop.Enabled = PUB.flag.get(eVarBool.FG_MOVE_PICKER) == false; + btSetting.Enabled = PUB.flag.get(eVarBool.FG_MOVE_PICKER) == false; + //btPickerMove.Visible = (Pub.mot.IsInit && PUB.mot.HasHomeSetOff == true); //피커의 수동 이동 버튼표시여부 + + + var hwcol = 0; + if (PUB.keyenceF != null) + { + HWState.setTitle(1, hwcol, (PUB.keyenceF.IsConnect ? (PUB.keyenceF.IsTriggerOn ? "TRIG" : "ON") : "OFF")); + + if (PUB.keyenceF.IsConnect) + { + if (PUB.keyenceF.IsTriggerOn) + { + HWState.setValue(1, hwcol, 2); + } + else + { + HWState.setValue(1, hwcol, 1); + } + } + else + { + HWState.setValue(1, hwcol, 3); + } + } + else + { + HWState.setTitle(1, hwcol, "SET"); + HWState.setValue(1, hwcol, 0); + } + hwcol++; + + if (PUB.keyenceR != null) + { + HWState.setTitle(1, hwcol, (PUB.keyenceR.IsConnect ? (PUB.keyenceR.IsTriggerOn ? "TRIG" : "ON") : "OFF")); + + if (PUB.keyenceR.IsConnect) + { + if (PUB.keyenceR.IsTriggerOn) + { + HWState.setValue(1, hwcol, 2); + } + else + { + HWState.setValue(1, hwcol, 1); + } + } + else + { + HWState.setValue(1, hwcol, 3); + } + } + else + { + HWState.setTitle(1, hwcol, "SET"); + HWState.setValue(1, hwcol, 0); + } + hwcol++; + + + if (PUB.wsL != null) + { + HWState.setTitle(1, hwcol, (PUB.wsL.Connected ? "ON" : "OFF")); + HWState.setValue(1, hwcol++, (ushort)(PUB.wsL.Connected ? 1 : 3)); + } + + + if (PUB.wsR != null) + { + HWState.setTitle(1, hwcol, (PUB.wsR.Connected ? "ON" : "OFF")); + HWState.setValue(1, hwcol++, (ushort)(PUB.wsR.Connected ? 1 : 3)); + } + + + HWState.setTitle(1, hwcol, (PUB.BarcodeFix.IsOpen() ? AR.SETTING.Data.Barcode_Port : "OFF")); + HWState.setValue(1, hwcol++, (ushort)(PUB.BarcodeFix.IsOpen() ? 1 : 3)); + + if (PUB.PrinterL != null) + { + HWState.setTitle(1, hwcol, (PUB.PrinterL.IsOpen ? AR.SETTING.Data.PrintL_Port : "OFF")); + HWState.setValue(1, hwcol++, (ushort)(PUB.PrinterL.IsOpen ? 1 : 3)); + } + else HWState.setTitle(1, hwcol++, "SET"); + + if (PUB.PrinterR != null) + { + + HWState.setTitle(1, hwcol, (PUB.PrinterR.IsOpen ? AR.SETTING.Data.PrintR_Port : "OFF")); + HWState.setValue(1, hwcol++, (ushort)(PUB.PrinterR.IsOpen ? 1 : 3)); + } + else HWState.setTitle(1, hwcol++, "SET"); + + if (PUB.plc != null) + { + HWState.setTitle(1, hwcol, (PUB.plc.Init ? AR.SETTING.Data.swplc_name : "OFF")); + HWState.setValue(1, hwcol++, (ushort)(PUB.plc.Init ? 2 : 1)); + } + else HWState.setTitle(1, hwcol++, "SET"); + + HWState.Invalidate(); + + IOState.setTitle(0, 0, $"{PUB.sm.Step}"); //this.sbStep.Text = Pub.sm.Step.ToString(); + IOState.setTitle(0, 9, $"MC({PUB.MCCode}/{AR.SETTING.Data.McName})"); + IOState.setTitle(1, 0, $"{PUB.sm.Loop_ms.ToString("N1")}ms");// / " + intlockcnt.ToString();io + + IOState.setValue(0, 1, (ushort)(DIO.isSaftyDoorF(2, false) ? 0 : 2)); + IOState.setValue(0, 2, (ushort)(DIO.isSaftyDoorF(1, false) ? 0 : 2)); + IOState.setValue(0, 3, (ushort)(DIO.isSaftyDoorF(0, false) ? 0 : 2)); + + IOState.setValue(1, 1, (ushort)(DIO.GetIOOutput(eDOName.BUZZER) ? 2 : 0)); + IOState.setValue(1, 2, (ushort)(DIO.GetIOOutput(eDOName.ROOMLIGHT) ? 1 : 0)); + IOState.setValue(1, 3, (ushort)(DIO.GetIOInput(eDIName.AIR_DETECT) ? 1 : 0)); + + IOState.setValue(0, 4, (ushort)(DIO.GetIOInput(eDIName.PORTL_DET_UP) ? 1 : 0)); + IOState.setValue(0, 5, (ushort)(DIO.GetIOInput(eDIName.PORTC_DET_UP) ? 1 : 0)); + IOState.setValue(0, 6, (ushort)(DIO.GetIOInput(eDIName.PORTR_DET_UP) ? 1 : 0)); + + IOState.setValue(1, 4, (ushort)(DIO.GetIOInput(eDIName.PORTL_LIM_UP) ? 2 : 0)); + IOState.setValue(1, 5, (ushort)(DIO.GetIOInput(eDIName.PORTC_LIM_UP) ? 2 : 0)); + IOState.setValue(1, 6, (ushort)(DIO.GetIOInput(eDIName.PORTR_LIM_UP) ? 2 : 0)); + + IOState.setValue(1, 9, (ushort)(PUB.flag.get(eVarBool.FG_KEYENCE_TRIGGER) ? 2 : 0)); + + IOState.setValue(0, 10, (ushort)(PUB.flag.get(eVarBool.VS_DETECT_REEL_L) ? 2 : 0)); //reel-left detect + IOState.setValue(0, 11, (ushort)(PUB.flag.get(eVarBool.VS_DETECT_REEL_R) ? 2 : 0)); //reel-right detect + + IOState.setValue(1, 10, (ushort)(PUB.flag.get(eVarBool.VS_DETECT_CONV_L) ? 2 : 0)); //conv-left detect + IOState.setValue(1, 11, (ushort)(PUB.flag.get(eVarBool.VS_DETECT_CONV_R) ? 2 : 0)); //conv-right detect + + IOState.Invalidate(); + + if (PUB.Result.isSetvModel) + { + var modelVision = PUB.Result.vModel; + var modelName = modelVision.Title; + var modelNameM = string.Empty; + + if (PUB.Result.isSetmModel) modelNameM = PUB.Result.mModel.Title; + if (modelNameM.ToUpper().StartsWith("CONV")) + { + arLabel1.Text = "CONVEYOR ON"; + arLabel1.ForeColor = Color.Blue; + } + else + { + arLabel1.Text = "CONVEYOR OFF"; + arLabel1.ForeColor = Color.Red; + } + + + + + //시스템바이패스 + if (SETTING.Data.SystemBypass) + { + lbModelName.Text = $"SYSTEM BYPASS"; + lbModelName.ForeColor = Color.White; + lbModelName.BackColor = Color.Blue; + lbModelName.BackColor2 = Color.DeepSkyBlue; + lbModelName.ShadowColor = Color.DimGray; + } + else + { + //바이패스는 색깔을 달리한다. + if (modelName.ToUpper().Contains("BYPASS")) + { + lbModelName.Text = $"{modelName}"; + lbModelName.ForeColor = Color.DarkGreen; + lbModelName.BackColor = Color.Gold; + lbModelName.BackColor2 = Color.Yellow; + lbModelName.ShadowColor = Color.WhiteSmoke; + } + else if (modelName.ToUpper().Contains("CONVERT")) + { + lbModelName.Text = $"{modelName}"; + lbModelName.ForeColor = Color.DarkBlue; + lbModelName.BackColor = Color.Gold; + lbModelName.BackColor2 = Color.Yellow; + lbModelName.ShadowColor = Color.WhiteSmoke; + } + else + { + var custname = VAR.STR[eVarString.JOB_CUSTOMER_CODE]; + if (custname.isEmpty() == false) + lbModelName.Text = $"[{custname}] {modelName}"; + else + lbModelName.Text = $"{modelName}"; + lbModelName.ForeColor = Color.Black; + lbModelName.BackColor = Color.White; + lbModelName.BackColor2 = Color.WhiteSmoke; + lbModelName.ShadowColor = Color.DimGray; + } + } + + } + else + { + lbModelName.Text = "Please select a model"; + lbModelName.ForeColor = Color.Blue; + lbModelName.BackColor = Color.Tomato; + lbModelName.BackColor2 = Color.Red; + lbModelName.ShadowColor = Color.DimGray; + } + arLabel1.BackColor = lbModelName.BackColor; + arLabel1.BackColor2 = lbModelName.BackColor2; + + + try + { + //바코드정보표시 + var row = 1; + var col = 1; + Class.VisionData visdata = PUB.Result.ItemDataL.VisionData; + listView21.SetText(row++, col, visdata.RID); + listView21.SetText(row++, col, visdata.SID); + listView21.SetText(row++, col, visdata.QTY); + listView21.SetText(row++, col, visdata.VNAME); + listView21.SetText(row++, col, visdata.VLOT); + listView21.SetText(row++, col, visdata.MFGDATE); + listView21.SetText(row++, col, visdata.PARTNO); + listView21.SetText(row++, col, visdata.ReelSize == eCartSize.None ? "--" : visdata.ReelSize.ToString()); + + + if (PUB.flag.get(eVarBool.FG_ENABLE_LEFT) == false) + { + sbVisTitle0.Text = "DISABLE"; + sbVisTitle0.BackColor = Color.Orange; + sbVisTitle0.BackColor2 = Color.Tomato; + } + else + { + listView21.SetText(0, col, DIO.getCartSize(0) == eCartSize.None ? "?" : DIO.getCartSize(0).ToString()); + } + + if (VAR.BOOL[eVarBool.Use_Conveyor]) listView21.GetStyle(0, 1).ForeColor = Color.White; + else + listView21.GetStyle(0, 1).ForeColor = AR.SETTING.Data.Detect_CartL ? Color.White : Color.Red; + + if (VAR.BOOL[eVarBool.Use_Conveyor]) listView21.GetStyle(0, 5).ForeColor = Color.White; + else + listView21.GetStyle(0, 5).ForeColor = AR.SETTING.Data.Detect_CartR ? Color.White : Color.Red; + //lbSize0.ForeColor = COMM.SETTING.Data.Detect_CartL ? Color.White : Color.Red; + + listView21.SetText(row, col, visdata.RID2); + if (visdata.RID2.isEmpty() == false && visdata.RID.Equals(visdata.RID2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col, 1); + + listView21.SetText(row, col, visdata.SID2); + if (visdata.SID2.isEmpty() == false && visdata.SID.Equals(visdata.SID2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + if (visdata.QTY2.Equals("0")) listView21.SetText(row, 1, string.Empty); + else listView21.SetText(row, col, visdata.QTY2); + if (visdata.QTY2.isEmpty() == false && visdata.QTY2.Equals("0") == false && visdata.QTY.Equals(visdata.QTY2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + + listView21.SetText(row, col, visdata.VNAME2); + if (visdata.VNAME2.isEmpty() == false && visdata.VNAME.Equals(visdata.VNAME2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.VLOT2); + if (visdata.VLOT2.isEmpty() == false && visdata.VLOT.Equals(visdata.VLOT2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.MFGDATE2); + if (visdata.MFGDATE2.isEmpty() == false && visdata.MFGDATE.Equals(visdata.MFGDATE2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.PARTNO2); + if (visdata.PARTNO2.isEmpty() == false && visdata.PARTNO.Equals(visdata.PARTNO2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + } + catch { } + + try + { + var visdata = PUB.Result.ItemDataC.VisionData; + Color textColor = visdata.Confirm ? Color.Lime : Color.WhiteSmoke; + + var row = 1; + var col = 3; + this.listView21.SetText(row, col, visdata.RID); + if (visdata.RID_Trust) + { + if (visdata.RIDNew) //new reelid mode + { + listView21.SetColor(row++, col - 1, 3); + } + else + { + listView21.SetColor(row++, col - 1, 6); + } + } + else + { + listView21.SetColor(row++, col - 1, 0); + } + + if (visdata.SID0.isEmpty()) + listView21.SetText(row, col, visdata.SID); + else + listView21.SetText(row, col, visdata.SID + "\n<< " + visdata.SID0); + + listView21.SetColor(row++, col - 1, (ushort)(visdata.SID_Trust ? 6 : 0)); + + if (PUB.Result.ItemDataC.VisionData.QTYRQ) + { + listView21.SetText(row, col, "RQ:" + visdata.QTY); + listView21.SetColor(row++, col - 1, 6); + } + else + { + if (visdata.QTY.Equals("0")) listView21.SetText(row, col, string.Empty); + else listView21.SetText(row, col, visdata.QTY); + listView21.SetColor(row++, col - 1, (ushort)(visdata.QTY_Trust ? 6 : 0)); + } + + listView21.SetText(row, col, visdata.VNAME); listView21.SetColor(row++, col - 1, (ushort)(visdata.VNAME_Trust ? 6 : 0)); + listView21.SetText(row, col, visdata.VLOT); listView21.SetColor(row++, col - 1, (ushort)(visdata.VLOT_Trust ? 6 : 0)); + listView21.SetText(row, col, visdata.MFGDATE); listView21.SetColor(row++, col - 1, (ushort)(visdata.MFGDATE_Trust ? 6 : 0)); + listView21.SetText(row, col, visdata.PARTNO); listView21.SetColor(row++, col - 1, (ushort)(visdata.PARTNO_Trust ? 6 : 0)); + + //lbSize1.Text = DIO.getCartSize(1) == eCartSize.None ? "?" : DIO.getCartSize(1).ToString(); + listView21.SetText(0, col, DIO.getCartSize(1) == eCartSize.None ? "?" : DIO.getCartSize(1).ToString()); + listView21.GetStyle(0, col - 1).ForeColor = AR.SETTING.Data.Detect_CartC ? Color.White : Color.Red; + + listView21.SetText(row++, col, visdata.ReelSize == eCartSize.None ? "--" : visdata.ReelSize.ToString()); + + //Degree + row++; //gridView2.setTitle(row++, 1, visdata.PARTNO); + + //QR + row++; //gridView2.setTitle(row++, 1, visdata.PARTNO); + + //바코드수량 + //listView21.SetText(row, col-1, "BACD"); + listView21.SetText(row++, col, $"{visdata.barcodelist.Count}"); + + listView21.SetText(row, col - 1, "REGEX"); + listView21.SetText(row++, col, $"{PUB.Result.BCDPattern.Count}"); + + row++;// + listView21.SetText(row, col - 1, "BATCH"); + listView21.SetText(row++, col, $"{visdata.BATCH}"); + + listView21.SetText(row, col - 1, "MAX"); + listView21.SetText(row++, col, $"{visdata.QTYMAX}"); + + var textcolor = visdata.Confirm ? 7 : 0; + var crow = 1; + listView21.SetColor(crow++, 3, textcolor); + listView21.SetColor(crow++, 3, textcolor); + listView21.SetColor(crow++, 3, textcolor); + listView21.SetColor(crow++, 3, textcolor); + listView21.SetColor(crow++, 3, textcolor); + listView21.SetColor(crow++, 3, textcolor); + listView21.SetColor(crow++, 3, textcolor); + + //arLabel25.ForeColor = textColor; + //listView21.SetColor(2, 1, (visdata.QTYRQ ? 3 : 1)); + } + catch { } + + + try + { + var row = 1; + var col = 5; + Class.VisionData visdata = PUB.Result.ItemDataR.VisionData; + listView21.SetText(row++, col, visdata.RID); + listView21.SetText(row++, col, visdata.SID); + listView21.SetText(row++, col, visdata.QTY); + listView21.SetText(row++, col, visdata.VNAME); + listView21.SetText(row++, col, visdata.VLOT); + listView21.SetText(row++, col, visdata.MFGDATE); + listView21.SetText(row++, col, visdata.PARTNO); + listView21.SetText(row++, col, visdata.ReelSize == eCartSize.None ? "--" : visdata.ReelSize.ToString()); + + + if (PUB.flag.get(eVarBool.FG_ENABLE_RIGHT) == false) + { + sbVisTitle2.Text = "DISABLE"; + sbVisTitle2.BackColor = Color.Orange; + sbVisTitle2.BackColor2 = Color.Tomato; + } + else + { + listView21.SetText(0, col, DIO.getCartSize(2) == eCartSize.None ? "?" : DIO.getCartSize(2).ToString()); + } + + + listView21.GetStyle(0, col).ForeColor = AR.SETTING.Data.Detect_CartR ? Color.White : Color.Red; + //lbSize2.Text = DIO.getCartSize(2) == eCartSize.None ? "?" : DIO.getCartSize(2).ToString(); + //lbSize2.ForeColor = COMM.SETTING.Data.Detect_CartR ? Color.White : Color.Red; + + listView21.SetText(row, col, visdata.RID2); + if (visdata.RID2.isEmpty() == false && visdata.RID.Equals(visdata.RID2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.SID2); + if (visdata.SID2.isEmpty() == false && visdata.SID.Equals(visdata.SID2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + if (visdata.QTY2.Equals("0")) listView21.SetColor(row, col, 0); + else listView21.SetText(row, col, visdata.QTY2); + if (visdata.QTY2.isEmpty() == false && visdata.QTY2.Equals("0") == false && visdata.QTY.Equals(visdata.QTY2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + + listView21.SetText(row, col, visdata.VNAME2); + if (visdata.VNAME2.isEmpty() == false && visdata.VNAME.Equals(visdata.VNAME2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.VLOT2); + if (visdata.VLOT2.isEmpty() == false && visdata.VLOT.Equals(visdata.VLOT2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.MFGDATE2); + if (visdata.MFGDATE2.isEmpty() == false && visdata.MFGDATE.Equals(visdata.MFGDATE2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + + listView21.SetText(row, col, visdata.PARTNO2); + if (visdata.PARTNO2.isEmpty() == false && visdata.PARTNO.Equals(visdata.PARTNO2) == false) listView21.SetColor(row++, col - 1, 2); + else listView21.SetColor(row++, col - 1, 1); + } + catch { } + + listView21.Invalidate(); + listView21.Refresh(); + + lbLock0.BackColor = l0 ? Color.FromArgb(0xff, 0x4c, 0x0e) : Color.FromArgb(32, 32, 32); + lbLock0.BackColor2 = l0 ? Color.FromArgb(0xff, 0x4c, 0x0e) : Color.FromArgb(80, 80, 80); + lbLock1.BackColor = l1 ? Color.FromArgb(0xff, 0x4c, 0x0e) : Color.FromArgb(32, 32, 32); + lbLock1.BackColor2 = l1 ? Color.FromArgb(0xff, 0x4c, 0x0e) : Color.FromArgb(80, 80, 80); + lbLock2.BackColor = l2 ? Color.FromArgb(0xff, 0x4c, 0x0e) : Color.FromArgb(32, 32, 32); + lbLock2.BackColor2 = l2 ? Color.FromArgb(0xff, 0x4c, 0x0e) : Color.FromArgb(80, 80, 80); + + //display mesasge + UpdateStatusMessage(); //left + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/Display/_Interval_500ms.cs b/Handler/Project/RunCode/Display/_Interval_500ms.cs new file mode 100644 index 0000000..f1c8708 --- /dev/null +++ b/Handler/Project/RunCode/Display/_Interval_500ms.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project +{ + public partial class FMain + { + + + void _Display_Interval_500ms() + { + + //홈진행중에는 모델쪽을 건드릴수 없게 한다 + toolStripButton7.Enabled = !PUB.sm.Step.ToString().StartsWith("HOME"); + //현재시간표시 + if (PUB.sm.Step == eSMStep.INIT) + lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + else + lbTime.Text = PUB.sm.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"); + + //키엔스 데이터를 바로 표시한다. + tbBarcodeF.Text = KeyenceBarcodeDataF; + tbBarcodeR.Text = KeyenceBarcodeDataR; + + lbCntLeft.Text = $"{VAR.I32[eVarInt32.LPickOfCount]}"; + lbCntRight.Text = $"{VAR.I32[eVarInt32.RPickOfCount]}"; + lbCntPicker.Text = $"{VAR.I32[eVarInt32.PickOfCount]}"; + //lbCntPrnL.Text = $"{SETTING.Counter.CountPrintL}"; + //lbCnrPrnR.Text = $"{SETTING.Counter.CountPrintR}"; + + if (AR.SETTING.Data.Enable_SpeedLimit) + grpProgress.Text = $"작업 수량(속도제한:{AR.SETTING.Data.LimitSpeed})"; + else + grpProgress.Text = $"작업 수량"; + + //display Room Light + btLightRoom.BackColor = DIO.GetIOOutput(eDOName.ROOMLIGHT) ? Color.Gold : SystemColors.Control; + + //상태를 DB에 저장한다. + //EEMStatus.UpdateStatusSQL(PUB.sm.Step); + + //컨베이어 가동시간계싼 + if(DIO.GetIOOutput(eDOName.LEFT_CONV) && VAR.TIME[eVarTime.CONVL_START].Year != 1982) + { + var t = (DateTime.Now - VAR.TIME[eVarTime.CONVL_START]).TotalSeconds; + if (t > 999) t = 999; + VAR.DBL[eVarDBL.CONVL_RUNTIME] = t; + } + + if (DIO.GetIOOutput(eDOName.RIGHT_CONV) && VAR.TIME[eVarTime.CONVR_START].Year != 1982) + { + var t = (DateTime.Now - VAR.TIME[eVarTime.CONVR_START]).TotalSeconds; + if (t > 999) t = 999; + VAR.DBL[eVarDBL.CONVR_RUNTIME] = t; + } + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/Display/_Interval_5min.cs b/Handler/Project/RunCode/Display/_Interval_5min.cs new file mode 100644 index 0000000..5b4b2e0 --- /dev/null +++ b/Handler/Project/RunCode/Display/_Interval_5min.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class FMain + { + + void _Display_Interval_5min() + { + //남은디스크확인 + PUB.CheckFreeSpace(); + } + + } +} diff --git a/Handler/Project/RunCode/Display/_TMDisplay.cs b/Handler/Project/RunCode/Display/_TMDisplay.cs new file mode 100644 index 0000000..04b3485 --- /dev/null +++ b/Handler/Project/RunCode/Display/_TMDisplay.cs @@ -0,0 +1,367 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; +namespace Project +{ + public partial class FMain + { + DateTime tm500minute = DateTime.Now.AddDays(-1); + DateTime tm250minute = DateTime.Now.AddDays(-1); + DateTime tm1minute = DateTime.Now.AddDays(-1); + DateTime tm5minute = DateTime.Now; + Boolean displayOn = false; + Boolean needShowSummary = false; + + + private void _DisplayTimer(object sender, EventArgs e) + { + if (displayOn == false) displayOn = true; + else + { + PUB.log.AddAT("Display Timer Overlab");// Console.WriteLine("display overlab"); + return; + } + + //lbOnline.Text = COMM.SETTING.Data.OnlineMode ? "ON-LINE" : "OFF-LINE"; + //lbOnline.ForeColor = COMM.SETTING.Data.OnlineMode ? Color.Black : Color.Red; + //toolStripLabel1.Visible = Pub.Result.DryRun; + //if(Pub.Result.DryRun) + //{ + // if (toolStripLabel1.ForeColor == Color.Red) toolStripLabel1.ForeColor = Color.Black; + // else toolStripLabel1.ForeColor = Color.Red; + //} + try + { + UpdateDisplayTimerData(); + } + catch + { + + } + + + + + //작업수량 업데이트 + UpdateJobCount(); + + #region "250ms time 루틴" + var ts250 = DateTime.Now - tm250minute; + if (ts250.TotalMilliseconds >= 250) + { + _Display_Interval_250ms(); + tm250minute = DateTime.Now; + } + #endregion + + #region "500ms time 루틴" + var ts500 = DateTime.Now - tm500minute; + if (ts500.TotalMilliseconds >= 500) + { + _Display_Interval_500ms(); + tm500minute = DateTime.Now; + } + #endregion + + #region retgion"1분 time 루틴" + var ts = DateTime.Now - tm1minute; + if (ts.TotalMinutes >= 1) + { + //리셋카운트 + _Display_Interval_1min(); + tm1minute = DateTime.Now; + } + #endregion + + #region retgion"5분 time 루틴" + ts = DateTime.Now - tm5minute; + if (ts.TotalMinutes >= 5) + { + //남은디스크확인 + _Display_Interval_5min(); + tm5minute = DateTime.Now; + } + #endregion + + displayOn = false; + } + + + + void UpdateDisplayTimerData() + { + if (PUB.sm.Step > eSMStep.INIT && + panTopMenu.Enabled == false) panTopMenu.Enabled = true; + + //쓰레드로인해서 메인에서 진행하게한다. SPS는 메인쓰레드에서 진행 됨 + //팝을 제거 혹은 표시하는 기능 + if (PUB.popup.needShow) PUB.popup.showMessage(); + else if (PUB.popup.needClose) PUB.popup.Visible = false; // .setVision(false)(); + + + + ////업로드화면을 표시해야하느 ㄴ경우 + if (needShowSummary) + { + ShowSummary(); + needShowSummary = false; + } + + //시스템 정보를 메인 UI에 표시한다 + UpdateLoaderDisplay(); + + + } + void UpdateJobCount() + { + + } + + + + void UpdateLoaderDisplay() + { + hmi1.L_PICK_FW = DIO.GetIOInput(eDIName.L_PICK_FW); //피커의 실린더 전후진 상태 + hmi1.L_PICK_BW = DIO.GetIOInput(eDIName.L_PICK_BW); //피커의 실린더 전후진 상태 + hmi1.R_PICK_FW = DIO.GetIOInput(eDIName.R_PICK_FW); //피커의 실린더 전후진 상태 + hmi1.R_PICK_BW = DIO.GetIOInput(eDIName.R_PICK_BW); //피커의 실린더 전후진 상태 + + hmi1.PrintLPICK = DIO.GetIOInput(eDIName.L_PICK_VAC); + hmi1.PrintRPICK = DIO.GetIOInput(eDIName.R_PICK_VAC); + + hmi1.arPortLItemOn = PUB.flag.get(eVarBool.FG_PORTL_ITEMON); + hmi1.arPortRItemOn = PUB.flag.get(eVarBool.FG_PORTR_ITEMON); + + hmi1.arPLItemON = PUB.flag.get(eVarBool.FG_PL_ITEMON); + hmi1.arPRItemON = PUB.flag.get(eVarBool.FG_PR_ITEMON); + + hmi1.arFGVision0RDY = PUB.flag.get(eVarBool.FG_PRC_VISIONL); + hmi1.arFGVision1RDY = false;// PUB.flag.get(eVarBool.RDY_VISION1); + hmi1.arFGVision2RDY = PUB.flag.get(eVarBool.FG_PRC_VISIONR); + + hmi1.arFGVision0END = PUB.flag.get(eVarBool.FG_END_VISIONL); + hmi1.arFGVision1END = false;// PUB.flag.get(eVarBool.END_VISION1); + hmi1.arFGVision2END = PUB.flag.get(eVarBool.FG_END_VISIONR); + + hmi1.arFGPrinter0RDY = PUB.flag.get(eVarBool.FG_RUN_PRINTL); + hmi1.arFGPrinter1RDY = PUB.flag.get(eVarBool.FG_RUN_PRINTR); + + hmi1.arFGPrinter0END = PUB.flag.get(eVarBool.FG_OK_PRINTL); + hmi1.arFGPrinter1END = PUB.flag.get(eVarBool.FG_OK_PRINTR); + + hmi1.arMagnet0 = DIO.GetIOOutput(eDOName.PORTL_MAGNET); + hmi1.arMagnet1 = DIO.GetIOOutput(eDOName.PORTC_MAGNET); + hmi1.arMagnet2 = DIO.GetIOOutput(eDOName.PORTR_MAGNET); + + hmi1.arPickerSafeZone = DIO.GetIOInput(eDIName.PICKER_SAFE); + + hmi1.arMotPosNamePX = MOT.GetPosName(eAxis.PX_PICK); + hmi1.arMotPosNamePZ = MOT.GetPosName(eAxis.PZ_PICK); + hmi1.arMotPosNameLM = MOT.GetPosName(eAxis.PL_MOVE); + hmi1.arMotPosNameLZ = MOT.GetPosName(eAxis.PL_UPDN); + hmi1.arMotPosNameRM = MOT.GetPosName(eAxis.PR_MOVE); + hmi1.arMotPosNameRZ = MOT.GetPosName(eAxis.PR_UPDN); + + hmi1.arMotILockPKX = PUB.iLock[(int)eAxis.PX_PICK].IsEmpty() == false; + hmi1.arMotILockPKZ = PUB.iLock[(int)eAxis.PZ_PICK].IsEmpty() == false; + hmi1.arMotILockPLM = PUB.iLock[(int)eAxis.PL_MOVE].IsEmpty() == false; + hmi1.arMotILockPLZ = PUB.iLock[(int)eAxis.PL_UPDN].IsEmpty() == false; + hmi1.arMotILockPRM = PUB.iLock[(int)eAxis.PR_MOVE].IsEmpty() == false; + hmi1.arMotILockPRZ = PUB.iLock[(int)eAxis.PR_UPDN].IsEmpty() == false; + + hmi1.arMotILockPRL = PUB.iLockPRL.IsEmpty() == false; + hmi1.arMotILockPRR = PUB.iLockPRR.IsEmpty() == false; + hmi1.arMotILockVS0 = PUB.iLockVS0.IsEmpty() == false; + hmi1.arMotILockVS1 = PUB.iLockVS1.IsEmpty() == false; + hmi1.arMotILockVS2 = PUB.iLockVS2.IsEmpty() == false; + hmi1.arMotILockCVL = PUB.iLockCVL.IsEmpty() == false; + hmi1.arMotILockCVR = PUB.iLockCVR.IsEmpty() == false; + + hmi1.arIsRunning = PUB.sm.isRunning; + hmi1.arUnloaderSeq = PUB.Result.UnloaderSeq; + + //연결상태 + hmi1.arConn_MOT = PUB.mot.IsInit; + hmi1.arConn_DIO = PUB.dio.IsInit; + hmi1.arAIRDetect = DIO.GetIOInput(eDIName.AIR_DETECT); + hmi1.arJobEND = PUB.flag.get(eVarBool.FG_JOB_END); + hmi1.arConn_REM = PUB.remocon.IsOpen(); + + hmi1.arDI_Emergency = DIO.GetIOInput(eDIName.BUT_EMGF) == true; + hmi1.arDI_SaftyOk = DIO.isSaftyDoorF(); + + hmi1.arVisionProcessL = PUB.flag.get(eVarBool.FG_PRC_VISIONL); + hmi1.arVisionProcessC = false;// PUB.flag.get(eVarBool.RDY_VISION1); + hmi1.arVisionProcessR = PUB.flag.get(eVarBool.FG_PRC_VISIONR); + + try + { + hmi1.arVision_RID = PUB.Result.ItemDataC.VisionData.RID; //200925 + hmi1.arVision_SID = PUB.Result.ItemDataC.VisionData.SID; //200925 + hmi1.arVar_Picker[0].PortPos = PUB.Result.ItemDataL.PortPos; //200925 + } + catch { } + + + for (short i = 0; i < 3; i++) + { + if (PUB.mot != null && PUB.mot.IsInit) + { + hmi1.arMOT_HSet[i] = PUB.mot.IsHomeSet(i); + hmi1.arMOT_Alm[i] = PUB.mot.IsServAlarm(i); + hmi1.arMOT_LimUp[i] = PUB.mot.IsLimitP(i); + hmi1.arMOT_LimDn[i] = PUB.mot.IsLimitN(i); + hmi1.arMOT_Origin[i] = PUB.mot.IsOrg(i); + hmi1.arMOT_SVOn[i] = PUB.mot.IsServOn(i); + } + else + { + hmi1.arMOT_HSet[i] = false; + hmi1.arMOT_Alm[i] = false; + hmi1.arMOT_LimUp[i] = false; + hmi1.arMOT_LimDn[i] = false; + hmi1.arMOT_Origin[i] = false; + hmi1.arMOT_SVOn[i] = false; + } + } + + //포트 리밋센서 + hmi1.arVar_Port[0].LimitLower = DIO.GetIOInput(eDIName.PORTL_LIM_DN); //front-left + hmi1.arVar_Port[0].LimitUpper = DIO.GetIOInput(eDIName.PORTL_LIM_UP); + hmi1.arVar_Port[0].DetectUp = DIO.GetIOInput(eDIName.PORTL_DET_UP); + hmi1.arVar_Port[0].SaftyErr = !DIO.isSaftyDoorF(0, false); + hmi1.arVar_Port[0].reelCount = SETTING.Counter.CountP0; + hmi1.arVar_Port[0].CartSize = (int)DIO.getCartSize(0); + + hmi1.arVar_Port[1].LimitLower = DIO.GetIOInput(eDIName.PORTC_LIM_DN); //front-right + hmi1.arVar_Port[1].LimitUpper = DIO.GetIOInput(eDIName.PORTC_LIM_UP); + hmi1.arVar_Port[1].DetectUp = DIO.GetIOInput(eDIName.PORTC_DET_UP); + hmi1.arVar_Port[1].SaftyErr = !DIO.isSaftyDoorF(1, false); + hmi1.arVar_Port[1].reelCount = SETTING.Counter.CountP1; + hmi1.arVar_Port[1].CartSize = (int)DIO.getCartSize(1); + + hmi1.arVar_Port[2].LimitLower = DIO.GetIOInput(eDIName.PORTR_LIM_DN); //front-left + hmi1.arVar_Port[2].LimitUpper = DIO.GetIOInput(eDIName.PORTR_LIM_UP); + hmi1.arVar_Port[2].DetectUp = DIO.GetIOInput(eDIName.PORTR_DET_UP); + hmi1.arVar_Port[2].SaftyErr = !DIO.isSaftyDoorF(2, false); + hmi1.arVar_Port[2].reelCount = SETTING.Counter.CountP2; + hmi1.arVar_Port[2].CartSize = (int)DIO.getCartSize(2); + + hmi1.arCountPrint0 = SETTING.Counter.CountPrintL; + hmi1.arCountPrint1 = SETTING.Counter.CountPrintR; + + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + hmi1.arVar_Port[0].reelCount = VAR.I32[eVarInt32.LEFT_ITEM_COUNT]; + hmi1.arVar_Port[2].reelCount = VAR.I32[eVarInt32.RIGT_ITEM_COUNT]; + } + + hmi1.arCountV1 = SETTING.Counter.CountV1; + hmi1.arCountV0 = SETTING.Counter.CountV0; + hmi1.arCountV2 = SETTING.Counter.CountV2; + + //피커 백큠감지 상태(Front) + hmi1.arVar_Picker[0].VacOutput[0] = DIO.GetIOOutput(eDOName.PICK_VAC1); + hmi1.arVar_Picker[0].VacOutput[1] = DIO.GetIOOutput(eDOName.PICK_VAC2); + hmi1.arVar_Picker[0].VacOutput[2] = DIO.GetIOOutput(eDOName.PICK_VAC3); + hmi1.arVar_Picker[0].VacOutput[3] = DIO.GetIOOutput(eDOName.PICK_VAC4); + hmi1.arVar_Picker[0].ItemOn = PUB.flag.get(eVarBool.FG_PK_ITEMON); + } + + + Color StatusBackColor = Color.FromArgb(150, 150, 150); + + + /// + /// 상태표시라벨의 진행값을 변경 합니다 + /// + /// + /// + /// + /// + void SetStatusProgress(double value, string title, double max = 0, Color? textColor = null, Color? shadowColor = null) + { + arCtl.arLabel lbl = lbMsg;//idx == 0 ? lbMsgL : (idx == 1 ? lbMsgC : (idx == 2 ? lbMsgR : lbMsg)); + + if (lbl.ProgressEnable == false) lbl.ProgressEnable = true; + if (lbl.ProgressValue != value) lbl.ProgressValue = (float)value; + if (lbl.Text != title) lbl.Text = title; + + if (max != 0) + { + if (lbl.ProgressMax != max) lbl.ProgressMax = (float)max; + } + if (textColor != null) + { + if (lbl.ProgressForeColor != textColor) lbl.ProgressForeColor = (Color)textColor; + } + if (shadowColor != null) + { + if (lbl.ShadowColor != shadowColor) lbl.ShadowColor = (Color)shadowColor; + } + } + + ///// + ///// 상태표시라벨의 메세지를 변경 합니다 + ///// + ///// + ///// + ///// + ///// + ///// + ///// + ///// + //void SetStatusMessage(string dispmsg, Color bColor, Color bColor2, Color fcolor, Color? shadow = null, Boolean blank = false) + //{ + // arCtl.arLabel lbl = lbMsg;//idx == 0 ? lbMsgL : (idx == 1 ? lbMsgC : (idx == 2 ? lbMsgR : lbMsg)); + // if (shadow == null) shadow = Color.Transparent; + // if (lbl.ProgressValue != 0 || dispmsg != lbl.Text || lbl.ForeColor != fcolor || lbl.ShadowColor != (Color)shadow || (lbl.BackColor != bColor && lbl.BackColor2 != bColor)) + // { + // lbl.ProgressValue = 0; + // lbl.BackColor = bColor; + // lbl.BackColor2 = bColor2; + // lbl.ForeColor = fcolor; + // lbl.ShadowColor = (Color)shadow; + // lbl.Text = dispmsg; + // if (blank) lbl.Tag = "BLINK"; + // else lbl.Tag = null; + // } + //} + + void SetStatusMessage(string dispmsg, Color fcolor, Color backcolor, Color? backColor2 = null, Color? shadow = null, Boolean blank = false) + { + arCtl.arLabel lbl = lbMsg;//idx == 0 ? lbMsgL : (idx == 1 ? lbMsgC : (idx == 2 ? lbMsgR : lbMsg)); + + if (shadow == null) shadow = Color.Transparent; + if (backColor2 == null) backColor2 = backcolor; + + var bg1ok = lbl.BackColor == backcolor && lbl.BackColor2 == backColor2; + var bg2ok = lbl.BackColor2 == backcolor && lbl.BackColor == backColor2; + + + if (lbl.ProgressValue != 0 || dispmsg != lbl.Text || + lbl.ForeColor != fcolor || lbl.ShadowColor != (Color)shadow || (bg1ok == false && bg2ok == false)) + { + lbl.ProgressValue = 0; + lbl.BackColor = backcolor; + lbl.BackColor2 = (Color)backColor2; + + lbl.ForeColor = fcolor; + lbl.ShadowColor = (Color)shadow; + lbl.Text = dispmsg; + if (blank) lbl.Tag = "BLINK"; + else lbl.Tag = null; + } + else if (lbl.ProgressEnable) + { + lbl.ProgressEnable = false; + } + } + + + } +} diff --git a/Handler/Project/RunCode/Display/_UpdateStatusMessage.cs b/Handler/Project/RunCode/Display/_UpdateStatusMessage.cs new file mode 100644 index 0000000..48444a8 --- /dev/null +++ b/Handler/Project/RunCode/Display/_UpdateStatusMessage.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project +{ + public partial class FMain + { + /// + /// Automatic message change for status display labels + /// + /// + void UpdateStatusMessage() + { + arCtl.arLabel lbl = lbMsg; + + //Check if message window should blink + if (lbl.Tag != null && lbl.Tag.ToString() == "BLINK") + { + var bg1 = lbl.BackColor; + var bg2 = lbl.BackColor2; + if(bg2 != null) lbl.BackColor = (Color)bg2; + lbl.BackColor2 = bg1; + lbl.Invalidate(); + } + + if (PUB.sm.Step == eSMStep.INIT) + { + SetStatusMessage("Initialization in progress", Color.White, Color.FromArgb(0x38, 0x4d, 0x9d)); + } + else if (PUB.sm.Step == eSMStep.IDLE) + { + //Check various I/O and display error messages + + var msg = string.Empty; + bool errst = true; + if (PUB.mot.IsInit == false) msg = "Motion card not ready"; + else if (PUB.dio.IsInit == false) msg = "I/O card not ready"; + else if (PUB.dio.HasDIOn == false) msg = "Power check required (input port not detected)"; + else if (PUB.mot.HasServoAlarm == true) msg = "Servo alarm occurred"; + else if (PUB.mot.HasHoming == true) msg = "Home search in progress"; + else if (PUB.mot.HasServoOff == true) msg = "Servo OFF occurred"; + else if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) msg = "AIR output failed (Press the front blue AIR button)"; + else if (DIO.GetIOInput(eDIName.AIR_DETECT) == false) msg = "AIR not detected"; + else if (DIO.isSaftyDoorF() == false) msg = "Front Door Safty Error"; + else if (DIO.isSaftyDoorR() == false) msg = "Rear Door Safty Error"; + else if (PUB.mot.HasHomeSetOff == true) + { + if (DIO.GetIOInput(eDIName.PICKER_SAFE) == false) + { + msg = "Please move the picker (X) axis to center (Function-Management screen)"; + } + else + { + msg = "Home search is required"; + } + + } + else + { + + var limport = new List(); + if (PUB.mot.HasLimitError == true) + { + for (short i = 0; i < SETTING.System.MotaxisCount; i++) + { + if (PUB.mot.IsUse(i) == false) continue; + if (PUB.mot.IsLimitN(i)) + { + var useOrgSensor = PUB.system_mot.GetUseOrigin; + if (useOrgSensor[i] == true) limport.Add(i.ToString()); + } + else if (PUB.mot.IsLimitP(i)) + limport.Add(i.ToString()); + else if (PUB.mot.IsLimitSWN(i)) + limport.Add(i.ToString()); + else if (PUB.mot.IsLimitSWP(i)) + limport.Add(i.ToString()); + } + } + if (limport.Any()) + { + msg = "Servo LIMIT alarm occurred (Ax:" + string.Join(",", limport) + ")"; + } + else + { + msg = "Press START to begin operation"; + errst = false; + } + + + } + + if (errst) + { + SetStatusMessage(msg, Color.White, Color.Red, Color.IndianRed, Color.DimGray, blank: true); + } + else + { + Color fColor = Color.FromArgb(200, 200, 200); + Color bColor1 = Color.DimGray; + Color bColor2 = Color.DarkGray; + + SetStatusMessage(msg, Color.Lime, bColor1, bColor2, Color.Black, true); + } + + } + + else if (PUB.sm.Step == eSMStep.WAITSTART) + { + SetStatusMessage("[Waiting to Start] ", Color.Gold, Color.FromArgb(50, 50, 50)); + } + else if (PUB.sm.Step == eSMStep.ERROR) + { + var msglis = PUB.Result.ResultMessage.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); + SetStatusMessage($"{msglis[0]}", Color.White, Color.Red); + } + else if (PUB.sm.Step == eSMStep.PAUSE) + { + SetStatusMessage("[Paused] ", Color.Gold, Color.FromArgb(50, 50, 50)); + } + else if (PUB.sm.Step == eSMStep.HOME_FULL)// || Pub.sm.Step == eSMStep.QHOME) + { + SetStatusMessage($"Checking home position of all motion axes", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray); + } + else if (PUB.sm.Step == eSMStep.HOME_DELAY)// || Pub.sm.Step == eSMStep.QHOME) + { + SetStatusMessage($"Please wait a moment (homing in progress)", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray); + } + else if (PUB.sm.Step == eSMStep.HOME_CONFIRM)// || Pub.sm.Step == eSMStep.QHOME) + { + SetStatusMessage($"Completing home operation", Color.White, Color.FromArgb(0x98, 0x79, 0xd0), shadow: Color.DimGray); + } + else if (PUB.sm.Step == eSMStep.RUN) + { + + double cur = PUB.sm.seq.GetTime(PUB.sm.Step).TotalSeconds; + double max = AR.SETTING.Data.Timeout_StepMaxTime; + string msg = $"In Progress"; + Color fColor = Color.Gold; + + if (PUB.flag.get(eVarBool.FG_JOB_END)) + { + msg = "Loader is empty. Operation will be completed shortly"; + cur = max = 0; + fColor = Color.Lime; + + } + else if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO)) + { + msg = "Waiting for user information input"; + cur = 100; + max = 100; + } + else //if (PUB.flag.get(eVarBool.RDY_VISION1) == true && PUB.flag.get(eVarBool.RDY_PORT_PC) == true && idx == 9) + { + msg = "Working"; + if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) && PUB.flag.get(eVarBool.FG_END_VISIONL) == false) + msg += "(LEFT-QR validation)"; + if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) && PUB.flag.get(eVarBool.FG_END_VISIONR) == false) + msg += "(RIGHT-QR validation)"; + + //Conveyor interlock check in conveyor usage mode + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + if (DIO.GetIOInput(eDIName.R_CONV1) || DIO.GetIOInput(eDIName.R_CONV4)) + { + if (PUB.iLockCVR.IsEmpty() == false) + msg += "(Waiting for right conveyor interlock release)"; + } + if (DIO.GetIOInput(eDIName.L_CONV1) || DIO.GetIOInput(eDIName.L_CONV4)) + { + if (PUB.iLockCVL.IsEmpty() == false) + msg += "(Waiting for left conveyor interlock release)"; + } + } + + cur = VAR.TIME.RUN((int)eVarTime.LIVEVIEW1).TotalSeconds; + max = AR.SETTING.Data.Timeout_VisionProcessL / 1000.0; + } + //else if (PUB.flag.get(eVarBool.RDY_ZL_PICKON)) + //{ + // var ts = DateTime.Now - Pub.GetVarTime(eVarTime.JOB_END); + // msg = string.Format("UNLOADER PICK ON #{0}", PUB.sm.seq.Get(step)); + // cur = Pub.getRunSteptime(0).TotalSeconds;//ts.TotalSeconds; + // max = 10;//COMM.SETTING.Data.Timeout_JOBEnd; + //} + //else if (PUB.mot.IsMotion((int)eAxis.Y_PICKER]) + //{ + // msg = string.Format("Moving"); + // cur = 0;// Pub.getRunSteptime(0).TotalSeconds;// ts.TotalSeconds; + // max = 10;//COMM.SETTING.Data.Timeout_JOBEnd; + //} + SetStatusProgress(cur, msg, max, fColor, Color.FromArgb(50, 50, 50)); + } + else if (PUB.flag.get(eVarBool.FG_MOVE_PICKER)) + { + SetStatusMessage("X-axis can be moved with buttons", Color.Black, Color.White); + } + else + { + SetStatusMessage("[" + PUB.sm.Step.ToString() + "]", Color.Red, Color.White); + } + } + } +} diff --git a/Handler/Project/RunCode/Main/_SM_MAIN_ERROR.cs b/Handler/Project/RunCode/Main/_SM_MAIN_ERROR.cs new file mode 100644 index 0000000..c846640 --- /dev/null +++ b/Handler/Project/RunCode/Main/_SM_MAIN_ERROR.cs @@ -0,0 +1,64 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + private void _SM_MAIN_ERROR(Boolean isFirst, eSMStep Step, TimeSpan StepTime) + { + //모션의 위치를 저장해준다. - 재시작시 변경이 잇다면 오류로 처리한다 + for (short i = 0; i < PUB.mot.DeviceCount; i++) + PUB.Result.PreventMotionPosition[i] = PUB.mot.GetLastCmdPos(i); + + var errorMessage = string.Empty; + + //에러메세지가 있는 경우에만 표시함 + if (PUB.Result.ResultCode != eResult.NOERROR && PUB.Result.ResultMessage != "") + errorMessage += PUB.Result.ResultMessage; + + //에러메세지가 있는 경우에만 표시함 + if (errorMessage != "") + { + //사용자 값 입력창에서는 오류를 표시하지않는다 + if (Step == eSMStep.PAUSE && PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO)) + PUB.log.Add("Pause message not displayed because barcode information input window is open"); + else + PUB.popup.setMessage(errorMessage); + } + + + if (Step == eSMStep.EMERGENCY) + { + PUB.log.AddE("Enter Emergency Step"); + } + else if (Step == eSMStep.PAUSE) + { + PUB.log.AddE("Enter Pause Step 1 : " + PUB.Result.ResultMessage); + } + else + { + //홈 검색실패로 인해 멈췄다면 모든 축을 멈춘다 + if (Step == eSMStep.ERROR && PUB.Result.ResultCode == eResult.SAFTY) + PUB.mot.MoveStop("홈검색 실패"); + + PUB.log.AddE(string.Format("Enter Error Step 1 : {0}", PUB.Result.ResultMessage)); + } + + //lbMsgR.ProgressEnable = false; + + DIO.SetBuzzer(true); + DIO.SetPortMotor(0, eMotDir.CW, false, "ERROR"); + DIO.SetPortMotor(1, eMotDir.CW, false, "ERROR"); + DIO.SetPortMotor(2, eMotDir.CW, false, "ERROR"); + + //컨베어멈춤 + DIO.SetOutput(AR.eDOName.LEFT_CONV, false); + DIO.SetOutput(AR.eDOName.RIGHT_CONV, false); + } + } +} diff --git a/Handler/Project/RunCode/RunSequence/0_RUN_STARTCHK_SW.cs b/Handler/Project/RunCode/RunSequence/0_RUN_STARTCHK_SW.cs new file mode 100644 index 0000000..36d6ddd --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/0_RUN_STARTCHK_SW.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AR; + +namespace Project +{ + public partial class FMain + { + async public Task _SM_RUN_STARTCHKSW(bool isFirst, TimeSpan stepTime) + { + var mc = PUB.Result.mModel; + var mv = PUB.Result.vModel; + + double free = 0; + var savepath = PUB.getSavePath(out free); + if (free < 3.0) + { + string msg = "FREE SPACE ERROR\n" + + "Insufficient disk space (3%) to proceed with the work\n" + + "Storage path: {0}\n" + + "Please delete data or check the deletion cycle in settings"; + msg = string.Format(msg, AR.SETTING.Data.GetDataPath()); + PUB.popup.setMessage(msg); + DIO.SetBuzzer(true); + PUB.sm.SetNewStep(eSMStep.IDLE); + return false; + } + + + + if (PUB.Result.isSetmModel == false) + { + string msg = "Motion model not selected\nPlease check the 'MOTION' item in the work model"; + PUB.popup.setMessage(msg); + DIO.SetBuzzer(true); + PUB.sm.SetNewStep(eSMStep.IDLE); + return false; + } + + + //모션의 모든 위치가 원점이 아니라면 홈 초기화를 요청한다. + var initMsg = ""; + + if (initMsg != "") + { + PUB.popup.setMessage(initMsg); + DIO.SetBuzzer(true); + PUB.sm.SetNewStep(eSMStep.IDLE); + return false; + } + + //모델정보가 설정되어있는지 확인 + if (PUB.Result == null || + PUB.Result.vModel == null || + PUB.Result.vModel.Title.isEmpty()) + { + PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELV, eNextStep.ERROR); + return false; + } + + //모션모델자동선택 230823 + var motionmode = VAR.BOOL[eVarBool.Use_Conveyor] ? "Conveyor" : "Default"; + if (PUB.SelectModelM(motionmode) == false) + { + PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELM, eNextStep.ERROR); + return false; + } + + //모델정보가 설정되어있는지 확인 + if (PUB.Result == null || + PUB.Result.mModel == null || + PUB.Result.mModel.Title.isEmpty()) + { + PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELM, eNextStep.ERROR); + return false; + } + + //ECS데이터확인 230823 + var conv = VAR.BOOL[eVarBool.Use_Conveyor]; + if (conv) + { + var sidinfo = await PUB.UpdateSIDInfo(); + var systembypass = SETTING.Data.SystemBypass; + if (systembypass == false && sidinfo.Item1 == false) + { + PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOECSDATA, eNextStep.ERROR, sidinfo.Item2); + return false; + } + //else if (systembypass == false && sidinfo.Item3 < 1) + //{ + // PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOECSDATAACTIVE, eNextStep.ERROR, sidinfo.Item2); + // return false; + //} + } + + //SID변환정보 필요 230823 + //이값도 테이블에서 실시간으로 조회되므로 미리 불러올 필요 없다 + + //사용자추가정보 필요 230823 + //기존에 사용하던 사용자 추가 정보 + //ECS정보가 수신되면 기존 TABLE 을 삭제하는 구조이므로 병행할수 없음 + //데이터는 테이블에서 실시간으로 조 회됨 + + //사용자스텝실행 + if (PUB.flag.get(eVarBool.FG_USERSTEP)) + { + PUB.flag.set(eVarBool.FG_USERSTEP, false, "STACHKSW"); + PUB.log.AddI("H/W inspection ignore function disabled due to work start"); + } + + //Auto Reel Out 250926 + PUB.Result.AutoReelOut = PUB.Result.vModel.AutoOutConveyor > 0; + + //공용변수초기화 + PUB.log.Add("Common variable (count) values initialized"); + VAR.I32.Clear((int)eVarInt32.LPickOfCount); + VAR.I32.Clear((int)eVarInt32.LPickOnCount); + VAR.I32.Clear((int)eVarInt32.RPickOfCount); + VAR.I32.Clear((int)eVarInt32.RPickOnCount); + VAR.I32.Clear((int)eVarInt32.PickOfCount); + VAR.I32.Clear((int)eVarInt32.PickOnCount); + VAR.I32.Clear((int)eVarInt32.PickOnRetry); //221102 + + + PUB.flag.set(eVarBool.FG_RUN_LEFT, false, "POSREST"); + PUB.flag.set(eVarBool.FG_RUN_RIGHT, false, "POSREST"); + + VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] = false; + VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] = false; + VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] = false; + AutoConvOutTimeL = new DateTime(1982, 11, 23); + AutoConvOutTimeR = new DateTime(1982, 11, 23); + + PUB.Result.ItemDataL.Clear("START_CHKSW"); + PUB.Result.ItemDataC.Clear("START_CHKSW"); + PUB.Result.ItemDataR.Clear("START_CHKSW"); + + var modelName = PUB.Result.vModel.Title; + lock (PUB.Result.BCDPatternLock) + { + PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false); + PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true); + PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}"); + } + + + //변환SID SID확인여부데이터 삭제 + PUB.Result.DTSidConvertEmptyList.Clear(); + PUB.Result.DTSidConvertMultiList.Clear(); + + PUB.Result.JobStartTime = DateTime.Now; + warninactivelist.Clear(); + + //작업락기능해제 + LockPK.Set(); + LockUserL.Set(); + LockUserR.Set(); + + + return true; + } + } +} diff --git a/Handler/Project/RunCode/RunSequence/1_RUN_STARTCHK_HW.cs b/Handler/Project/RunCode/RunSequence/1_RUN_STARTCHK_HW.cs new file mode 100644 index 0000000..d636403 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/1_RUN_STARTCHK_HW.cs @@ -0,0 +1,179 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + + /// + /// 장치의 초기화 여부를 우선 체크 한다. + /// 장치에 문제가 있는 경우에는 ERROR상황으로 뺀다 + /// ERROR 상황은 RESET 시 IDLE로 전환된다. + /// 복구불가능한 오류 상황이다. + /// + /// + /// + /// + /// + public Boolean _SM_RUN_STARTCHKHW(bool isFirst, TimeSpan stepTime) + { + var mc = PUB.Result.mModel; + var mv = PUB.Result.vModel; + + //최초시작이므로 - 셔틀2의 안전위치 이동 플래그를 OFF해준다. + + //장치초기화 확인 + if (PUB.mot.IsInit == false || PUB.dio.IsInit == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.AZJINIT, eNextStep.ERROR); + return false; + } + + //서보 off 상태 확인 + if (PUB.mot.HasServoOff) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_SVOFF, eNextStep.ERROR);//, msg); + return false; + } + + //홈 검색완료 체크1 + if (PUB.mot.HasHomeSetOff) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR); + return false; + } + + //air확인 + if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) + { + PUB.Result.SetResultMessage(eResult.SENSOR, eECode.AIRNOOUT, eNextStep.ERROR); + return false; + } + + //카메라초기화체크(초기화가 오래걸려서 쓰레드분리함) - 201229 + if (VAR.BOOL[eVarBool.Opt_DisableCamera] == false && AR.SETTING.Data.Enable_Unloader_QRValidation && PUB.flag.get(eVarBool.FG_RDY_CAMERA_L) == false && AR.SETTING.Data.Disable_Left == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.CAM_LEFT, eNextStep.ERROR); + return false; + } + + if (VAR.BOOL[eVarBool.Opt_DisableCamera] == false && AR.SETTING.Data.Enable_Unloader_QRValidation && PUB.flag.get(eVarBool.FG_RDY_CAMERA_R) == false && AR.SETTING.Data.Disable_Right == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.CAM_RIGHT, eNextStep.ERROR); + return false; + } + + //안전위치 센서가 안들어와잇으면 오류 처리한다 + if (DIO.GetIOInput(eDIName.PICKER_SAFE) == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.NEED_JOBCANCEL, eNextStep.ERROR, eAxis.PL_MOVE, PUB.mot.ErrorMessage); + return false; + } + + //프린터확인 + if (PUB.flag.get(eVarBool.FG_INIT_PRINTER) == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTER, eNextStep.ERROR); + return false; + } + + //부착 실린더 위치 확인 + if (AR.SETTING.Data.Enable_PickerCylinder) + { + if (DIO.GetIOInput(eDIName.L_CYLUP) == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTER_LPRINTER_NOUP, eNextStep.ERROR); + return false; + } + if (DIO.GetIOInput(eDIName.R_CYLUP) == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTER_RPRINTER_NOUP, eNextStep.ERROR); + return false; + } + } + + //부착 실린더 위치 확인 + if (DIO.GetIOInput(eDIName.L_PICK_BW) == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTER_LPICKER_NOBW, eNextStep.ERROR); + return false; + } + if (DIO.GetIOInput(eDIName.R_PICK_BW) == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTER_RPICKER_NOBW, eNextStep.ERROR); + return false; + } + + //컨베이어 모드에서 컨베이어에 릴이 감지되면 시작하지 못한다 + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + if (DIO.GetIOInput(eDIName.L_CONV1)) + { + //감지되면 안된다 + var ssname = $"X{eDIName.L_CONV1}"; + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.LCONVER_REEL_DECTECT_ALL, eNextStep.ERROR, ssname); + return false; + } + + if (DIO.GetIOInput(eDIName.R_CONV1) || + DIO.GetIOInput(eDIName.R_CONV4)) + { + //감지되면 안된다 + var ssname = $"X{eDIName.R_CONV1}"; + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.RCONVER_REEL_DECTECT_ALL, eNextStep.ERROR, ssname); + return false; + } + } + + ////카메라체크 + //for (int i = 0; i < _isCrevisOpen.Length; i++) + //{ + // if (COMM.SETTING.Data.DisableCamera(i) == true) + // { + // PUB.log.AddAT($"카메라({i})번 비활성 됨(환경설정)"); + // } + // else if (_isCrevisOpen[i] == false) + // { + // if (i == 0 && COMM.SETTING.Data.DisableCamera0 == false && COMM.SETTING.Data.Disable_Left == false) + // { + // PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.VISION_NOCONN, eNextStep.ERROR, i); + // return false; + // } + // if (i == 2 && COMM.SETTING.Data.DisableCamera2 == false && COMM.SETTING.Data.Disable_Right == false) + // { + // PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.VISION_NOCONN, eNextStep.ERROR, i); + // return false; + // } + // } + //} + + //트리거 OFF작업 + WS_Send(eWorkPort.Left, PUB.wsL, "", "OFF", ""); + WS_Send(eWorkPort.Right, PUB.wsR, "", "OFF", ""); + + var systembypassmode = SETTING.Data.SystemBypass; + + //바코드설정업데이트 + if (systembypassmode == false) + { + bool k1, k2; + k1 = PUB.MemLoadBarcodeConfig(PUB.keyenceF); + k2 = PUB.MemLoadBarcodeConfig(PUB.keyenceR); + + if (k1 == false && k2 == false) //결과확인하도록함 230511 + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.CONFIG_KEYENCE, eNextStep.ERROR); + return false; + } + + } + + + return true; + } + } +} diff --git a/Handler/Project/RunCode/RunSequence/2_RUN_ROOT_SEQUENCE.cs b/Handler/Project/RunCode/RunSequence/2_RUN_ROOT_SEQUENCE.cs new file mode 100644 index 0000000..52a242c --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/2_RUN_ROOT_SEQUENCE.cs @@ -0,0 +1,1027 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Security.Cryptography; +using System.Text; +using AR; +using Chilkat; + +namespace Project +{ + public partial class FMain + { + public Boolean _RUN_ROOT_SEQUENCE(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + //var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + //option check + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.StatusMessage.set(msgType, $"[{target}] 작업을 시작 합니다"); + + //프린터용 백큠이 켜져있다면 오류로 한다. + if (target == eWorkPort.Left) + { + if (DIO.GetIOOutput(eDOName.PRINTL_AIRON)) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NEED_AIROFF_L, eNextStep.PAUSE); + return false; + } + } + else + { + if (DIO.GetIOOutput(eDOName.PRINTR_AIRON)) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NEED_AIROFF_R, eNextStep.PAUSE); + return false; + } + } + + //Keyence_Trigger(true); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 프린터(Y,Z) 안전위치로 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + sPositionData PosY, PosZ; + if (target == eWorkPort.Left) + { + PosY = MOT.GetLMPos(eLMLoc.READY); + PosZ = MOT.GetLZPos(eLZLoc.READY); + } + else + { + PosY = MOT.GetRMPos(eRMLoc.READY); + PosZ = MOT.GetRZPos(eRZLoc.READY); + } + + //Y축이 준비위가 아닌경우에만 이 처리를 한다. + if (MOT.getPositionMatch(PosY) == false) + { + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + if (MOT.CheckMotionPos(seqTime, PosY, funcName) == false) return false; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 로더에 릴이 감지되어있어야 다음 작업을 진행할 수 있음 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //Check Port Ready + if (PUB.flag.get(eVarBool.FG_RDY_PORT_PC) == false && DIO.GetIOInput(eDIName.PORTC_DET_UP) == false) return false; + + //Check Reel Detect Sensor + if (DIO.GetIOInput(eDIName.PORTC_DET_UP) == false) return false; + + //check Reel Limit Sensor + if (DIO.GetIOInput(eDIName.PORTC_LIM_UP) == true) return false; + + if (CVMode) + { + if (target == eWorkPort.Left) + { + if (DIO.GetIOInput(eDIName.L_CONV1)) return false; + //혹은 컨베이어 가동시간이 5초전이라면 넘어간다 230926 + if (VAR.I32[eVarInt32.LEFT_ITEM_COUNT] > 0) + { + if (seqTime.TotalSeconds > 5) + { + //if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_L) && PUB.flag.get(eVarBool.VS_DETECT_REEL_L) == false) + //{ + // //비젼에서 없다고 보고 되어있다면 그대로 진행한다.. + // PUB.log.AddAT($"(L)비전에서 자재가 감지되지 않아 강제 진행 합니다"); + // VAR.I32[eVarInt32.LEFT_ITEM_COUNT] = 0; + //} + if (VAR.DBL[eVarDBL.CONVL_RUNTIME] > 15) + { + PUB.log.AddE($"(L) Buffer cleared due to conveyor exceeding 15 seconds"); + VAR.I32[eVarInt32.LEFT_ITEM_COUNT] = 0; + } + else return false; + } + else return false; + } + } + else + { + if (DIO.GetIOInput(eDIName.R_CONV1)) return false; + //혹은 컨베이어 가동시간이 5초전이라면 넘어간다 230926 + if (VAR.I32[eVarInt32.RIGT_ITEM_COUNT] > 0) + { + if (seqTime.TotalSeconds > 5) + { + //if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_R) && PUB.flag.get(eVarBool.VS_DETECT_REEL_R) == false) + //{ + // //비젼에서 없다고 보고 되어있다면 그대로 진행한다.. + // PUB.log.AddAT($"(r)비전에서 자재가 감지되지 않아 강제 진행 합니다"); + // VAR.I32[eVarInt32.RIGT_ITEM_COUNT] = 0; + //} + if (VAR.DBL[eVarDBL.CONVR_RUNTIME] > 15) + { + PUB.log.AddE($"(R) Buffer cleared due to conveyor exceeding 15 seconds"); + VAR.I32[eVarInt32.RIGT_ITEM_COUNT] = 0; + } + else return false; + } + else return false; + } + } + //PUB.log.Add($"CVMODE에서 컨베이어 비어있음(SEQ)"); + } + + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 피커 사용확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.StatusMessage.set(msgType, $"[{target}] 피커(X) 사용 권한 확인"); + + if (LockPK.WaitOne(1) == false) return false; + LockPK.Reset(); + hmi1.AddLockItem((int)target, "PICKER"); + + PUB.mot.ClearPosition((int)eAxis.Z_THETA); + if (target == eWorkPort.Left) + { + //카트가 없으면 동작하지 않게한다. + PUB.flag.set(eVarBool.FG_RUN_RIGHT, false, funcName); + PUB.flag.set(eVarBool.FG_RUN_LEFT, true, funcName); + } + else + { + PUB.flag.set(eVarBool.FG_RUN_LEFT, false, funcName); + PUB.flag.set(eVarBool.FG_RUN_RIGHT, true, funcName); + } + + PUB.sm.seq.Clear(eSMStep.RUN_PICK_RETRY); + PUB.Result.ItemDataC.VisionData.STime = DateTime.Now; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 피커 리딩위치 이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var PickerRetryCount = AR.VAR.I32[AR.eVarInt32.PickOnRetry]; + //PUB.StatusMessage.set(msgType, $"[{target}] 피커(X) 읽기위치 이동"); + + //비젼이 읽혀지지 않다면 안전위치로 이동시킨다. + //PUB.log.AddAT("비젼이 읽히지 않은 경우에만 리딩위치로 이동시켜준다"); + + //완료되지않았다면 비켜준다 220920 + if (PUB.Result.ItemDataC.VisionData.Confirm == false) + { + + if (PickerRetryCount == 0) //처음작업이다 + { + sPositionData Pos; + if (target == eWorkPort.Left) + { + //우측을 사용하지 않으면 좌측으로 이동한다 + if (PUB.flag.get(eVarBool.FG_ENABLE_RIGHT) == false) Pos = MOT.GetPXPos(ePXLoc.READYR); + else Pos = MOT.GetPXPos(ePXLoc.READYL); + } + else + { + //우측이나 좌측을 사용하지 않으면 좌측으로 이동한다 + if (PUB.flag.get(eVarBool.FG_ENABLE_LEFT) == false) Pos = MOT.GetPXPos(ePXLoc.READYL); + else Pos = MOT.GetPXPos(ePXLoc.READYR); + } + + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.log.AddAT($"###### Initial work avoidance movement completed ({target})"); + } + else + { + //재시도 작업이므로 잡아서 79도 돌리는 작업 한다 + if (PICKER_RETRY(target, eSMStep.RUN_PICK_RETRY) == false) return false; + PUB.sm.seq.Clear(eSMStep.RUN_PICK_RETRY); + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 픽온작업용 시퀀스값 초기화 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + VAR.BOOL[eVarBool.wait_for_keyence] = true; + if (target == eWorkPort.Left) + { + PUB.sm.seq.Clear(eSMStep.RUN_KEYENCE_READ_L); + PUB.Result.ItemDataL.Clear(funcName); + VAR.BOOL[eVarBool.wait_for_keyenceR] = false; + VAR.BOOL[eVarBool.wait_for_keyenceL] = true; + } + else + { + PUB.sm.seq.Clear(eSMStep.RUN_KEYENCE_READ_R); + PUB.Result.ItemDataR.Clear(funcName); + VAR.BOOL[eVarBool.wait_for_keyenceL] = false; + VAR.BOOL[eVarBool.wait_for_keyenceR] = true; + } + + //키엔스데이터 기다리는중 + VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 키엔스바코드 확인 작업 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + EResultKeyence Complete = EResultKeyence.Wait; + if (target == eWorkPort.Left) + Complete = KEYENCE_READ(target, eSMStep.RUN_KEYENCE_READ_L); + else + Complete = KEYENCE_READ(target, eSMStep.RUN_KEYENCE_READ_R); + + if (Complete == EResultKeyence.Wait) + { + //읽을수있도록 좌표를 이동시켜준다 + sPositionData Pos; + if (target == eWorkPort.Left) + { + //우측을 사용하지 않으면 좌측으로 이동한다 + if (PUB.flag.get(eVarBool.FG_ENABLE_RIGHT) == false) Pos = MOT.GetPXPos(ePXLoc.READYR); + else Pos = MOT.GetPXPos(ePXLoc.READYL); + } + else + { + //우측이나 좌측을 사용하지 않으면 좌측으로 이동한다 + if (PUB.flag.get(eVarBool.FG_ENABLE_LEFT) == false) Pos = MOT.GetPXPos(ePXLoc.READYL); + else Pos = MOT.GetPXPos(ePXLoc.READYR); + } + + //sPositionData Pos = target == eWorkPort.Left ? MOT.GetPXPos(ePXLoc.READYL) : MOT.GetPXPos(ePXLoc.READYR); + if (MOT.getPositionMatch(Pos) == false) + { + PUB.log.AddAT($"######Avoidance movement II due to no vision data({target})"); + MOT.Move(Pos); + } + return false; + } + else if (Complete == EResultKeyence.MultiSID) + { + //이미 사용자 확인창 + if (PUB.flag.get(eVarBool.FG_WAIT_INFOSELECT)) + { + //아무것도 하지 않는다 + //사용자가 정보를 설정하는 중 + } + else { + + //사용자사 해당 창을 닫았다. + if (VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] == true & PUB.Result.ItemDataC.VisionData.SID.isEmpty()) + { + //사용자가 창을 닫았고 SID값이 없다면 오류 처리한다. + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOTSELECTMULTISID, eNextStep.PAUSE); + VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = false; + } + else + { + bool SHowUserFormINF = true; + + //사용자 확인창을 표시한다 + if (SHowUserFormINF) //다중SID정보 선택건 + { + this.Invoke(new Action(() => + { + PUB.log.Add("Calling user selection window (INF)"); + var f = new Dialog.fSelectSIDInformation(); + f.Show(); + })); + } + } + + } + return false; + } + else if (Complete == EResultKeyence.TimeOut) + { + //이미 사용자 확인창 + if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO)) + { + //아무것도 하지 않는다 + //사용자가 정보를 설정하는 중 + } + else + { + //반복시도횟수가 설정되지 않았거나 최대를 초과하면 사용자 확인창을 띄운다 + bool ShowUserFormBCD = false; + if (AR.SETTING.Data.RetryPickOnMaxCount == 0) + { + PUB.log.Add($"Showing user confirmation window due to no pick-on retry count"); + ShowUserFormBCD = true; + } + else if (AR.VAR.I32[AR.eVarInt32.PickOnRetry] >= AR.SETTING.Data.RetryPickOnMaxCount) + { + PUB.log.Add($"Pick-on retry count exceeded (Max: {AR.SETTING.Data.RetryPickOnMaxCount})"); + ShowUserFormBCD = true; + } + else + { + if (VAR.BOOL[eVarBool.Need_UserConfirm_Data]) + { + PUB.log.Add($"Need to show user confirmation window"); + ShowUserFormBCD = true; + } + else + { + //읽은데이터가 atkstandard라면 바로 팝업을 띄운다 + if (PUB.Result.ItemDataC.VisionData.SID.isEmpty() || PUB.Result.ItemDataC.VisionData.SID_Trust == false) + { + PUB.log.Add($"Retrying pick-on ({AR.VAR.I32[AR.eVarInt32.PickOnRetry]}/{AR.SETTING.Data.RetryPickOnMaxCount})"); + ShowUserFormBCD = false; + } + else + { + PUB.log.Add($"SID value exists, showing user confirmation window instead of retrying"); + ShowUserFormBCD = true; + } + } + } + if (ShowUserFormBCD) + { + this.Invoke(new Action(() => + { + var itemC = PUB.Result.ItemDataC; + PUB.log.Add("Calling user confirmation window"); + var f = new Dialog.fLoaderInfo(itemC.VisionData.bcdMessage); + f.Show(); + })); + } + else + { + //픽온재시도 + PUB.sm.seq.Clear(eSMStep.RUN_PICK_RETRY); + VAR.I32[eVarInt32.PickOnRetry] += 1;//, 1); + VAR.BOOL[eVarBool.JOB_PickON_Retry] = true; + + PUB.log.Add($"Pick-on retry ({VAR.I32[eVarInt32.PickOnRetry]})"); + PUB.sm.seq.Update(cmdIndex, -2); + } + } + return false; + } + + //키엔스대기상태를 설정해준다 + VAR.BOOL[eVarBool.wait_for_keyence] = false; + if (target == eWorkPort.Left) VAR.BOOL[eVarBool.wait_for_keyenceL] = false; + else VAR.BOOL[eVarBool.wait_for_keyenceR] = false; + + PUB.Result.ItemDataC.VisionData.ReelSize = DIO.getCartSize(1); + PUB.log.AddI($"[{target}] Keyence verification completed (Size: {PUB.Result.ItemDataC.VisionData.ReelSize})"); + PUB.log.AddI($"[{target}] Print Position:{PUB.Result.ItemDataC.VisionData.PrintPositionData}"); + + + //픽온작업용 시퀀스값 초기화 + if (target == eWorkPort.Left) + { + //프린트Z축을 픽온위치에둔다. + var PosLM = MOT.GetLZPos(eLZLoc.PICKON); + MOT.Move(PosLM); + PUB.sm.seq.Clear(eSMStep.RUN_PICKER_ON_L); + PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_F); + PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_F); + //PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_F); + PUB.Result.ItemDataC.CopyTo(ref PUB.Result.ItemDataL); + PUB.log.Add($"[{target}] Vision data copy (C->L) ID:{PUB.Result.ItemDataL.VisionData.RID}"); + } + else + { + var PosRM = MOT.GetRZPos(eRZLoc.PICKON); + MOT.Move(PosRM); + PUB.sm.seq.Clear(eSMStep.RUN_PICKER_ON_R); + PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_R); + PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_R); + //PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_R); + PUB.Result.ItemDataC.CopyTo(ref PUB.Result.ItemDataR); + PUB.log.Add($"[{target}] Vision data copy (C->R) ID:{PUB.Result.ItemDataR.VisionData.RID}"); + } + + //트리거 OFF + System.Threading.Tasks.Task.Run(() => + { + if (PUB.keyenceF != null) PUB.keyenceF.Trigger(false); + if (PUB.keyenceR != null) PUB.keyenceR.Trigger(false); + }); + + + PUB.log.Add($"[{target}] Print Pos={item.VisionData.PrintPositionData}"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 릴아이디 사용 체크 221107 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //만약 현재의 바코드가 이전바코드와 동일하다면 오류로 처리한다. + var pre_ridN = VAR.STR[eVarString.PrePick_ReelIDNew].Trim(); + var pre_ridO = VAR.STR[eVarString.PrePick_ReelIDOld].Trim(); + var pre_targ = VAR.STR[eVarString.PrePick_ReelIDTarget].ToUpper().Trim(); + + var cur_ridN = target == eWorkPort.Left ? PUB.Result.ItemDataL.VisionData.RID : PUB.Result.ItemDataR.VisionData.RID.Trim(); + var cur_ridO = target == eWorkPort.Left ? PUB.Result.ItemDataL.VisionData.RID0 : PUB.Result.ItemDataR.VisionData.RID0.Trim(); + + if (OPT_BYPASS) + { + PUB.log.Add($"Bypass mode - skipping previous reel ID check"); + } + else + { + if (pre_ridN.isEmpty() == false) //일단 무조건 신규아이디가 있어야한다 + { + + //이전과 동일한 ID를 처리했다 오류, 스카이웍스는 본래의 ID를 사용하므로 이곳에서 걸린다 + if (pre_ridN.Equals(cur_ridN)) + { + if (pre_targ == "LEFT") + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.PRE_USE_REELID_L, eNextStep.ERROR, target, pre_ridN, cur_ridN); + else + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.PRE_USE_REELID_R, eNextStep.ERROR, target, pre_ridN, cur_ridN); + } + else + { + PUB.log.Add($"New ID usage check OK PRE={pre_ridN},NEW={cur_ridN}"); + + if (pre_ridO.isEmpty() == false && cur_ridO.isEmpty() == false) //구형아이디는 둘다 값이 있을때 처리한다. + { + if (pre_ridO.Equals(cur_ridO)) + { + if (pre_targ == "LEFT") + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.PRE_USE_REELID_L, eNextStep.ERROR, target, pre_ridO, cur_ridO); + else + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.PRE_USE_REELID_R, eNextStep.ERROR, target, pre_ridO, cur_ridO); + } + else PUB.log.Add($"New ID usage check (ORG) OK PRE={pre_ridO},NEW={cur_ridO}"); + } + else + { + PUB.log.Add($"New ID usage check (ORG) SKIP (NO DATA) PRE={pre_ridO},NEW={cur_ridO}"); + } + } + } + else + { + PUB.log.Add($"First work - skipping previous reel ID check"); + } + + VAR.STR[eVarString.PrePick_ReelIDNew] = cur_ridN; + VAR.STR[eVarString.PrePick_ReelIDOld] = cur_ridO; + VAR.STR[eVarString.PrePick_ReelIDTarget] = target.ToString(); + + PUB.log.Add($"Previous work reel ID set values N={cur_ridN},O={cur_ridO}"); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### bypass check 230510 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + + + //컨베이어모드에서는 좌측 센서에 릴이 있다면 대기해야한다. 230829 + if (CVMode) + { + if (target == eWorkPort.Left) + { + if (DIO.GetIOInput(eDIName.L_CONV1)) return false; + //혹은 컨베이어 가동시간이 5초전이라면 넘어간다 230926 + if (VAR.I32[eVarInt32.LEFT_ITEM_COUNT] > 0) return false; + //{ + // var cvrun = VAR.DBL[eVarDBL.LEFT_ITEM_PICKOFF]; + // if (cvrun < 6) return false; + //} + } + else + { + if (DIO.GetIOInput(eDIName.R_CONV1)) return false; + //혹은 컨베이어 가동시간이 5초전이라면 넘어간다 230926 + if (VAR.I32[eVarInt32.RIGT_ITEM_COUNT] > 0) return false; + //{ + // var cvrun = VAR.DBL[eVarDBL.RIGT_ITEM_PICKOFF]; + // if (cvrun < 6) return false; + //} + } + PUB.log.Add($"Conveyor empty in CV MODE (SEQ)"); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### PICKER ON + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool Complete = false; + if (target == eWorkPort.Left) + { + if (PRINTER(target, eSMStep.RUN_PRINTER_F)) + PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_F); + Complete = PICKER_ON(target, eSMStep.RUN_PICKER_ON_L); + } + else + { + if (PRINTER(target, eSMStep.RUN_PRINTER_R)) + PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_R); + Complete = PICKER_ON(target, eSMStep.RUN_PICKER_ON_R); + } + + if (Complete == false) return false; + //PUB.log.Add($"[{target}] 피커 ON 작업 완료"); + VAR.I32.Clear((int)eVarInt32.PickOnRetry); + + //픽온작업용 시퀀스값 초기화 + if (target == eWorkPort.Left) + { + PUB.sm.seq.Clear(eSMStep.RUN_PICKER_OFF_L); + //PUB.Result.ItemData[1].CopyTo(ref PUB.Result.ItemData[0]); + PUB.log.Add($"Barcode data copy (LEFT)"); + + PUB.flag.set(eVarBool.FG_BUSY_LEFT, true, funcName); + //프린터용 AIR처리해준다. + DIO.SetPrintLVac(ePrintVac.inhalation); + DIO.SetPrintLAir(true); + //PUB.Result.ItemData[1].UpdateTo(ref PUB.Result.ItemData[0]); + } + else + { + PUB.sm.seq.Clear(eSMStep.RUN_PICKER_OFF_R); + //PUB.Result.ItemData[1].CopyTo(ref PUB.Result.ItemData[0]); + PUB.log.Add($"Barcode data copy (RIGHT)"); + + PUB.flag.set(eVarBool.FG_BUSY_RIGHT, true, funcName); + //프린터용 AIR처리해준다. + DIO.SetPrintRVac(ePrintVac.inhalation); + DIO.SetPrintRAir(true); + //PUB.Result.ItemData[1].UpdateTo(ref PUB.Result.ItemData[2]); + } + + PUB.Result.ItemDataC.Clear($"[{target}] Pick-on completed"); //Clear after transmission + + KeyenceBarcodeDataF = string.Empty; + KeyenceBarcodeDataR = string.Empty; + //PUB.log.AddAT($"바코드데이터 삭제(CENTER)"); + + //다음데이터를 읽을 수 있도록 트리거를 전송한다 + System.Threading.Tasks.Task.Run(() => + { + if (PUB.keyenceF != null) PUB.keyenceF.Trigger(true); + if (PUB.keyenceR != null) PUB.keyenceR.Trigger(true); + }); + + //Keyence_Trigger(true); + + //SID목록을 저장한다 231005 + + string sid, prn; sid = prn = ""; + if (target == eWorkPort.Left) + { + sid = PUB.Result.ItemDataL.VisionData.SID; + prn = PUB.Result.ItemDataL.VisionData.PrintPositionData; + } + else + { + sid = PUB.Result.ItemDataR.VisionData.SID; + prn = PUB.Result.ItemDataR.VisionData.PrintPositionData; + } + + if (sid.isEmpty() == false) + { + if (PUB.Result.PrintPostionList.ContainsKey(sid) == false) + { + PUB.Result.PrintPostionList.Add(sid, prn); + PUB.log.AddAT($"Print position saved SID:{sid} = {prn}"); + } + else + { + var predata = PUB.Result.PrintPostionList[sid]; + if (predata != prn) + { + PUB.log.AddAT($"Print position save value changed SID:{sid} = {predata} -> {prn}"); + PUB.Result.PrintPostionList[sid] = prn; + } + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### PICKER OFF + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool Complete = false; + if (target == eWorkPort.Left) + { + if (PRINTER(target, eSMStep.RUN_PRINTER_F)) + PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_F); + Complete = PICKER_OFF(target, eSMStep.RUN_PICKER_OFF_L); + } + else + { + if (PRINTER(target, eSMStep.RUN_PRINTER_R)) + PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_R); + Complete = PICKER_OFF(target, eSMStep.RUN_PICKER_OFF_R); + } + + if (Complete == false) return false; + + //PUB.log.Add($"[{target}] 피커 OFF 작업 완료"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 피커위치로 이동시키고 권한을 넘겨준다 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + + //프린터와 pickoin 작업을 진행한다 + if (target == eWorkPort.Left) + { + if (PRINTER(target, eSMStep.RUN_PRINTER_F)) + PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_F); + } + else + { + if (PRINTER(target, eSMStep.RUN_PRINTER_R)) + PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_R); + } + + //X축 중앙으로 이동 + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + if (target == eWorkPort.Left && PUB.flag.get(eVarBool.FG_ENABLE_RIGHT) == false) + Pos = MOT.GetPXPos(ePXLoc.READYR); //우측이 꺼져잇다면 바코드 읽도록 우측으로 비켜준다 + if (target == eWorkPort.Right && PUB.flag.get(eVarBool.FG_ENABLE_LEFT) == false) + Pos = MOT.GetPXPos(ePXLoc.READYL); //좌측이 꺼져있다면 바코드 읽도록 좌측으로 비켜준다 + + + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + + //X축을 놓아준다 + LockPK.Set(); + hmi1.RemoveLockItem((int)target, "LD-FRONT"); + PUB.logDbg.Add($"[{target}] X축 권한 해제"); + PUB.mot.ClearPosition((int)eAxis.Z_THETA); + + //if (target == eWorkShuttle.Left) + // PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_F); + //else + // PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_R); + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 프린터 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool Complete = false; + if (target == eWorkPort.Left) + Complete = PRINTER(target, eSMStep.RUN_PRINTER_F); + else + Complete = PRINTER(target, eSMStep.RUN_PRINTER_R); + if (Complete == false) return false; + + //PUB.log.Add($"[{target}] 프린터 작업 완료"); + + //if (target == eWorkShuttle.Left) + // PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_F); + //else + // PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_ON_R); + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 프린터 PICK ON + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool Complete = false; + if (target == eWorkPort.Left) + Complete = PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_F); + else + Complete = PRINTER_ON(target, eSMStep.RUN_PRINTER_ON_R); + if (Complete == false) return false; + + //PUB.log.Add($"[{target}] 프린터 ON 작업 완료"); + + if (target == eWorkPort.Left) + { + PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_F); + DIO.SetPrintLAir(false); + } + else + { + PUB.sm.seq.Clear(eSMStep.RUN_PRINTER_OFF_R); + DIO.SetPrintRAir(false); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 프린터 PICK OFF + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool Complete = false; + if (target == eWorkPort.Left) + Complete = PRINTER_OFF(target, eSMStep.RUN_PRINTER_OFF_F); + else + Complete = PRINTER_OFF(target, eSMStep.RUN_PRINTER_OFF_R); + if (Complete == false) return false; + + //PUB.log.Add($"[{target}] 프린터 OFF 작업 완료"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 프린터(Y,Z) 안전위치로 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + sPositionData PosZ; + if (target == eWorkPort.Left) + { + PosZ = MOT.GetLZPos(eLZLoc.READY); + } + else + { + PosZ = MOT.GetRZPos(eRZLoc.READY); + } + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + + //카메라를 사용한다면 검증해야하니 컨베이어를 멈춘다 + if (OPT_CameraOff == false) + { + if (target == eWorkPort.Left) + PUB.iLockCVL.set((int)eILockCV.VISION, true, funcName); + else + PUB.iLockCVR.set((int)eILockCV.VISION, true, funcName); + } + + + //Z가 올라갔으니 컨베이어를 돌려도된다 + if (CVMode) + { + //카메라를 사용하지 않는다면 바로 OFF 한다 + if (VAR.BOOL[eVarBool.Opt_DisableCamera] == false) + { + if (target == eWorkPort.Left) + PUB.iLockCVL.set((int)eILockCV.BUSY, false, funcName); + else + PUB.iLockCVR.set((int)eILockCV.BUSY, false, funcName); + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 실리더 원위치 이동시킨다 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (target == eWorkPort.Left) + { + DIO.SetOutput(eDOName.PRINTL_FWD, false); + } + else + { + DIO.SetOutput(eDOName.PRINTR_FWD, false); + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (target == eWorkPort.Left) + { + if (DIO.checkDigitalO(eDIName.L_PICK_BW, seqTime, true) != eNormalResult.True) return false; + } + else + { + if (DIO.checkDigitalO(eDIName.R_PICK_BW, seqTime, true) != eNormalResult.True) return false; + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 프린터(Y,Z) 안전위치로 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + sPositionData PosY, PosZ; + if (target == eWorkPort.Left) + { + PosY = MOT.GetLMPos(eLMLoc.READY); + PosZ = MOT.GetLZPos(eLZLoc.READY); + PUB.sm.seq.Clear(eSMStep.RUN_QRVALID_F); + } + else + { + PosY = MOT.GetRMPos(eRMLoc.READY); + PosZ = MOT.GetRZPos(eRZLoc.READY); + PUB.sm.seq.Clear(eSMStep.RUN_QRVALID_R); + } + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + if (MOT.CheckMotionPos(seqTime, PosY, funcName) == false) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### QR코드 검증 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool Complete = false; + + if (OPT_CameraOff) //카메라사용하지 않음 + { + PUB.log.Add($"QR Validation SKIP:{target} - Camera Off"); + Complete = true; + item.PrintQRValidResult = "SKIP"; + + + //var sendok = WS_Send(target, WS, item.guid, "TRIG", item.VisionData.PrintQRData); + } + else + { + if (target == eWorkPort.Left) + Complete = QR_VALIDATION(target, eSMStep.RUN_QRVALID_F); + else + Complete = QR_VALIDATION(target, eSMStep.RUN_QRVALID_R); + } + if (Complete == false) return false; + PUB.log.Add($"QR Validation Complete:{target}"); + + //작업이완료되었다 + if (target == eWorkPort.Left) + { + PUB.iLockCVL.set((int)eILockCV.BUSY, false, funcName); + PUB.iLockCVL.set((int)eILockCV.VISION, false, funcName); + WS_Send(eWorkPort.Left, PUB.wsL, "", "OFF", ""); + } + else + { + PUB.iLockCVR.set((int)eILockCV.BUSY, false, funcName); + PUB.iLockCVR.set((int)eILockCV.VISION, false, funcName); + WS_Send(eWorkPort.Right, PUB.wsR, "", "OFF", ""); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 결과업데이트(22/07/07) + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + item.JobEnd = DateTime.Now; + + //전송한다 + var reelsize = "0"; + if (item.VisionData.ReelSize == eCartSize.Inch7) reelsize = "7"; + else if (item.VisionData.ReelSize == eCartSize.Inch13) reelsize = "13"; + var reelinfo = new + { + AMKOR_SID = item.VisionData.SID,// tbsid.Text, + AMKOR_BATCH = item.VisionData.BATCH,// tbbatch.Text, + LABEL_ID = item.VisionData.RID,// tbrid.Text, + LABEL_VENDOR_LOT = item.VisionData.VLOT,// tblot.Text, + LABEL_AMKOR_SID = item.VisionData.SID,// tbsid.Text, + LABEL_QTY = item.VisionData.QTY,// tbqty.Text, + LABEL_MANUFACTURER = item.VisionData.VNAME,// tbvname.Text, + LABEL_PRODUCTION_DATE = item.VisionData.MFGDATE,// tbmfg.Text, + LABEL_INCH_INFO = reelsize,// tbinch.Text, + LABEL_PART_NUM = item.VisionData.PARTNO,// tbpart.Text, + EQP_ID = AR.SETTING.Data.McName,// tbeqid.Text, + EQP_NAME = $"Auto Label Attach {SETTING.Data.McName}", + BADGE = string.Empty, + OPER_NAME = string.Empty, + CPN = item.VisionData.MCN, + TARGET = item.VisionData.Target, + }; + + bool rlt = false; + string errmsg = string.Empty; + //var systembypassmode = SETTING PUB.Result.vModel.Title.Equals("BYPASS"); CVMode == true && + if (SETTING.Data.SystemBypass == false) + { + rlt = PUB.UpdateWMS(item.VisionData); //rlt = Amkor.RestfulService.Inbound_label_attach_reel_info(reelinfo, out errmsg); + PUB.log.AddE("WMS transmission " + (rlt ? "success" : "failed") + $": {errmsg}"); + if (rlt == false) //230927 - 오류발생시 + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.INBOUNDWEBAPIERROR, eNextStep.PAUSE, target, errmsg); + return false; ; + } + } + else + { + errmsg = "bypass"; + rlt = false; + PUB.log.AddAT($"WMS save disabled due to System bypass"); + } + if (errmsg.Length > 190) errmsg = errmsg.Substring(0, 190); //230810 maxlength error + SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), (rlt ? "OK" : errmsg), "root_sequence"); + //RefreshList(); //목록업데이트 + //EEMStatus.AddStatusCount(1, $"{item.VisionData.SID}|{item.VisionData.RID}"); //eem 추가 230620 + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 다시`` 처음으로 이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.StatusMessage.set(msgType, $"[{target}] 전체작업완료 초기화"); + UserStepWait(target); + + item.Clear($"{target}:{funcName}"); + if (target == eWorkPort.Left) + { + PUB.flag.set(eVarBool.FG_BUSY_LEFT, false, funcName); + } + else + { + PUB.flag.set(eVarBool.FG_BUSY_RIGHT, false, funcName); + } + + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + PUB.log.AddI($"[{target}] Work completed"); + PUB.sm.seq.Clear(cmdIndex); + return true; + } + + PUB.sm.seq.Clear(cmdIndex); + return true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/3_KEYENCE_READ.cs b/Handler/Project/RunCode/RunSequence/3_KEYENCE_READ.cs new file mode 100644 index 0000000..e6a8909 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/3_KEYENCE_READ.cs @@ -0,0 +1,405 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using AR; +using Project.Class; + +namespace Project +{ + public partial class FMain + { + public enum EResultKeyence + { + Wait = 0, + Complete, + TimeOut, + MultiSID, + Nothing, + } + public EResultKeyence KEYENCE_READ(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var itemC = PUB.Result.ItemDataC; + if (PUB.sm.getNewStep != eSMStep.RUN) return EResultKeyence.Wait; + //var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + + //데이터가 완료되었는지 확인 + if (itemC.VisionData.Confirm) + { + PUB.log.AddAT("Removing barcode messages due to vision data completion"); + itemC.VisionData.bcdMessage.Clear(); + return EResultKeyence.Complete; + } + + //사용자 입력 대기중이면 아에 처리하지 않는다 210203 + if (PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO) == true) + { + PUB.WaitMessage[1] = "Wait for User Confirm Interface"; + return EResultKeyence.Wait; + } + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (PUB.Result.DryRun) + { + PUB.log.Add($"[{target}] Completed due to DRY-RUN"); + SetDryrunData(); + } + else + { + PUB.logDbg.Add($"[{target}] Keyence reading started"); + if (PUB.keyenceF != null) PUB.keyenceF.Trigger(true); + if (PUB.keyenceR != null) PUB.keyenceR.Trigger(true); + } + + VAR.BOOL[eVarBool.Need_UserConfirm_Data] = false; + VAR.STR[eVarString.MULTISID_FIELDS] = string.Empty; + VAR.STR[eVarString.MULTISID_QUERY] = string.Empty; + VAR.TIME.Update(eVarTime.KEYENCEWAIT); + PUB.sm.seq.Update(cmdIndex); + return EResultKeyence.Wait; + } + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //아무것도안함 + PUB.sm.seq.Update(cmdIndex); + return EResultKeyence.Wait; + } + + //#################################################### + //### 키엔스데이터를 처리해준다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + bool vQtyOK = false; + var vdata = itemC.VisionData; + //동작중이아니라면 처리하지 않음 + if (PUB.sm.getNewStep != eSMStep.RUN) return EResultKeyence.Wait; + + //바이패스라면 무조건ok한다. + var systembypassmode = SETTING.Data.SystemBypass; + if (systembypassmode && PUB.flag.get(eVarBool.FG_RDY_PORT_PC)) + { + vdata.SetRID("BP" + DateTime.Now.ToString("yyyyMMddHHmmss"), "bp"); + vdata.SID = ("100000000"); + vdata.VNAME = "BYPASS"; + vdata.MFGDATE = DateTime.Now.ToString("yyyy-MM-dd"); + vdata.VLOT = "BYPASS"; + vdata.CUSTCODE = "0000"; + vdata.CUSTNAME = "BYPASS"; + vdata.QTY = "10000"; + vdata.ConfirmUser = true; + vdata.PrintPositionData = "1"; + vdata.PrintPositionCheck = true; + vdata.MFGDATE_Trust = true; + vdata.PARTNO_Trust = true; + vdata.QTY_Trust = true; + vdata.RID_Trust = true; + vdata.SID_Trust = true; + vdata.VLOT_Trust = true; + vdata.VNAME_Trust = true; + return EResultKeyence.Complete; + } + + //로더정보를 사용자가 처리중이면 동작 안함 + if (VAR.BOOL[eVarBool.FG_WAIT_LOADERINFO]) return EResultKeyence.TimeOut; + + //다중SID환경에서 데이터를 선택하고 있다. + if (VAR.BOOL[eVarBool.FG_WAIT_INFOSELECT]) return EResultKeyence.Wait; + + //데이터 처리 시간을 넘어서면 사용자 확인 창을 띄운다 220621 + var ts = VAR.TIME.RUN((int)eVarTime.KEYENCEWAIT); + if (VAR.BOOL[eVarBool.FG_RDY_PORT_PC] && ts.TotalMilliseconds > AR.SETTING.Data.Timeout_VisionProcessL) + { + //화면업데이트를 종료한다 + if (PUB.keyenceF != null) PUB.keyenceF.Trigger(false); + if (PUB.keyenceR != null) PUB.keyenceR.Trigger(false); + + //이미지저장용 작업시작 + var tempfileF = System.IO.Path.Combine(UTIL.CurrentPath, "Temp", "Image", DateTime.Now.ToString("yyyMMddHhmmss_fff" + "F.bmp")); + var tempfileR = System.IO.Path.Combine(UTIL.CurrentPath, "Temp", "Image", DateTime.Now.ToString("yyyMMddHhmmss_fff" + "R.bmp")); + var tempfiF = new System.IO.FileInfo(tempfileF); + var tempfiR = new System.IO.FileInfo(tempfileR); + if (tempfiF.Directory.Exists == false) tempfiF.Directory.Create(); + if (tempfiR.Directory.Exists == false) tempfiR.Directory.Create(); + + //마지막 사진을 추출한다 + var CurImageF = PUB.keyenceF.SaveImage(tempfiF.FullName); + var CurImageR = false; + if (PUB.keyenceR != null) CurImageR = PUB.keyenceR.SaveImage(tempfiR.FullName); + + PUB.keyenceF.Trigger(true); + PUB.keyenceR.Trigger(true); + return EResultKeyence.TimeOut; + } + + + var prcResult = BCDProcess_ALL(itemC, "SEQ", true); + if (prcResult != EResultKeyence.Nothing) + return prcResult; + + PUB.sm.seq.Update(cmdIndex); + return EResultKeyence.Wait; + } + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.sm.seq.Update(cmdIndex); + return EResultKeyence.Wait; + } + + PUB.sm.seq.Clear(cmdIndex); + return EResultKeyence.Complete; + } + + /// + /// 데이터입력이 완료되었는지 확인 합니다 + /// + /// + /// + /// + void CheckDataComplte(Class.JobData item, string Source, bool mainjob) + { + Boolean NeedConfirm = false; + //var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + var OPT_BYPASS = SETTING.Data.SystemBypass;// Jobtype == "BP"; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + var CustomerCode = VAR.STR[eVarString.JOB_CUSTOMER_CODE]; + if (item.VisionData.Confirm) + { + //사용자에의해 완성된 자료는 완료된 자료이다 + if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear(); + return; + } + + //처음작업이면 반드시 확인을 한다 + if (OPT_BYPASS == false && PUB.Result.JobFirst) + { + //사용자확인이 필요없는 상태라면 활성화해준다 + //프린트를 하지 않는다면 처리하지 않는다. + if (VAR.BOOL[eVarBool.Opt_DisablePrinter] == false) + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(6) == false) item.VisionData.bcdMessage.Add(6, "First reel confirmation required"); + NeedConfirm = true; + } + } + + //서버의수량업데이트기능 + if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_ServerQty]) + { + //수량원본이 없는 경우 + if (item.VisionData.QTY0.isEmpty()) + { + string msg = "Server quantity update feature is not applicable to WMS, contact developer if needed"; + var cnt = 0;// (int)(Amkor.RestfulService.get_stock_count(item.VisionData.RID, out msg)); + if (mainjob) + { + PUB.log.AddE("Server quantity update feature is not applicable to WMS, contact developer if needed"); + } + if (cnt > 0) + { + //새로받은 데이터를 실제 수량에 추가한다 + item.VisionData.QTY0 = item.VisionData.QTY; + item.VisionData.QTY = cnt.ToString(); + if (mainjob) PUB.log.Add($"Server quantity update RID:{item.VisionData.RID} Old:{item.VisionData.QTY}, New:{cnt}"); + } + else + { + if (mainjob) PUB.log.AddE($"Quantity update failed rID:{item.VisionData.RID}, Message={msg}"); + NeedConfirm = true; + if (mainjob && item.VisionData.bcdMessage.ContainsKey(1) == false) + item.VisionData.bcdMessage.Add(1, "Quantity update failed"); + } + } + } + + //수량입력 210708 + if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_UserQtyRQ]) + { + if (item.VisionData.QTYRQ && item.VisionData.QTY.isEmpty() == false) + { + //RQ값이 이전 값이 오기도 하니 바코드 목록에서 값을 다시 써준다. 210825 + var rqBcd = PUB.Result.ItemDataC.VisionData.barcodelist.Where(t => t.Value.Data.StartsWith("RQ")).FirstOrDefault(); + if (rqBcd.Value != null) + { + var newqty = rqBcd.Value.Data.Substring(2).Trim(); + if (mainjob) PUB.log.Add($"Quantity update (01) {item.VisionData.QTY}->{newqty}"); + item.VisionData.QTY = newqty; + if (mainjob) PUB.log.AddI("Manual quantity input mode but RQ value confirmed, no user confirmation required"); + } + else + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(2) == false) item.VisionData.bcdMessage.Add(2, "RQ value error (auto mode not possible)"); + NeedConfirm = true; + } + } + else + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(3) == false) item.VisionData.bcdMessage.Add(3, "Manual quantity input required"); + NeedConfirm = true; + } + } + + + //프린트위치확인 + BCDProcess_BCDPrint(item); + if (item.VisionData.PrintPositionData.isEmpty() == true || item.VisionData.PrintPositionCheck == false) + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(4) == false) item.VisionData.bcdMessage.Add(4, "Attachment position not found"); + NeedConfirm = true; + } + + //SID 존재여부 확인 + if (OPT_BYPASS == false && item.VisionData.SID_Trust && VAR.BOOL[eVarBool.Opt_CheckSIDExist]) + { + //ECS목록에 데이터가 업다면 오류로 처리한다 + var SID = item.VisionData.SID; + var ta = new DataSet1TableAdapters.QueriesTableAdapter(); + var exist = ta.CheckSIDExist(SID) > 0; + PUB.log.Add($"SID Exist Check SID:{item.VisionData.SID},Result={exist}"); + if (exist == false) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOSIDINFOFROMDB, eNextStep.PAUSE, SID); + return; + } + } + + //sid변환기능확인 + var SIDOK = false; + if (OPT_BYPASS == false && + VAR.BOOL[eVarBool.Opt_SIDConvert] && + PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO) == false && + VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] == false) + { + //시드값이 유효한지 확인한다. + SIDOK = item.VisionData.SID_Trust && item.VisionData.SID0.isEmpty() == false && item.VisionData.SID.isEmpty() == false; + } + else SIDOK = (item.VisionData.SID_Trust && item.VisionData.SID.isEmpty() == false); //시드변환을 사용하지 않으므로 시드값여부에따라 다르다 + + //수량확인 + if (OPT_BYPASS == false) + { + if(double.TryParse(item.VisionData.QTY,out double qtyvalue)==false) + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(8) == false) item.VisionData.bcdMessage.Add(8, "Qty invalid"); + NeedConfirm = true; + } + } + + + //사용자확인이 필요한 옵션이라면 사용한다 + if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_UserConfim]) + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(5) == false) item.VisionData.bcdMessage.Add(5, "User confirmation required"); + NeedConfirm = true; + } + + + + + //변환작업인데 원본 값이 없다. + //혹은 변환값과 원본이 같다 + if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Opt_SIDConvert] && (item.VisionData.SID0.isEmpty() == true || item.VisionData.SID0 == item.VisionData.SID)) + { + if (mainjob && item.VisionData.bcdMessage.ContainsKey(7) == false) item.VisionData.bcdMessage.Add(7, "SID conversion value confirmation required"); + NeedConfirm = true; + } + + //데이터의 신뢰성을 확인하고 모두 입력되었다면 자동 확정을 진행한다 + if (item.VisionData.MFGDATE_Trust && + item.VisionData.PARTNO_Trust && + item.VisionData.QTY_Trust && + item.VisionData.RID_Trust && + item.VisionData.SID_Trust && + SIDOK && item.VisionData.VLOT_Trust && + item.VisionData.VNAME_Trust) + { + //데이터를 확정짓는다 다만 화면을 표시하지 않아야하는 경우에만 처리해준다 + if (NeedConfirm == false) + { + if (OPT_BYPASS) + { + PUB.log.Add("All data confirmed, proceeding with automatic confirmation (bypass mode)"); + if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear(); + item.VisionData.ConfirmBypass = true; + } + else if (item.VisionData.ConfirmAuto == false) + { + PUB.log.Add("All data confirmed, proceeding with automatic confirmation"); + if (item.VisionData.bcdMessage.Count > 0) item.VisionData.bcdMessage.Clear(); + item.VisionData.ConfirmAuto = true; + } + } + } + else if (item.VisionData.QRInputRaw.isEmpty() == false) + { + if (mainjob) + { + NeedConfirm = true; + PUB.log.AddAT($"Data incomplete but QR has been read, showing confirmation window immediately"); + } + } + + //확인창을 띄우기 위해 Timeout 오류를 발생시킨다. + VAR.BOOL[eVarBool.Need_UserConfirm_Data] = NeedConfirm; + if (NeedConfirm) + { + if (mainjob) + { + var newtime = DateTime.Now.AddMilliseconds(-AR.SETTING.Data.Timeout_VisionProcessL); + VAR.TIME.Set(eVarTime.KEYENCEWAIT, newtime); + } + } + else if (PUB.Result.ItemDataC.VisionData.ConfirmAuto == false) + { + PUB.logDbg.Add($"Vision automatic confirmation processing {Source}"); + PUB.Result.ItemDataC.VisionData.ConfirmAuto = true; + } + + } + + List warninactivelist = new List(); + private void SetDryrunData() + { + var item = PUB.Result.ItemDataC; + PUB.log.AddAT("Dry run basic data input"); + if (item.VisionData.QTY.isEmpty()) item.VisionData.QTY = DateTime.Now.ToString("HHmm"); + if (item.VisionData.MFGDATE.isEmpty()) item.VisionData.MFGDATE = DateTime.Now.ToString("yy-MM-dd"); + if (item.VisionData.SID.isEmpty()) item.VisionData.SID = "108" + "0" + DateTime.Now.ToString("HH").PadLeft(2, '0') + DateTime.Now.ToString("fff").PadLeft(3, '0'); + if (item.VisionData.VLOT.isEmpty()) item.VisionData.VLOT = "SUPNAME" + DateTime.Now.ToString("fff"); + if (item.VisionData.PARTNO.isEmpty()) item.VisionData.PARTNO = "PARTNO" + DateTime.Now.ToString("yyyyMMddHHmmss.fff"); + if (item.VisionData.RID.isEmpty()) + { + var newid = PUB.MakeNewREELID(item.VisionData.SID);// Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD("1234", "4", "A", out string err); + if (newid.success == false) item.VisionData.SetRID("RID" + DateTime.Now.ToString("yyyyMMddHHmmss.fff"), "DRY"); + else item.VisionData.SetRID(newid.newid, "DRY"); + } + if (item.VisionData.PrintPositionData.isEmpty()) item.VisionData.PrintPositionData = "2"; + item.VisionData.PrintPositionCheck = true; + item.VisionData.ConfirmAuto = true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/4_PICKER_ON.cs b/Handler/Project/RunCode/RunSequence/4_PICKER_ON.cs new file mode 100644 index 0000000..52ec30e --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/4_PICKER_ON.cs @@ -0,0 +1,278 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + public Boolean PICKER_ON(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var iLockX = PUB.iLock[(int)eAxis.PX_PICK]; + var iLockZ = PUB.iLock[(int)eAxis.PZ_PICK]; + + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + //option check + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + + //#################################################### + //### 인터락 확인 + //#################################################### + Boolean MotMoveX = PUB.mot.IsMotion((int)eAxis.PX_PICK); + Boolean MotMoveZ = PUB.mot.IsMotion((int)eAxis.PZ_PICK); + if (iLockX.IsEmpty() == false && MotMoveX) + { + var locklistX = MOT.GetActiveLockList(eAxis.PX_PICK, iLockX); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (int)eAxis.PX_PICK); + } + + if (iLockZ.IsEmpty() == false && MotMoveZ) + { + var locklistZ = MOT.GetActiveLockList(eAxis.PZ_PICK, iLockZ); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (int)eAxis.PZ_PICK); + } + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"[{target}] Picker ON work started"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### ON 위치로 이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockX.IsEmpty() == false) return false; + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + var PosZ = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.log.Add($"[{target}] Picker ON X,Y ready position confirmed"); + DIO.SetPickerVac(true); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 내린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var PortRDY = PUB.flag.get(eVarBool.FG_RDY_PORT_PC); + if (PortRDY == false) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 내린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + // if (iLockX.IsEmpty() == false) return false; + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.PICKON); + var PosMatch = MOT.getPositionMatch(Pos); + //var PortRDY = PUB.flag.get(eVarBool.RDY_PORT_PC); + //if (PosMatch==false ) return false; + + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + VAR.I32[eVarInt32.PickOnCount] += 1; + PUB.flag.set(eVarBool.FG_PK_ITEMON, true, funcName); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 올린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //if (iLockX.IsEmpty() == false) return false; + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.flag.set(eVarBool.FG_PK_ITEMON, true, funcName); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 프린트부착위치가 상/하가 아니라면 추가적인 회전이 필요하다 - 210207 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var vData = target == eWorkPort.Left ? PUB.Result.ItemDataL.VisionData : PUB.Result.ItemDataR.VisionData; + if (vData.PrintPositionData == "4") // 왼쪽찍기 + { + if (vData.ReelSize == eCartSize.Inch7) + { + vData.NeedCylinderForward = false; + double targerPos = 0.0; + if (target == eWorkPort.Left) //left printer + { + vData.PositionAngle = -90; //90도 회전한다 + } + else + { + vData.PositionAngle = -90; + } + } + else + { + //13inch + vData.NeedCylinderForward = true; + if (target == eWorkPort.Left) //left printer + { + vData.PositionAngle = -180; + } + else + { + vData.PositionAngle = 0; + } + } + } + else if (vData.PrintPositionData == "6") //오른쪽찍기 + { + if (vData.ReelSize == eCartSize.Inch7) + { + vData.NeedCylinderForward = false; + if (target == eWorkPort.Left) //left printer + { + vData.PositionAngle = 90; //90도 회전한다 + } + else + { + vData.PositionAngle = 90; //90도 회전한다 + } + } + else + { + //13inch + vData.NeedCylinderForward = true; + double targerPos = 0.0; + if (target == eWorkPort.Left) //left printer + { + vData.PositionAngle = 0; + } + else + { + vData.PositionAngle = 180; + } + } + } + else + { + vData.NeedCylinderForward = false; //상하에 붙이는건 실린더를 원위치해야함 + vData.PositionAngle = 0; + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 바코드에의한 자동 회전 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //속도값만 취한다 + var thpos = MOT.GetPTPos(ePTLoc.READY); + + // Baseangle 값으로 변경 210126 - qr의 각도가잇다면 그것이 기준이됨 + double baseAngle = 0; + string baseSource = "F"; + var vdata = target == eWorkPort.Left ? PUB.Result.ItemDataL.VisionData : PUB.Result.ItemDataR.VisionData; + if (vdata.BaseAngle(out string msg, out Class.KeyenceBarcodeData bcd)) + { + baseAngle = bcd.Angle; + baseSource = bcd.barcodeSource; //230504 각도 + PUB.log.AddI($"[{target}] Angle calculation: {msg}, Barcode: {bcd.Data}, ID: {vdata.RID}"); //210602 + } + else if (PUB.Result.DryRun) + { + PUB.log.AddAT($"[{target}] Angle not applied due to dry run"); + } + else + { + PUB.log.AddE($"[{target}] base ange error : {msg},ID:{vdata.RID}"); + } + + var addangle = baseSource == "R" ? SETTING.Data.RearBarcodeRotate : SETTING.Data.FrontBarcodeRotate; + var rotAngle = baseAngle + addangle + vdata.PositionAngle; + PUB.log.AddI($"[{target}] Source: {baseSource} Rotation value (Base: {baseAngle} + Additional: {addangle} + Vision: {vdata.PositionAngle} = {rotAngle})"); + + int dir = -1; + while (true) + { + if (rotAngle > 360.0) + rotAngle = rotAngle - 360.0; //한반퀴 더 도는것은 역 처리한다 + else break; + } + //rotAngle += 90; //비젼이 90도 돌아가잇으니 다시 적용필요함 //상단이위로가도록 함 + if (rotAngle > 180) + { + rotAngle = 360 - rotAngle; + dir = 1; + } + + PUB.log.AddI($"[{target}] Rotation (Final) [{rotAngle} degrees, Direction: {dir}], RID: {vdata.RID}"); + + if (target == eWorkPort.Left) + PUB.Result.ItemDataL.VisionData.ApplyAngle = rotAngle; //회전각도를 넣는다 + else + PUB.Result.ItemDataR.VisionData.ApplyAngle = rotAngle; //회전각도를 넣는다 + + var curtheta = PUB.mot.GetActPos((int)eAxis.Z_THETA); + var newPos = curtheta + (dir * rotAngle); + PUB.log.Add($"Motor position before rotation: {curtheta}, Target position: {newPos}, Speed: {thpos.Speed}, Acceleration: {thpos.Acc}"); + + if (target == eWorkPort.Left) + VAR.DBL[(int)eVarDBL.ThetaPositionL] = newPos; + else + VAR.DBL[(int)eVarDBL.ThetaPositionR] = newPos; + + //if (ByPassMode == false) + //{ + //바이패스에서도 추가 회전을 한다 + MOT.Move(eAxis.Z_THETA, newPos, thpos.Speed, thpos.Acc, false); + //} + //else PUB.log.AddAT($"bypass 로 인해 회전을 하지 않습니다"); + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + return true; + } + + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/4_PICKER_RETRY.cs b/Handler/Project/RunCode/RunSequence/4_PICKER_RETRY.cs new file mode 100644 index 0000000..c1cd5b8 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/4_PICKER_RETRY.cs @@ -0,0 +1,244 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + /// + /// 키엔스가 실패했을때 재시도 하는 작업이다 + /// 중앙에서 잡고 79도 틀고, 내려 놓고 피한다 + /// + /// + /// + /// + public Boolean PICKER_RETRY(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var iLockX = PUB.iLock[(int)eAxis.PX_PICK]; + var iLockZ = PUB.iLock[(int)eAxis.PZ_PICK]; + var PickerRetryCount = AR.VAR.I32[(int)eVarInt32.PickOnRetry]; + //#################################################### + //### 인터락 확인 + //#################################################### + Boolean MotMoveX = PUB.mot.IsMotion((int)eAxis.PX_PICK); + Boolean MotMoveZ = PUB.mot.IsMotion((int)eAxis.PZ_PICK); + if (iLockX.IsEmpty() == false && MotMoveX) + { + var locklistX = MOT.GetActiveLockList(eAxis.PX_PICK, iLockX); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (int)eAxis.PX_PICK); + } + + if (iLockZ.IsEmpty() == false && MotMoveZ) + { + var locklistZ = MOT.GetActiveLockList(eAxis.PZ_PICK, iLockZ); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (int)eAxis.PZ_PICK); + } + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"[{target}] Picker RETRY work started ({PickerRetryCount}/{AR.SETTING.Data.RetryPickOnMaxCount})"); + + //기존자료를 모두 삭제 한다 221102 + if (PUB.Result.ItemDataC != null && PUB.Result.ItemDataC.VisionData != null && PUB.Result.ItemDataC.VisionData.barcodelist != null) + { + lock (PUB.Result.ItemDataC.VisionData.barcodelist) + { + PUB.Result.ItemDataC.VisionData.Clear(funcName, true); + } + } + + AR.VAR.BOOL[eVarBool.JOB_PickON_Retry] = true; + PUB.mot.ClearPosition((int)eAxis.Z_THETA); + PUB.sm.seq.Update(cmdIndex); + DIO.SetPickerVac(false); + return false; + } + + //#################################################### + //### Z를 먼저 Ready 로 이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + DIO.SetPickerVac(true); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### X를 픽온위치로 이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockX.IsEmpty() == false) return false; + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + DIO.SetPickerVac(true); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축 내리기 조건확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var PortRDY = PUB.flag.get(eVarBool.FG_RDY_PORT_PC); + if (PortRDY == false) return false; + DIO.SetPickerVac(true); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 내린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.PICKON); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + VAR.I32[eVarInt32.PickOnCount] += 1; + //PUB.flag.set(eVarBool.PK_ITEMON, true, funcName); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 100ms 대기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (seqTime.TotalMilliseconds < 100) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 올린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + //PUB.flag.set(eVarBool.PK_ITEMON, true, funcName); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 현재위치에서 79도 회전 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //속도값만 취한다 + var Pos = MOT.GetPTPos(ePTLoc.READY); + Pos.Position = PUB.mot.GetActPos((int)eAxis.Z_THETA) + AR.SETTING.Data.RetryPickOnAngle; + VAR.DBL[(int)eVarDBL.ThetaPosition] = Pos.Position; + MOT.Move(Pos); + //if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 현재위치에서 79도 회전 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //속도값만 취한다 + var Pos = MOT.GetPTPos(ePTLoc.READY); + Pos.Position = VAR.DBL[(int)eVarDBL.ThetaPosition]; + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### Z를 pick on 위치로 1/3 지점으로 이동한다 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + var PosS = MOT.GetPZPos(ePZLoc.READY); + var PosT = MOT.GetPZPos(ePZLoc.PICKON); + var offset = (int)(Math.Abs(PosT.Position - PosS.Position) * 0.7f); + PosS.Position += offset; //시작위치에서 절반만 이동한다 + if (MOT.CheckMotionPos(seqTime, PosS, funcName) == false) return false; + DIO.SetPickerVac(false); //릴을 내려 놓는다 + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 올린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + DIO.SetPickerVac(false); //백큠을 꺼서 원복한다 + hmi1.arVar_Port[1].AlignReset(); //231013 + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 키엔스를 읽어야 하므로 피해준다 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockX.IsEmpty() == false) return false; + + sPositionData Pos; + if (target == eWorkPort.Left) Pos = MOT.GetPXPos(ePXLoc.READYL); + else Pos = MOT.GetPXPos(ePXLoc.READYR); + + //theta모터 위치 초기화 + PUB.mot.ClearPosition((int)eAxis.Z_THETA); + + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.log.AddAT($"###### Retry work avoidance movement completed ({target})"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 비젼데이터를 초기화 해준다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"Deleting vision data due to retry completion"); + PUB.Result.ItemDataC.VisionData.Clear(funcName, true); + AR.VAR.BOOL[eVarBool.JOB_PickON_Retry] = false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //일련번호 초기화 해준다 + PUB.sm.seq.Clear(cmdIndex); + return true; + } + + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/5_PICKER_OFF.cs b/Handler/Project/RunCode/RunSequence/5_PICKER_OFF.cs new file mode 100644 index 0000000..a23653c --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/5_PICKER_OFF.cs @@ -0,0 +1,458 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + public Boolean PICKER_OFF(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + // var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + //var ByPassMode = Jobtype == "BP"; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + //option check + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + + var iLockX = PUB.iLock[(int)eAxis.PX_PICK]; + var iLockZ = PUB.iLock[(int)eAxis.PZ_PICK]; + + //#################################################### + //### 인터락 확인 + //#################################################### + Boolean MotMoveX = PUB.mot.IsMotion((int)eAxis.PX_PICK); + Boolean MotMoveZ = PUB.mot.IsMotion((int)eAxis.PZ_PICK); + if (iLockX.IsEmpty() == false && MotMoveX) + { + var locklistX = MOT.GetActiveLockList(eAxis.PX_PICK, iLockX); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (int)eAxis.PX_PICK); + } + + if (iLockZ.IsEmpty() == false && MotMoveZ) + { + var locklistZ = MOT.GetActiveLockList(eAxis.PZ_PICK, iLockZ); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (int)eAxis.PZ_PICK); + } + + + + + + + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //컨베이어모드에서는 센서가 감지되면 내려놓지 않게 한다 + if (CVMode) + { + if (target == eWorkPort.Left) + { + if (DIO.GetIOInput(eDIName.L_CONV1)) return false; + if (VAR.I32[eVarInt32.LEFT_ITEM_COUNT] > 0) return false; + } + else if (target == eWorkPort.Right) + { + if (DIO.GetIOInput(eDIName.R_CONV1)) return false; + if (VAR.I32[eVarInt32.RIGT_ITEM_COUNT] > 0) return false; + } + PUB.log.Add($"Conveyor is empty in CV MODE"); + } + + PUB.log.Add($"[{target}] Picker OFF work started"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Y축안전확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //PUB.log.Add($"[{target}] 프린터 Y축 위치 확인"); + var Pos = target == eWorkPort.Left ? MOT.GetLMPos(eLMLoc.READY) : MOT.GetRMPos(eRMLoc.READY); + if (MOT.getPositionMatch(Pos) == false) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.POSITION_ERROR, eNextStep.PAUSE, "Printer Y-axis is not at ready position"); + return false; + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### OFF 위치로 이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockX.IsEmpty() == false) return false; + sPositionData PosX; + if (PUB.flag.get(eVarBool.FG_RUN_LEFT)) + { + PosX = MOT.GetPXPos(ePXLoc.PICKOFFL); + } + else + { + PosX = MOT.GetPXPos(ePXLoc.PICKOFFR); + } + if (MOT.CheckMotionPos(seqTime, PosX, funcName) == false) return false; + + //컨베이어모드라면 컨베이어를 멈추게한다 + if (CVMode) + { + if (target == eWorkPort.Left) + PUB.iLockCVL.set((int)eILockCV.BUSY, true, funcName); + else + PUB.iLockCVR.set((int)eILockCV.BUSY, true, funcName); + } + else + { + if (target == eWorkPort.Left) + PUB.iLockCVL.set((int)eILockCV.BUSY, false, funcName); + else + PUB.iLockCVR.set((int)eILockCV.BUSY, false, funcName); + } + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + ////#################################################### + ////### 프린트부착위치가 상/하가 아니라면 추가적인 회전이 필요하다 - 210207 + ////#################################################### + //if (PUB.sm.seq.Get(cmdIndex) == idx++) + //{ + // var vData = item.VisionData; + // if (vData.PrintPositionData == "4") // 왼쪽찍기 + // { + // if (vData.ReelSize == eCartSize.Inch7) + // { + // vData.NeedCylinderForward = false; + // double targerPos = 0.0; + // if (target == eWorkShuttle.Left) //left printer + // { + // targerPos = vData.ApplyAngle + 90; //90도 회전한다 + // } + // else + // { + // targerPos = vData.ApplyAngle + 90; + // } + + // //if (vData.ApplyAngle > 180.0) targerPos = vData.ApplyAngle - 180.0; + // //else targerPos = vData.ApplyAngle + 180.0; + + // //추가보정 + // if (targerPos > 360.0) targerPos = targerPos - 360.0; + // if (targerPos < -360.0) targerPos = targerPos + 360.0; + + // //지정값대로 추가 회전을 한다 + // var basePosInfo = MOT.GetPTPos(ePTLoc.READY); + // basePosInfo.Position = targerPos; + // if (MOT.CheckMotionPos(seqTime, basePosInfo, funcName) == false) return false; + // } + // else + // { + // //13inch + // vData.NeedCylinderForward = true; + // double targerPos = 0.0; + // if (target == eWorkShuttle.Left) //left printer + // { + // targerPos = vData.ApplyAngle + 180; //90도 회전한다 + // } + // else + // { + // targerPos = vData.ApplyAngle + 0; + // } + + // //if (vData.ApplyAngle > 180.0) targerPos = vData.ApplyAngle - 180.0; + // //else targerPos = vData.ApplyAngle + 180.0; + + // //추가보정 + // if (targerPos > 360.0) targerPos = targerPos - 360.0; + // if (targerPos < -360.0) targerPos = targerPos + 360.0; + + // //지정값대로 추가 회전을 한다 + // var basePosInfo = MOT.GetPTPos(ePTLoc.READY); + // basePosInfo.Position = targerPos; + // if (MOT.CheckMotionPos(seqTime, basePosInfo, funcName) == false) return false; + // } + + // } + // else if (vData.PrintPositionData == "6") //오른쪽찍기 + // { + // if (vData.ReelSize == eCartSize.Inch7) + // { + // vData.NeedCylinderForward = false; + // double targerPos = 0.0; + // if (target == eWorkShuttle.Left) //left printer + // { + // targerPos = vData.ApplyAngle - 90; //90도 회전한다 + // } + // else + // { + // targerPos = vData.ApplyAngle - 90; + // } + + // //if (vData.ApplyAngle > 180.0) targerPos = vData.ApplyAngle - 180.0; + // //else targerPos = vData.ApplyAngle + 180.0; + + // //추가보정 + // if (targerPos > 360.0) targerPos = targerPos - 360.0; + // if (targerPos < -360.0) targerPos = targerPos + 360.0; + + // //지정값대로 추가 회전을 한다 + // var basePosInfo = MOT.GetPTPos(ePTLoc.READY); + // basePosInfo.Position = targerPos; + // if (MOT.CheckMotionPos(seqTime, basePosInfo, funcName) == false) return false; + // } + // else + // { + // //13inch + // vData.NeedCylinderForward = true; + // double targerPos = 0.0; + // if (target == eWorkShuttle.Left) //left printer + // { + // targerPos = vData.ApplyAngle + 0; //90도 회전한다 + // } + // else + // { + // targerPos = vData.ApplyAngle + 180; + // } + + // //if (vData.ApplyAngle > 180.0) targerPos = vData.ApplyAngle - 180.0; + // //else targerPos = vData.ApplyAngle + 180.0; + + // //추가보정 + // if (targerPos > 360.0) targerPos = targerPos - 360.0; + // if (targerPos < -360.0) targerPos = targerPos + 360.0; + + // //지정값대로 추가 회전을 한다 + // var basePosInfo = MOT.GetPTPos(ePTLoc.READY); + // basePosInfo.Position = targerPos; + // if (MOT.CheckMotionPos(seqTime, basePosInfo, funcName) == false) return false; + // } + // } + // else vData.NeedCylinderForward = false; //상하에 붙이는건 실린더를 원위치해야함 + // PUB.sm.seq.Update(cmdIndex); + // return false; + //} + + //#################################################### + //### 사용자회전적용 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (item.VisionData.ApplyOffset == false) + { + //적용옵셋 + var OffsetAngle = target == eWorkPort.Left ? AR.SETTING.Data.AngleOffsetL : AR.SETTING.Data.AngleOffsetR; + if (OffsetAngle != 0f) + { + if (OPT_BYPASS == true || OPT_PrinterOff) + { + PUB.log.AddAT($"Additional rotation not performed due to bypass"); + } + else + { + //모터회전 + //var thpos = MOT.GetPTPos(ePTLoc.READY); //적용할 속도값용 + //MOT.Move(eAxis.Z_THETA, OffsetAngle, thpos.Speed, thpos.Acc, true); + MOT.Rotation(OffsetAngle, funcName); + + double theta = 0; + if (target == eWorkPort.Left) theta = VAR.DBL[(int)eVarDBL.ThetaPositionL]; + else theta = VAR.DBL[(int)eVarDBL.ThetaPositionR]; + + //값을 누적시켜준다 + item.VisionData.ApplyAngle += OffsetAngle; + + if (target == eWorkPort.Left) VAR.DBL[(int)eVarDBL.ThetaPositionL] = theta + OffsetAngle; + else VAR.DBL[(int)eVarDBL.ThetaPositionR] = theta + OffsetAngle; + + if (AR.SETTING.Data.Log_Debug) + PUB.logDbg.Add($"[{target}] Motor additional rotation: {OffsetAngle}"); + } + + } + item.VisionData.ApplyOffset = true; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 회전축 완료 확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_BYPASS == false && OPT_PrinterOff == false) + { + var Theta = target == eWorkPort.Left ? VAR.DBL[(int)eVarDBL.ThetaPositionL] : VAR.DBL[(int)eVarDBL.ThetaPositionR]; + var Pos = MOT.GetPTPos(ePTLoc.READY); + Pos.Position = Theta; + if (MOT.CheckMotionPos(seqTime, Pos, funcName, false) == false) return false; + PUB.log.Add($"[{target}] Rotation axis verification complete Position: {Theta}, Motor value: {PUB.mot.GetActPos((int)eAxis.Z_THETA)} => Position initialized"); + PUB.mot.ClearPosition((int)eAxis.Z_THETA); + } + + + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 포트상태확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + // if (iLockX.IsEmpty() == false) return false; + if (iLockZ.IsEmpty() == false) return false; + var PortRDY = target == eWorkPort.Left ? PUB.flag.get(eVarBool.FG_RDY_PORT_PL) : PUB.flag.get(eVarBool.FG_RDY_PORT_PR); + if (PortRDY == false) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 내린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + // if (iLockX.IsEmpty() == false) return false; + if (iLockZ.IsEmpty() == false) return false; + + //컨베어모드라면 센서에 감지되는 것이 없어야 한다 + if (OPT_BYPASS == false && VAR.BOOL[eVarBool.Use_Conveyor]) + { + if (target == eWorkPort.Left) + { + //컨베이어가 움직이고 있다면 단순 대기한다 + if (DIO.GetIOOutput(eDOName.LEFT_CONV) == false) + { + //놓일위치에서 센서가 감지되었다 + if (DIO.GetIOInput(eDIName.L_CONV1)) + { + var ssname = $"X{eDIName.L_CONV1}"; + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.LCONVER_REEL_DECTECT_IN, eNextStep.PAUSE, ssname); + return false; + } + } + else + { + if (seqTime.TotalSeconds > 10) + { + var ssname = $"Y{eDOName.LEFT_CONV}"; + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.LCONVER_MOVING, eNextStep.PAUSE, ssname); + } + return false; + } + + } + else + { + //컨베이어가 움직이고 있다면 단순 대기한다 + if (DIO.GetIOOutput(eDOName.RIGHT_CONV) == false) + { + //놓일위치에서 센서가 감지되었다 + if (DIO.GetIOInput(eDIName.R_CONV1)) + { + var ssname = $"X{eDIName.R_CONV1}"; + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.RCONVER_REEL_DECTECT_IN, eNextStep.PAUSE, ssname); + return false; + } + } + else + { + if (seqTime.TotalSeconds > 10) + { + var ssname = $"Y{eDOName.RIGHT_CONV}"; + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.RCONVER_MOVING, eNextStep.PAUSE, ssname); + } + return false; + } + + } + } + + + var fg = target == eWorkPort.Left ? eVarBool.FG_RUN_LEFT : eVarBool.FG_RUN_RIGHT; + var Loc = target == eWorkPort.Left ? ePZLoc.PICKOFFL : ePZLoc.PICKOFFR; + var Pos = MOT.GetPZPos(Loc); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 진공파기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + DIO.SetPickerVac(false); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z축을 올린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + // if (iLockX.IsEmpty() == false) return false; + if (iLockZ.IsEmpty() == false) return false; + var Pos = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + PUB.flag.set(eVarBool.FG_PK_ITEMON, false, funcName); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + IncCount(1, 1); + if (target == eWorkPort.Left) + { + if (AR.SETTING.Data.Disable_PortL == false && AR.SETTING.Data.Disable_Left == false) + { + hmi1.arVar_Port[0].AlignReset(); + } + + } + else + { + if (AR.SETTING.Data.Disable_PortR == false && AR.SETTING.Data.Disable_Right == false) + { + hmi1.arVar_Port[2].AlignReset(); + } + } + VAR.I32[eVarInt32.PickOfCount] += 1; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/6.PRINT.cs b/Handler/Project/RunCode/RunSequence/6.PRINT.cs new file mode 100644 index 0000000..5c55e82 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/6.PRINT.cs @@ -0,0 +1,246 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + public Boolean PRINTER(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + var Printer = target == eWorkPort.Left ? PUB.PrinterL : PUB.PrinterR; + //var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + //option check + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + + + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"[{target}] Print operation started"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 프린트 모션 위치 확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + sPositionData PosY, PosZ; + if (target == eWorkPort.Left) + { + PosY = MOT.GetLMPos(eLMLoc.READY); + PosZ = MOT.GetLZPos(eLZLoc.PICKON); + } + else + { + PosY = MOT.GetRMPos(eRMLoc.READY); + PosZ = MOT.GetRZPos(eRZLoc.PICKON); + } + + if (MOT.CheckMotionPos(seqTime, PosY, funcName) == false) return false; + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 인쇄데이터 확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (item.VisionData.RID.isEmpty()) + { + if (target == eWorkPort.Left) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOPRINTLDATA, eNextStep.PAUSE); + } + else + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOPRINTRDATA, eNextStep.PAUSE); + } + return false; + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 인쇄데이터전송 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + string zpl, qrdata; + zpl = Printer.makeZPL_210908(new Class.Reel + { + SID = item.VisionData.SID, + venderLot = item.VisionData.VLOT, + venderName = item.VisionData.VNAME, + qty = item.VisionData.QTY.isEmpty() ? -1 : int.Parse(item.VisionData.QTY), + id = item.VisionData.RID, + mfg = item.VisionData.MFGDATE, + PartNo = item.VisionData.PARTNO, + }, AR.SETTING.Data.DrawOutbox, out qrdata); + item.VisionData.ZPL = zpl; + item.VisionData.PrintQRData = qrdata; + + PUB.log.Add("PRINT", $"[{target}] Printing");//QR=" + item.VisionData.QRData); + + if (target == eWorkPort.Left) + { + var prn = Printer.Print(zpl); + //PUB.PrintSend(true, zpl); //PUB.PrintL.Write(zpl); + if (prn.result == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTL, eNextStep.ERROR); + return false; + } + else + { + SETTING.Counter.CountPrintL += 1; + item.PrintTime = DateTime.Now; + } + } + else + { + var prn = Printer.Print(zpl); + //PUB.PrintSend(false, zpl); //PUB.PrintR.Write(zpl); + if (prn.result == false) + { + PUB.log.AddE(prn.errmessage); + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.PRINTR, eNextStep.ERROR); + return false; + } + else + { + SETTING.Counter.CountPrintR += 1; + item.PrintTime = DateTime.Now; + } + } + } + else PUB.log.AddAT($"[{target}] Printer function OFF (bypass or model or setting)"); + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 잠시대기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var WaitMS = target == eWorkPort.Left ? AR.SETTING.Data.PrintLWaitMS : AR.SETTING.Data.PrintRWaitMS; + if (OPT_PrinterOff == false && seqTime.TotalMilliseconds < WaitMS) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 위쪽흡기 ON + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + if (target == eWorkPort.Left) + { + DIO.SetPrintLVac(ePrintVac.inhalation); + } + else + { + DIO.SetPrintRVac(ePrintVac.inhalation); + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 잠시대기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false && seqTime.TotalMilliseconds < 100) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 아래쪽 블로우 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false && SETTING.Data.Disable_BottomAirBlow == false) + { + if (target == eWorkPort.Left) + { + DIO.SetPrintLAir(true); + } + else + { + DIO.SetPrintRAir(true); + } + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 잠시대기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false && seqTime.TotalMilliseconds < 100) return false; + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 장비기술데이터저장 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"6.PRINT : EE-SAVE"); + SaveData_EE(item, (target == eWorkPort.Left ? "L" : "R"), "","printer"); + //RefreshList(); //목록업데이트 + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### spare + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.sm.seq.Update(cmdIndex); + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/7_PRINTER_ON.cs b/Handler/Project/RunCode/RunSequence/7_PRINTER_ON.cs new file mode 100644 index 0000000..eacc106 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/7_PRINTER_ON.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + public Boolean PRINTER_ON(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + var Printer = target == eWorkPort.Left ? PUB.PrinterL : PUB.PrinterR; + //var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + //var ByPassMode = Jobtype == "BP"; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + //option check + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + //#################################################### + //### 인터락 확인 + //#################################################### + Boolean MotMoveM, MotMoveZ; + AR.CInterLock iLockM, iLockZ; + eAxis axisM = target == eWorkPort.Left ? eAxis.PL_MOVE : eAxis.PR_MOVE; + eAxis axisZ = target == eWorkPort.Left ? eAxis.PL_UPDN : eAxis.PR_UPDN; + if (target == eWorkPort.Left) + { + MotMoveM = PUB.mot.IsMotion((int)eAxis.PL_MOVE); + MotMoveZ = PUB.mot.IsMotion((int)eAxis.PL_UPDN); + iLockM = PUB.iLock[(int)eAxis.PL_MOVE]; + iLockZ = PUB.iLock[(int)eAxis.PL_UPDN]; + } + else + { + MotMoveM = PUB.mot.IsMotion((int)eAxis.PR_MOVE); + MotMoveZ = PUB.mot.IsMotion((int)eAxis.PR_UPDN); + iLockM = PUB.iLock[(int)eAxis.PR_MOVE]; + iLockZ = PUB.iLock[(int)eAxis.PR_UPDN]; + } + + if (iLockM.IsEmpty() == false && MotMoveM) + { + var locklistX = MOT.GetActiveLockList(axisM, iLockM); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (short)axisM); + } + + if (iLockZ.IsEmpty() == false && MotMoveZ) + { + var locklistZ = MOT.GetActiveLockList(axisZ, iLockZ); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (short)axisZ); + } + + + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"[{target}] Print ON operation started"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 종이감지확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var 용지감지센서 = target == eWorkPort.Left ? eDIName.L_PICK_VAC : eDIName.R_PICK_VAC; + var 용지감지기능 = target == eWorkPort.Left ? AR.SETTING.Data.Detect_PrintL : AR.SETTING.Data.Detect_PrintR; + + if (OPT_PrinterOff == false) + { + if (용지감지기능 == false) + { + if (seqTime.TotalMilliseconds < 100) return false; + PUB.log.AddAT($"[{target}] Paper detection function OFF(proceed after 3 seconds)"); + } + else + { + var ioresult = DIO.checkDigitalO(용지감지센서, seqTime, true, 0, false); + if (ioresult == eNormalResult.Error) + { + var errCode = target == eWorkPort.Left ? eECode.NO_PAPER_DETECT_L : eECode.NO_PAPER_DETECT_R; + PUB.Result.SetResultMessage(eResult.HARDWARE, errCode, eNextStep.PAUSE, 용지감지센서); + return false; + } + else if (ioresult == eNormalResult.False) return false; + } + + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z올리기(slow) + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + if (OPT_BYPASS == false) + { + if (seqTime.TotalMilliseconds < 3000) return false; + sPositionData PosZ; + if (target == eWorkPort.Left) + { + PosZ = MOT.GetLZPos(eLZLoc.PICKON); + } + else + { + PosZ = MOT.GetRZPos(eRZLoc.PICKON); + } + PosZ.Position -= 10; + if (PosZ.Position < 1) PosZ.Position = 1; + PosZ.Speed = 5; + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 종이감지확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + var 용지감지센서 = target == eWorkPort.Left ? eDIName.L_PICK_VAC : eDIName.R_PICK_VAC; + var 용지감지기능 = target == eWorkPort.Left ? AR.SETTING.Data.Detect_PrintL : AR.SETTING.Data.Detect_PrintR; + + if (용지감지기능 == false) + { + if (seqTime.TotalMilliseconds < 100) return false; + PUB.log.AddAT($"[{target}] Paper detection function OFF(proceed after 3 seconds)"); + } + else + { + var ioresult = DIO.checkDigitalO(용지감지센서, seqTime, true, 0, false); + if (ioresult == eNormalResult.Error) + { + var errCode = target == eWorkPort.Left ? eECode.NO_PAPER_DETECT_L : eECode.NO_PAPER_DETECT_R; + PUB.Result.SetResultMessage(eResult.HARDWARE, errCode, eNextStep.PAUSE, 용지감지센서); + return false; + } + else if (ioresult == eNormalResult.False) return false; + } + } + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### Z올리기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + if (OPT_BYPASS == false) + { + sPositionData PosZ; + if (target == eWorkPort.Left) + { + PosZ = MOT.GetLZPos(eLZLoc.READY); + } + else + { + PosZ = MOT.GetRZPos(eRZLoc.READY); + } + if (MOT.CheckMotionPos(seqTime, PosZ, funcName) == false) return false; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //air off + if (target == eWorkPort.Left) + { + DIO.SetPrintLAir(false); + if (OPT_BYPASS == false) + VAR.I32[eVarInt32.LPickOnCount] += 1; + PUB.flag.set(eVarBool.FG_PL_ITEMON, true, funcName); + } + else + { + DIO.SetPrintRAir(false); + if (OPT_BYPASS == false) + VAR.I32[eVarInt32.RPickOnCount] += 1; + PUB.flag.set(eVarBool.FG_PR_ITEMON, true, funcName); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/8_PRINTER_OFF.cs b/Handler/Project/RunCode/RunSequence/8_PRINTER_OFF.cs new file mode 100644 index 0000000..5cf4620 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/8_PRINTER_OFF.cs @@ -0,0 +1,574 @@ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + public Boolean PRINTER_OFF(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + //option check + var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + var OPT_CameraOff = PUB.OPT_CAMERA(); + //var OPT_BYPASS = PUB.OPT_BYPASS(target); + + + //#################################################### + //### 인터락 확인 + //#################################################### + Boolean MotMoveM, MotMoveZ; + AR.CInterLock iLockM, iLockZ; + eAxis axisM = target == eWorkPort.Left ? eAxis.PL_MOVE : eAxis.PR_MOVE; + eAxis axisZ = target == eWorkPort.Left ? eAxis.PL_UPDN : eAxis.PR_UPDN; + if (target == eWorkPort.Left) + { + MotMoveM = PUB.mot.IsMotion((int)eAxis.PL_MOVE); + MotMoveZ = PUB.mot.IsMotion((int)eAxis.PL_UPDN); + iLockM = PUB.iLock[(int)eAxis.PL_MOVE]; + iLockZ = PUB.iLock[(int)eAxis.PL_UPDN]; + } + else + { + MotMoveM = PUB.mot.IsMotion((int)eAxis.PR_MOVE); + MotMoveZ = PUB.mot.IsMotion((int)eAxis.PR_UPDN); + iLockM = PUB.iLock[(int)eAxis.PR_MOVE]; + iLockZ = PUB.iLock[(int)eAxis.PR_UPDN]; + } + + if (iLockM.IsEmpty() == false && MotMoveM) + { + var locklistX = MOT.GetActiveLockList(axisM, iLockM); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistX) + ")", (short)axisM); + } + + if (iLockZ.IsEmpty() == false && MotMoveZ) + { + var locklistZ = MOT.GetActiveLockList(axisZ, iLockZ); + PUB.mot.MoveStop("ILock(" + string.Join(",", locklistZ) + ")", (short)axisZ); + } + + + + //#################################################### + //### 작업시작 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //PUB.log.Add($"[{target}] 프린트 OFF 작업 시작"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 피커Y축 위치 확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var PosX = MOT.GetPXPos(ePXLoc.PICKON); + var OffX = MOT.getPositionOffset(PosX); + if (target == eWorkPort.Left) + { + if (OffX < -1) return false; //충돌조건이므로 Y축을 움직이면 안된다 + } + else + { + if (OffX > 1) return false;//충돌조건이므로 Y축을 움직이면 안된다 + } + + //PUB.log.Add($"[{target}] 프린트 OFF 작업 시작"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### 프린터Z축 위치 확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + sPositionData Pos; + if (target == eWorkPort.Left) + { + Pos = MOT.GetLZPos(eLZLoc.READY); + } + else + { + Pos = MOT.GetRZPos(eRZLoc.READY); + } + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + + //PUB.log.Add($"[{target}] 프린트 OFF 작업 시작"); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### Y이동 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + sPositionData Pos; + + if (OPT_PrinterOff == false) + { + //릴크기없으면 오류 + var reelSize = item.VisionData.ReelSize; + if (reelSize == eCartSize.None) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOREELSIZE, eNextStep.PAUSE, target); + return false; + } + + //부착위치 + var PrintPutPos = item.VisionData.GetPrintPutPosition(); + if (PrintPutPos == ePrintPutPos.None) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOPUTPOSITION, eNextStep.PAUSE, target); + return false; + } + + if (target == eWorkPort.Left) + { + //위에 찍을지 아래에 찍을지 위치를 결정한다 + if (reelSize == eCartSize.Inch13) + { + if (PrintPutPos == ePrintPutPos.Middle) Pos = MOT.GetLMPos(eLMLoc.PRINTM13); + else if (PrintPutPos == ePrintPutPos.Bottom) Pos = MOT.GetLMPos(eLMLoc.PRINTL13); + else Pos = MOT.GetLMPos(eLMLoc.PRINTH13); + } + else + { + if (PrintPutPos == ePrintPutPos.Middle) Pos = MOT.GetLMPos(eLMLoc.PRINTM07); + else if (PrintPutPos == ePrintPutPos.Bottom) Pos = MOT.GetLMPos(eLMLoc.PRINTL07); + else Pos = MOT.GetLMPos(eLMLoc.PRINTH07); + } + } + else //Right Move + { + //위에 찍을지 아래에 찍을지 위치를 결정한다 + if (reelSize == eCartSize.Inch13) + { + if (PrintPutPos == ePrintPutPos.Middle) Pos = MOT.GetRMPos(eRMLoc.PRINTM13); + else if (PrintPutPos == ePrintPutPos.Bottom) Pos = MOT.GetRMPos(eRMLoc.PRINTL13); + else Pos = MOT.GetRMPos(eRMLoc.PRINTH13); + } + else + { + if (PrintPutPos == ePrintPutPos.Middle) Pos = MOT.GetRMPos(eRMLoc.PRINTM07); + else if (PrintPutPos == ePrintPutPos.Bottom) Pos = MOT.GetRMPos(eRMLoc.PRINTL07); + else Pos = MOT.GetRMPos(eRMLoc.PRINTH07); + } + } + + if (iLockM.IsEmpty() == false) return false; + //if (iLockZ.IsEmpty() == false) return false; + + //위치오류확인 + if (Pos.isError == false) + { + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + } + else + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.POSITION_ERROR, eNextStep.PAUSE, "PRINTPOS"); + return false; + } + } + + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 실린더 전/후진 상태를 전환한다 -- 210207 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + var Cylinder = item.VisionData.NeedCylinderForward; + if (Cylinder == true) + { + //전진이 필요하다 + if (target == eWorkPort.Left) + DIO.SetOutput(eDOName.PRINTL_FWD, true); + else + DIO.SetOutput(eDOName.PRINTR_FWD, true); + + } + else + { + //전진이 필요하지 않다. + if (target == eWorkPort.Left) + DIO.SetOutput(eDOName.PRINTL_FWD, false); + else + DIO.SetOutput(eDOName.PRINTR_FWD, false); + } + + } + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 카트모드에서는 추가 실린더 down 해야한다 230809 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + if (SETTING.Data.Enable_PickerCylinder) + { + //전진이 필요하다 + if (target == eWorkPort.Left) + DIO.SetOutput(eDOName.L_CYLDN, true); + else + DIO.SetOutput(eDOName.R_CYLDN, true); + } + else + { + if (target == eWorkPort.Left) + DIO.SetOutput(eDOName.L_CYLDN, false); + else + DIO.SetOutput(eDOName.R_CYLDN, false); + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 카트상태확인 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + eVarBool fg = target == eWorkPort.Left ? eVarBool.FG_RDY_PORT_PL : eVarBool.FG_RDY_PORT_PR; + if (PUB.flag.get(fg) == false) return false; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 실린더상태확인 -- 210207 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + var Cylinder = item.VisionData.NeedCylinderForward; + if (Cylinder == true) + { + //전진이 필요하다 + if (target == eWorkPort.Left) + { + if (DIO.checkDigitalO(eDIName.L_PICK_FW, seqTime, true) != eNormalResult.True) + return false; + } + else + { + if (DIO.checkDigitalO(eDIName.R_PICK_FW, seqTime, true) != eNormalResult.True) + return false; + } + } + else + { + //전진이 필요하지 않다. + if (target == eWorkPort.Left) + { + if (DIO.checkDigitalO(eDIName.L_PICK_BW, seqTime, true) != eNormalResult.True) + return false; + } + else + { + if (DIO.checkDigitalO(eDIName.R_PICK_BW, seqTime, true) != eNormalResult.True) + return false; + } + } + } + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 피커 down 실린더상태확인 -- 230809 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false && SETTING.Data.Enable_PickerCylinder) + { + //전진이 필요하다 + if (target == eWorkPort.Left) + { + if (DIO.checkDigitalO(eDIName.L_CYLDN, seqTime, true, timeoutcode: eECode.PICKER_LCYL_NODOWN) != eNormalResult.True) + return false; + } + else + { + if (DIO.checkDigitalO(eDIName.R_CYLDN, seqTime, true, timeoutcode: eECode.PICKER_RCYL_NODOWN) != eNormalResult.True) + return false; + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z값을 내린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + + if (OPT_PrinterOff == false) + { + sPositionData Pos; + if (target == eWorkPort.Left) + Pos = MOT.GetLZPos(eLZLoc.PICKOFF); + else + Pos = MOT.GetRZPos(eRZLoc.PICKOFF); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + } + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 진공파기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + if (target == eWorkPort.Left) + { + DIO.SetPrintLVac(ePrintVac.exhaust); + } + else + { + DIO.SetPrintRVac(ePrintVac.exhaust); + } + } + + if (target == eWorkPort.Left) + { + VAR.BOOL[eVarBool.LEFT_ITEM_PICKOFF] = true; + VAR.TIME[eVarTime.LEFT_ITEM_PICKOFF] = DateTime.Now; + VAR.DBL[eVarDBL.LEFT_ITEM_PICKOFF] = 0; + VAR.I32[eVarInt32.LEFT_ITEM_COUNT] += 1; + } + else + { + VAR.BOOL[eVarBool.RIGT_ITEM_PICKOFF] = true; + VAR.TIME[eVarTime.RIGT_ITEM_PICKOFF] = DateTime.Now; + VAR.DBL[eVarDBL.RIGT_ITEM_PICKOFF] = 0; + VAR.I32[eVarInt32.RIGT_ITEM_COUNT] += 1; + } + PUB.log.Add($"[{target}] Placing reel down"); + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 잠시대기 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + if (seqTime.TotalMilliseconds < AR.SETTING.Data.PrintVacOffPurgeMS) return false; + + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 저속으로올린다 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + if (OPT_PrinterOff == false) + { + sPositionData Pos; + if (target == eWorkPort.Left) + Pos = MOT.GetLZPos(eLZLoc.PICKOFF); + else + Pos = MOT.GetRZPos(eRZLoc.PICKOFF); + Pos.Position -= 30; + Pos.Speed = 30; + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 카트모드에서는 추가 실린더 down 해야한다 230809 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //if (ByPassMode == false) + //{ + // if (CVMode == false) + //{ + //전진이 필요하다 + if (target == eWorkPort.Left) + DIO.SetOutput(eDOName.L_CYLDN, false); + else + DIO.SetOutput(eDOName.R_CYLDN, false); + //} + // } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### Z값 대기위치로 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (iLockZ.IsEmpty() == false) return false; + if (OPT_PrinterOff == false) + { + sPositionData Pos; + if (target == eWorkPort.Left) + Pos = MOT.GetLZPos(eLZLoc.READY); + else + Pos = MOT.GetRZPos(eRZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, funcName) == false) return false; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### AIR해제 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (target == eWorkPort.Left) + DIO.SetPrintLVac(ePrintVac.off); + else + DIO.SetPrintRVac(ePrintVac.off); + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 실린더 복귀 확인 -- 230809 + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (SETTING.Data.Enable_PickerCylinder) + { + //상승이 필요하다 + if (target == eWorkPort.Left) + { + if (DIO.checkDigitalO(eDIName.L_CYLUP, seqTime, true, timeoutcode: eECode.PICKER_LCYL_NOUP) != eNormalResult.True) + return false; + } + else + { + if (DIO.checkDigitalO(eDIName.R_CYLUP, seqTime, true, timeoutcode: eECode.PICKER_RCYL_NOUP) != eNormalResult.True) + return false; + } + + } + + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (OPT_PrinterOff == false) + { + if (target == eWorkPort.Left) + { + if (DIO.checkDigitalO(eDIName.L_PICK_VAC, seqTime, false) != eNormalResult.True) return false; + VAR.I32[eVarInt32.LPickOfCount] += 1; + } + else + { + if (DIO.checkDigitalO(eDIName.R_PICK_VAC, seqTime, false) != eNormalResult.True) return false; + VAR.I32[eVarInt32.RPickOfCount] += 1; + } + //PUB.log.AddAT($"용지 떨어짐 확인 필요"); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (target == eWorkPort.Left) + { + PUB.flag.set(eVarBool.FG_PL_ITEMON, false, funcName); + } + else + { + PUB.flag.set(eVarBool.FG_PR_ITEMON, false, funcName); + } + + //프린터 사용여부 확인 + if (OPT_PrinterOff == false) + { + item.PrintAttach = true; + item.Attachtime = DateTime.Now; + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + + return true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/90_SaveData.cs b/Handler/Project/RunCode/RunSequence/90_SaveData.cs new file mode 100644 index 0000000..1c3f8c0 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/90_SaveData.cs @@ -0,0 +1,147 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + delegate void savedataeehandler(Class.JobData item, string Loc, string inboundok, string reason); + + public void SaveData_EE(Class.JobData item, string Loc, string inboundok, string reason) + { + if (this.InvokeRequired) + { + //이자료를 복사해서 데이터를 넘겨줘야한다. + var a = new Class.JobData(999); + item.CopyTo(ref a); + this.BeginInvoke(new savedataeehandler(SaveData_EE), a, Loc, inboundok, reason); + return; + } + + var retval = false; + if (AR.SETTING.Data.OnlineMode == false) + { + PUB.log.AddAT($"[SAVE-EE] Not saving in offline mode"); + return; + } + + + DateTime savestart = DateTime.Now; + try + { + var save_month = DateTime.Now.ToString("YY") + DateTime.Now.Month.ToString("X"); + var save_sn = string.Empty; + if (item.VisionData.RID.Length == 15) + { + save_month = item.VisionData.RID.Substring(8, 3); //21A 식으로 년도와 월이 나온다 + save_sn = item.VisionData.RID.Substring(item.VisionData.RID.Length - 4); //뒷에서 4자리 끊는다 + } + //var Jobtype = VAR.STR[eVarString.JOB_TYPE]; + //var ByPassMode = Jobtype == "BP"; + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + //option check + //var OPT_PrinterOff = PUB.OPT_PRINTEROFF(target); + //var OPT_CameraOff = PUB.OPT_CAMERA(target); + var OPT_BYPASS = SETTING.Data.SystemBypass;// PUB.OPT_BYPASS(target); + + + using (var taResult = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter()) + { + //QTY 0값은 없을 수도있다(해당 값은 서버조회여부에다라 다르다) + int? qtyorg = null; + if (int.TryParse(item.VisionData.QTY0, out int vqty0)) + qtyorg = vqty0; + string remark = string.Empty; + if (item.VisionData.ConfirmAuto) remark = "[자동]" + remark; //자동확인문구 + else if (item.VisionData.ConfirmUser) remark = "[확인]" + remark; //사용자 확인데이터 비고에 추가 + if (OPT_BYPASS) remark = "(BYPASS)" + remark; + + DataSet1.K4EE_Component_Reel_ResultRow newdr = this.dataSet1.K4EE_Component_Reel_Result.Where(t => t.JGUID.Equals(item.guid)).FirstOrDefault(); + if (newdr == null) newdr = this.dataSet1.K4EE_Component_Reel_Result.NewK4EE_Component_Reel_ResultRow(); + //else newdr = dt.Rows[0] as DataSet1.Component_Reel_ResultRow; + + if (item.JobStart.Year != 1982) newdr.STIME = item.JobStart; + else newdr.STIME = DateTime.Now; + + if (item.JobEnd.Year != 1982) newdr.ETIME = item.JobEnd; + if (item.PrintTime.Year != 1982) newdr.PTIME = item.PrintTime; + + newdr.ATIME = item.Attachtime; + newdr.PDATE = save_month; + newdr.JTYPE = PUB.Result.vModel.Title;// PUB.Result.JobType2; + if (newdr.JTYPE.Length > 10) newdr.JTYPE = newdr.JTYPE.Substring(0, 9); + + newdr.SID = item.VisionData.SID; + newdr.SID0 = item.VisionData.SID0; + newdr.RID = item.VisionData.RID; + newdr.RID0 = item.VisionData.RID0; + newdr.RSN = save_sn; + newdr.QR = item.VisionData.PrintQRData; + newdr.ZPL = item.VisionData.ZPL; + newdr.POS = item.VisionData.PrintPositionData; + newdr.LOC = Loc; + newdr.ANGLE = item.VisionData.ApplyAngle; + if (int.TryParse(item.VisionData.QTY, out int oqty)) + newdr.QTY = oqty; + else + newdr.QTY = 0; + + newdr.MFGDATE = item.VisionData.MFGDATE;//210326 날짜도 추가함 + if (qtyorg != null) newdr.QTY0 = (int)qtyorg; + newdr.VNAME = item.VisionData.VNAME; + newdr.VLOT = item.VisionData.VLOT; ///210326 + newdr.PRNATTACH = item.PrintAttach; + newdr.PRNVALID = item.PrintQRValid; + newdr.REMARK = remark; + if (inboundok.isEmpty() == false) newdr.iNBOUND = inboundok;//230622 + newdr.MC = AR.SETTING.Data.McName; + newdr.PARTNO = item.VisionData.PARTNO; + newdr.CUSTCODE = item.VisionData.CUSTCODE; + newdr.MCN = item.VisionData.MCN; + newdr.target = item.VisionData.Target; + + //220921 - batch qtymax + newdr.BATCH = item.VisionData.BATCH; + if (int.TryParse(item.VisionData.QTYMAX, out int qtymax)) + newdr.qtymax = qtymax; + else newdr.qtymax = -1; + + + + //new mode + if (newdr.RowState == System.Data.DataRowState.Detached) + { + newdr.GUID = PUB.Result.guid; //220921 + newdr.JGUID = item.guid; + newdr.wdate = DateTime.Now; + this.dataSet1.K4EE_Component_Reel_Result.AddK4EE_Component_Reel_ResultRow(newdr); + } + else newdr.EndEdit(); + + var ta = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter(); + var cnt = ta.Update(newdr); + newdr.AcceptChanges(); + if (cnt == 0) PUB.log.AddE("Save Error"); + } + + retval = true; + } + catch (Exception ex) + { + PUB.log.AddE($"[EE-SAVE] {ex.Message}"); + retval = false; + } + + var ts = DateTime.Now - savestart; + PUB.log.AddI($"data save time : {ts.TotalSeconds:N2}"); + + ListFormmatData(); + + + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/9_QRValid.cs b/Handler/Project/RunCode/RunSequence/9_QRValid.cs new file mode 100644 index 0000000..85c0781 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/9_QRValid.cs @@ -0,0 +1,175 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + public Boolean QR_VALIDATION(eWorkPort target, eSMStep cmdIndex) + { + UInt16 idx = 1; + var mv = PUB.Result.vModel; + var mc = PUB.Result.mModel; + var funcName = System.Reflection.MethodBase.GetCurrentMethod().Name; + var seqTime = PUB.sm.seq.GetTime(cmdIndex); + var msgType = (Class.eStatusMesage)target; + var item = target == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + var WS = target == eWorkPort.Left ? PUB.wsL : PUB.wsR; + + //#################################################### + //### 작업시작 + //#################################################### + var CIDX = PUB.sm.seq.Get(cmdIndex); + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //작업 플래그 설정 + if (target == eWorkPort.Left) + { + VAR.BOOL[eVarBool.VisionL_Retry] = false; + PUB.flag.set(eVarBool.FG_END_VISIONL, false, funcName); + PUB.flag.set(eVarBool.FG_PRC_VISIONL, true, funcName); + //PUB.iLockCVL.set((int)eILockCV.VISION, true, funcName); + } + else + { + VAR.BOOL[eVarBool.VisionR_Retry] = false; + PUB.flag.set(eVarBool.FG_END_VISIONR, false, funcName); + PUB.flag.set(eVarBool.FG_PRC_VISIONR, true, funcName); + //PUB.iLockCVR.set((int)eILockCV.VISION, true, funcName); + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //카메라 트리거 전송 + var sendok = WS_Send(target, WS, item.guid, "TRIG", item.VisionData.PrintQRData); + PUB.log.Add($"Send QR Vision trigger ({target}) = {sendok} CMD=TRIG,DATA={item.VisionData.PrintQRData}"); + if(sendok==false) //230512 전송실패시 오류로 한다 + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.VISION_TRIGERROR, eNextStep.PAUSE); + return false; + } + PUB.sm.seq.Update(cmdIndex); + return false; + } + + //#################################################### + //### 수신된 바코드 값을 기다린다. + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //타임아웃시간을 넘어서면 오류처리한다 + if (seqTime.TotalMilliseconds >= AR.SETTING.Data.Timeout_VisionProcessU) + { + // + if (target == eWorkPort.Left) + { + if (VAR.BOOL[eVarBool.VisionL_Retry] == false) + { + PUB.log.AddAT("Vision (L) failed once, retrying"); + VAR.BOOL[eVarBool.VisionL_Retry] = true; + PUB.sm.seq.Update(cmdIndex, -1); + return false; + } + + if (item.VisionData.RID2.isEmpty() == false && item.VisionData.MatchValidation == false) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.QRDATAMISSMATCHL, eNextStep.PAUSE, target, item.VisionData.RID, item.VisionData.RID2); + } + else + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.VISION_NORECV, eNextStep.PAUSE, target); + } + } + else + { + if (VAR.BOOL[eVarBool.VisionR_Retry] == false) + { + PUB.log.AddAT("Vision (R) failed once, retrying"); + VAR.BOOL[eVarBool.VisionR_Retry] = true; + PUB.sm.seq.Update(cmdIndex, -1); + return false; + } + + + if (item.VisionData.RID2.isEmpty() == false && item.VisionData.MatchValidation == false) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.QRDATAMISSMATCHR, eNextStep.PAUSE, target, item.VisionData.RID, item.VisionData.RID2); + } + else + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.VISION_NORECV, eNextStep.PAUSE, target); + } + } + + + PUB.sm.seq.Update(cmdIndex, -1); // 재시작시 트리거 전송할 수 있게 위로 옮김 + return false; + } + else + { + //타임아웃되지 않은 조건 + + if (target == eWorkPort.Left) + { + if (PUB.flag.get(eVarBool.FG_END_VISIONL)) //종료신호가 설정되어있다면 완료된 경우다 + { + PUB.log.AddI($"{target} Completed processing due to vision end signal"); + item.PrintQRValid = true; + } + else if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false) //사용자가 취소했다면 넘어간다 + { + PUB.log.AddAT($"{target} Skip QR verification due to user cancellation"); + item.PrintQRValid = false; + } + else return false; //아직 완료전이므로 리턴한다 + } + else + { + if (PUB.flag.get(eVarBool.FG_END_VISIONR)) + { + PUB.log.AddI($"{target} Completed processing due to vision end signal"); + item.PrintQRValid = true; + } + else if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false) //사용자가 취소했다면 넘어간다 + { + PUB.log.AddAT($"{target} Skip QR verification due to user cancellation"); + item.PrintQRValid = false; + } + else return false; //아직 완료전이므로 리턴한다 + } + } + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + //#################################################### + //### + //#################################################### + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + PUB.log.Add($"{target} Vision verification completed (Result: {item.PrintQRValid})"); + + if (target == eWorkPort.Left) + PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, funcName); + else + PUB.flag.set(eVarBool.FG_PRC_VISIONR, false, funcName); + + PUB.sm.seq.Update(cmdIndex); + return false; + } + + + return true; + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/RunSequence/_RUN_MOT_PORT.cs b/Handler/Project/RunCode/RunSequence/_RUN_MOT_PORT.cs new file mode 100644 index 0000000..53f4b52 --- /dev/null +++ b/Handler/Project/RunCode/RunSequence/_RUN_MOT_PORT.cs @@ -0,0 +1,324 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + + /// + /// 로더용 포트 조작 + /// + /// + /// + /// + void _SM_RUN_MOT_PORT(int idx, Boolean isFirst, TimeSpan StepTime) + { + //포트 비활성 체크 + eVarBool FG_RDY_PORT; + eDIName DI_LIMUP, DI_DETUP; + eDOName DO_PORTRUN; + Boolean PORT_DISABLE; + + //인덱스에 맞는 플래그와 DI값 설정 + if (idx == 0) + { + PORT_DISABLE = AR.SETTING.Data.Disable_PortL || AR.SETTING.Data.Disable_Left; + FG_RDY_PORT = eVarBool.FG_RDY_PORT_PL; DI_DETUP = eDIName.PORTL_DET_UP; + DI_LIMUP = eDIName.PORTL_LIM_UP; DO_PORTRUN = eDOName.PORTL_MOT_RUN; + } + else if (idx == 1) + { + PORT_DISABLE = AR.SETTING.Data.Disable_PortC; + FG_RDY_PORT = eVarBool.FG_RDY_PORT_PC; DI_DETUP = eDIName.PORTC_DET_UP; + DI_LIMUP = eDIName.PORTC_LIM_UP; DO_PORTRUN = eDOName.PORTC_MOT_RUN; + } + else + { + PORT_DISABLE = AR.SETTING.Data.Disable_PortR || AR.SETTING.Data.Disable_Right; + FG_RDY_PORT = eVarBool.FG_RDY_PORT_PR; DI_DETUP = eDIName.PORTR_DET_UP; + DI_LIMUP = eDIName.PORTR_LIM_UP; DO_PORTRUN = eDOName.PORTR_MOT_RUN; + } + + //포트가 비활성화되어있다면 DETECT ON하고 , LIMIT는 해제한다 -201224 + if (PORT_DISABLE) + { + if (PUB.flag.get(FG_RDY_PORT) == false) + PUB.flag.set(FG_RDY_PORT, true, "DISABLE PORT"); + this.hmi1.arVar_Port[idx].AlignOK = 1; + hmi1.arVar_Port[idx].errorCount = 0; + return; + } + + + //비활성화(좌/우 기능사용여부확인) + //if (idx == 0 && COMM.SETTING.Data.Disable_Left == true) + //{ + // this.hmi1.arVar_Port[idx].AlignOK = 1; + // return; + //} + //else if (idx == 2 && COMM.SETTING.Data.Disable_Right == true) + //{ + // this.hmi1.arVar_Port[idx].AlignOK = 1; + // return; + //} + + + //오류가 일정횟수 발생하면 RDY를 풀어준다(이경우에는 오류처리를 해서 알림을 해야할듯함!) + if (hmi1.arVar_Port[idx].errorCount > 5) + { + if (hmi1.arVar_Port[idx].AlignOK != 1) hmi1.arVar_Port[idx].AlignOK = 1; + if (PUB.flag.get(FG_RDY_PORT) == true) PUB.flag.set(FG_RDY_PORT, false, "RUN_MOT_P"); + return; + } + + //동작중에 X가 pICK 위치에 있다면. Z축이 홈인지 체크한다. + if (PUB.sm.Step == eSMStep.RUN) + { + var PKZ_UNSAFE = MOT.getPositionOffset(eAxis.PZ_PICK, MOT.GetPZPos(ePZLoc.READY).Position) > 2; + //var PKX_POS = MOT.GetPKX_PosName(); + var BSTOP = false; + + //Z축이 Ready 위치보다 낮게 있다면 멈추게한다 + if (idx == 0 && MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKOFFL)) && PKZ_UNSAFE) BSTOP = true; + else if (idx == 1 && MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKON)) && PKZ_UNSAFE) BSTOP = true; + else if (idx == 2 && MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKOFFR)) && PKZ_UNSAFE) BSTOP = true; + if (BSTOP) + { + if (DIO.GetIOOutput(DO_PORTRUN) == true) DIO.SetPortMotor(idx, eMotDir.CCW, false, "Z-NOTREADY"); + return; + } + } + + var PORTALIGN_OK = hmi1.arVar_Port[idx].AlignOK; + if (PORTALIGN_OK != 1) //align이 진행되지 않았다면 align을 잡기위해 처리를 해줘야한다 + { + if (idx != 1) + { + // + } + + //안전센서동작여부 확인 + var BSafty = DIO.isSaftyDoorF(idx, true); + + //안전이 확보된 경우에만 얼라인 ok를한다 - 임시로 해제를 한다? 상단리밋에 걸리것을 처리안하려는 코드인듯! + //if (isPortDetUp(idx) == false && isPortLimUP(idx) == true && BSafty == true) PORTALIGN_OK = 1; + + if (PORTALIGN_OK == 0) //얼라인이 완료되지 않은상태라면 모터 하강 + { + //모터하강시작시간 + PUB.Result.PortAlignTime[idx] = DateTime.Now.Ticks; + + //리밋이 감지된 상태에서 작업하는거면 좀더 오래 내린다 + //if (isPortLimUP(idx)) + //{ + if (idx == 1) PUB.Result.PortAlignWaitSec[idx] = AR.SETTING.Data.PortAlignDownTimeL; + else PUB.Result.PortAlignWaitSec[idx] = AR.SETTING.Data.PortAlignDownTimeU; + + //좌우측음 좀 덜 내려간다 + //} + //else Pub.Result.PortAlignWaitSec[idx] = 1.2f; + //Pub.Result.PortAlignWaitSec[idx] -= 1.0f; //1초제거 210108 + + //모터하강 + if (DIO.GetPortMotorDir(idx) != eMotDir.CCW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CCW, false, "하강전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CCW, true, "얼라인(DN)"); + + //하강검사시작 + hmi1.arVar_Port[idx].AlignOK = 2; + //Pub.log.AddAT($"포트({idx}) 얼라인(DOWN) 작업 시작"); + + //포트가 이제 안정화하지 않았으니 안정화를 풀어준다 + PUB.flag.set(FG_RDY_PORT, false, "MOT_PORT_ALIGNSTART"); + } + else if (PORTALIGN_OK == 2) //하강해서 찾는중 + { + //자재감지센서가 감지안되고 일정시간이 지나면 정방향으로 전환한다 + if (isPortDetUp(idx) == false) + { + var waitSec = PUB.Result.PortAlignWaitSec[idx]; + var ts = new TimeSpan(DateTime.Now.Ticks - PUB.Result.PortAlignTime[idx]); + if (ts.TotalSeconds >= waitSec) + { + if (DIO.GetPortMotorDir(idx) != eMotDir.CW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CW, false, "상승전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CW, true, "얼라인(UP)"); + hmi1.arVar_Port[idx].AlignOK = 9; //올린다 + //Pub.log.AddAT($"포트({idx}) 얼라인(UP) 작업 시작"); + } + } + else + { + //하강하는데 자재가 감지되고있네? - 하강상태가이면 하강한다 + if (DIO.GetIOOutput(DO_PORTRUN) == false) + { + if (DIO.GetPortMotorDir(idx) != eMotDir.CCW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CCW, false, "하강전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CCW, true, "얼라인(DN)"); + PUB.log.Add("PORT", "Force port to descend"); + } + + //자재가 감지되면 시간을 다시 초기화해서 충분히 내려가도록 한다 210402 + PUB.Result.PortAlignTime[idx] = DateTime.Now.Ticks; + } + + //하단 리밋에 걸렷다면 반전시켜준다. 200708 + if (isPortLimDN(idx) == true) + { + if (DIO.GetPortMotorDir(idx) != eMotDir.CW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CW, false, "리밋전환전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CW, true, "얼라인(LIM)"); + hmi1.arVar_Port[idx].AlignOK = 9; + //Pub.log.AddAT($"포트({idx}) 얼라인(UP-LIM) 작업 시작"); + } + } + else if (PORTALIGN_OK == 9) //상승해서 찾는중 + { + if (isPortDetUp(idx) || isPortLimUP(idx)) + { + hmi1.arVar_Port[idx].AlignOK = 1; //정렬완료로처리 + //Pub.log.AddAT($"포트({idx}) 얼라인 작업 완료"); + } + else if (isPortDetUp(idx) == false || isPortLimUP(idx) == false) + { + //둘다 켜지 않은 상태에서 모터가 멈춰있다면 올려준다 + if (DIO.GetIOOutput(DO_PORTRUN) == false) + { + if (DIO.GetPortMotorDir(idx) != eMotDir.CW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CW, false, "강제상승전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CW, true, "MOT_PORT"); + PUB.log.Add("PORT", "Force ascend (stopped at position 9)"); + } + } + } + else if (PORTALIGN_OK == 1) + { + //정렬완료로처리 - 201229 + hmi1.arVar_Port[idx].AlignOK = 1; + } + else + hmi1.arVar_Port[idx].AlignOK = 0; //알수없는 상태이므로 처음부터 시작하게 한다 + } + else + { + //여기코드는 PORT ALIGN 이 완료된상태(=1) 일 때 동작하는 코드이다 + if (PUB.flag.get(FG_RDY_PORT) == false) + { + if(idx != 1) + { + + } + if (hmi1.arVar_Port[idx].errorCount > 5) + { + //5회이상 오류 발생햇으니 처리하지 않음 + } + else if (isPortLimUP(idx) == true) + { + //상단 리밋이 확인됨(자재가 없는 경우임) + if (idx != 1) + { + //언로더 포트는 리밋에 걸리더라도 사용해야한다(놓는것은 가능 함) + //최초 상태에서는 반드시 이 상태가 된다 + PUB.flag.set(FG_RDY_PORT, true, "MOT_PORT_UNLOADER ON"); + } + else + { + if (isPortDetUp(idx)) + { + PUB.flag.set(FG_RDY_PORT, true, "MOT_PORT_UNLOADER ON"); + } + } + } + else if (isPortDetUp(idx) == true) + { + //자재감지가 완료되었다? + PUB.flag.set(FG_RDY_PORT, true, "RUN_MOT_P"); + } + else + { + //모터를 올리는 작업을 진행해서 P-LIMIT를 찾아야 한다 + Boolean runMot = DIO.GetPortMotorDir(idx) == eMotDir.CCW; + if (runMot == false) + { + if (DIO.GetIOOutput(DO_PORTRUN) == false) runMot = true; + } + if (runMot) + { + if (DIO.GetPortMotorDir(idx) != eMotDir.CW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CW, false, "얼라인(#1)전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CW, true, "얼라인(#1)"); + } + } + } + else //포트가 준비되면 아무것도 안한다 + { + //LIMIT이 들어와있는데 DETECT 센서도 들어와 있다면 다시 얼라인 잡게한다. + if (DIO.GetIOInput(DI_LIMUP) == true) + { + //언로더포트 0,2번은 Ready 를 풀지 않는다. + //그것은 P-LIM 상태라도 작업이 가능해야 한다 + if (idx == 1) + { + if (isPortDetUp(idx) == false) + PUB.flag.set(FG_RDY_PORT, false, "RUN_MOT_P"); + } + } + + //자재가 감지되지 않았는데. LIMIT 가 아니라면 up을 시켜준다. + if (DIO.GetIOInput(DI_DETUP) == false && DIO.GetIOInput(DI_LIMUP) == false) + { + //RDY를 해제 해준다 + PUB.flag.set(FG_RDY_PORT, false, "RUN_MOT_P"); + + if (DIO.GetIOOutput(DO_PORTRUN) == false) + { + if (DIO.GetPortMotorDir(idx) != eMotDir.CW && DIO.GetPortMotorRun(idx) == true) + { + DIO.SetPortMotor(idx, eMotDir.CW, false, "얼라인(#2)전멈춤"); + System.Threading.Thread.Sleep(100); + } + + DIO.SetPortMotor(idx, eMotDir.CW, true, "얼라인(#2)"); + } + } + } + } + + if (idx == 0) + PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_PT0); + else if (idx == 1) + PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_PT1); + else + PUB.sm.seq.UpdateTime(eSMStep.RUN_COM_PT2); + + } + } +} diff --git a/Handler/Project/RunCode/StateMachine/_Events.cs b/Handler/Project/RunCode/StateMachine/_Events.cs new file mode 100644 index 0000000..fdd2072 --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_Events.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using arDev; +using AR; + +namespace Project +{ + public partial class FMain + { + + private void SM_StateProgress(object sender, AR.StateMachine.StateProgressEventArgs e) + { + arCtl.arLabel lbl = lbMsg; + + lbl.BeginInvoke(new Action(() => + { + var title = e.Message; + var max = e.MaxProgress; + var value = e.Progress; + + + if (lbl.ProgressEnable == false) lbl.ProgressEnable = true; + if (lbl.ProgressValue != value) lbl.ProgressValue = (float)value; + if (lbl.Text != title) lbl.Text = title; + + if (max != 0) + { + if (lbl.ProgressMax != max) lbl.ProgressMax = (float)max; + } + if (e.ForeColor != null) + { + if (lbl.ProgressForeColor != e.ForeColor) lbl.ProgressForeColor = (Color)e.ForeColor; + } + if (e.ShadowColor != null) + { + if (lbl.ShadowColor != e.ShadowColor) lbl.ShadowColor = (Color)e.ShadowColor; + } + if (e.ProgressBackColor1 != null) + { + if (lbl.ProgressColor1 != e.ProgressBackColor1) lbl.ProgressColor1 = (Color)e.ProgressBackColor1; + } + if (e.ProgressBackColor2 != null) + { + if (lbl.ProgressColor2 != e.ProgressBackColor2) lbl.ProgressColor1 = (Color)e.ProgressBackColor2; + } + + if (e.BackColor1 != null) + { + if (lbl.BackColor != e.BackColor1) lbl.BackColor = (Color)e.BackColor1; + } + if (e.BackColor2 != null) + { + if (lbl.BackColor2 != e.BackColor2) lbl.BackColor2 = (Color)e.BackColor2; + } + })); + } + + private void SM_StepCompleted(object sender, EventArgs e) + { + PUB.log.Add($"Step completed({PUB.sm.Step})"); + + //초기화가 완료되면 컨트롤 글자를 변경 해준다. + if (PUB.sm.Step == eSMStep.INIT) + SM_InitControl(null, null); + + } + + private void SM_StepStarted(object sender, EventArgs e) + { + switch (PUB.sm.Step) + { + case eSMStep.IDLE: + + //IDLE의 시작작업이 완료되었다면 각 버튼을 사용할 수 있도록 한다 + this.Invoke(new Action(() => + { + btStart.Enabled = true; + btStop.Enabled = true; + btReset.Enabled = true; + })); + + break; + } + + } + + private void SM_InitControl(object sender, EventArgs e) + { + //작업시작전 컨트롤 초기화 코드 + var mc = PUB.Result.mModel; + var mv = PUB.Result.vModel; + + this.Invoke(new Action(() => + { + + //진행 중 표시되는 상태값 초기화 + lbCntRight.ProgressValue = 0; + lbCntRight.Text = "--"; + lbCntLeft.Text = "--"; + })); + + } + + + + void SM_Message(object sender, StateMachine.StateMachineMessageEventArgs e) + { + //상태머신에서 발생한 메세지 + PUB.log.Add(e.Header, e.Message); + } + + + void SM_StepChanged(object sender, StateMachine.StepChangeEventArgs e) + { + var o = (eSMStep)e.Old; + var n = (eSMStep)e.New; + PUB.log.AddI($"Step transition({o} >> {n})"); + + //230313 + //EEMStatus.AddStatusSQL(n); + } + + } +} diff --git a/Handler/Project/RunCode/StateMachine/_Loop.cs b/Handler/Project/RunCode/StateMachine/_Loop.cs new file mode 100644 index 0000000..6a985ab --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_Loop.cs @@ -0,0 +1,246 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using arDev; +using AR; + +namespace Project +{ + public partial class FMain + { + DateTime lastDeleteTime = DateTime.Now; + DateTime HomeSuccessTime; + DateTime HomeChkTime; + + + void SM_Loop(object sender, StateMachine.RunningEventArgs e) + { + //main loop + var step = (eSMStep)e.Step; + var obj = this.GetType(); + + var stepName = step.ToString(); + var methodName = $"_STEP_{stepName}"; + var methodNameStart = $"_STEP_{stepName}_START"; + var runMethodName = $"_{stepName}"; + + var method = obj.GetMethod(methodName); + var methodS = obj.GetMethod(methodNameStart); + + switch (step) + { + case eSMStep.NOTSET: + PUB.log.Add("S/M Initialize Start"); + PUB.sm.SetNewStep(eSMStep.INIT); + break; + + case eSMStep.WAITSTART: + if (e.isFirst) PUB.log.Add("EVENT WAITSTART"); + break; + + case eSMStep.PAUSE: + case eSMStep.EMERGENCY: + case eSMStep.ERROR: + if (e.isFirst) + _SM_MAIN_ERROR(e.isFirst, (eSMStep)e.Step, e.StepTime); + break; + + default: + + if (e.isFirst) + { + //시작명령은 반드시 구현할 필요가 없다 + if (methodS != null) methodS.Invoke(this, new object[] { step }); + else + { + hmi1.ClearMessage(); + PUB.log.Add($"Undefined STEP({step}) started"); + } + + if (step == eSMStep.HOME_QUICK || step == eSMStep.HOME_FULL || PUB.sm.getOldStep == eSMStep.IDLE || PUB.sm.getOldStep == eSMStep.FINISH) + { + PUB.sm.seq.ClearData(step); + PUB.sm.seq.Clear(step); + } + + PUB.sm.seq.ClearTime(); + PUB.sm.RaiseStepStarted(); + } + + if (PUB.popup.needClose) System.Threading.Thread.Sleep(10); + else + { + //스텝번호값 보정 220313 + if (PUB.sm.seq.Get(step) < 1) PUB.sm.seq.Update(step, 1); + + if (method == null) + { + var runMethod = obj.GetMethod(runMethodName); + if (runMethod == null) + { + PUB.log.AddE($"The following command is not implemented {methodName}/{runMethodName}"); + PUB.Result.SetResultMessage(eResult.DEVELOP, eECode.NOFUNCTION, eNextStep.ERROR, methodName, runMethodName); + } + else + { + var stepName2 = step.ToString(); + + //실행코드는 있으니 처리한다. + if (PUB.popup.needClose) System.Threading.Thread.Sleep(10); //팝업이 닫힐때까지 기다린다. + else + { + //실행가능여부를 확인 합니다 + if (CheckSystemRunCondition() == true) + { + //동작상태가 아니라면 처리하지 않는다. + if (PUB.sm.Step == step && PUB.sm.getNewStep == step) + { + var param = new object[] { step }; + var rlt = (bool)runMethod.Invoke(this, param); + if (rlt == true) + { + PUB.log.AddI("User step(automatic) execution completed, switching to idle state"); + PUB.sm.SetNewStep(eSMStep.IDLE, true); + } + } + } + } + } + } + else + { + var param = new object[] { step, e.StepTime, PUB.sm.seq.GetTime(step) }; + var rlt = (StepResult)method.Invoke(this, param); + if (rlt == StepResult.Complete) PUB.sm.RaiseStepCompleted(); + else + { + //사용자 스텝이 설정되어있다면 자동으로 멈춘다 220223 + if (rlt == StepResult.Error) + { + if (PUB.sm.getNewStep != eSMStep.ERROR) + PUB.sm.SetNewStep(eSMStep.ERROR); + } + + if (PUB.flag.get(eVarBool.FG_USERSTEP) == true) + { + if (PUB.sm.Step >= eSMStep.RUN && PUB.sm.getNewStep >= eSMStep.RUN && + PUB.sm.Step < eSMStep.FINISH && PUB.sm.getNewStep < eSMStep.FINISH) + { + //유저스텝에 걸려있지 않다면 자동으로 멈춘다 + if (LockUserL.WaitOne(10) && LockUserR.WaitOne(10)) + { + //Pub.Result.SetResultMessage(eResult.OPERATION, eECode.USER_STOP) + PUB.Result.ResultMessage = string.Empty; + PUB.sm.SetNewStep(eSMStep.PAUSE); + } + } + } + } + } + } + break; + } + } + + void DeleteFile(string path) + { + var basetime = DateTime.Now.AddDays(-1 * AR.SETTING.Data.AutoDeleteDay); + var di = new System.IO.DirectoryInfo(path); + if (di.Exists) + { + var dirYear = di.GetDirectories().OrderBy(t => t.Name).FirstOrDefault(); + if (dirYear != null) + { + var dirMon = dirYear.GetDirectories().OrderBy(t => t.Name).FirstOrDefault(); + if (dirMon != null) + { + var dirDay = dirMon.GetDirectories().OrderBy(t => t.Name).FirstOrDefault(); + if (dirDay != null) + { + var curDay = DateTime.Parse(string.Format("{0}-{1}-{2} 00:00:00", dirYear.ToString(), dirMon.ToString(), dirDay.ToString())); + if (curDay < basetime) + { + var dirLot = dirDay.GetDirectories().OrderBy(t => t.Name).FirstOrDefault(); + if (dirLot != null) + { + var delfile = dirLot.GetFiles().FirstOrDefault(); + if (delfile != null) + { + try + { + PUB.log.AddI("Remove Fle : " + delfile.FullName + ",time=" + delfile.LastWriteTime.ToString()); + delfile.Delete(); + } + catch (Exception ex) + { + PUB.log.AddE("deleete error : " + ex.Message); + } + } + else + { + string delpath = dirLot.FullName; + try + { + dirLot.Delete(true); + } + catch (Exception ex) + { + PUB.log.AddE("remove dir" + ex.Message + "," + delpath); + } + + } + } + else + { + //이 폴더아래에 다른 폴더가 하나도 없다 즉 비어 있따. + string delpath = dirDay.FullName; + try + { + dirDay.Delete(true); + } + catch (Exception ex) + { + PUB.log.AddE("remove dir" + ex.Message + "," + delpath); + } + } + } + + } + else + { + //날짜에 해당하는 폴더가 하나도 없다. 월 폴더를 제거한다. + string delpath = dirMon.FullName; + try + { + dirMon.Delete(true); + } + catch (Exception ex) + { + PUB.log.AddE("remove dir" + ex.Message + "," + delpath); + } + } + } + else + { + //이 달에 해당하는 데이터가 없다. 이 년도를 삭제한다. + string delpath = dirYear.FullName; + try + { + dirYear.Delete(true); + } + catch (Exception ex) + { + PUB.log.AddE("remove dir" + ex.Message + "," + delpath); + } + } + } + //년도별폴더목록을 정리함 + //가장작은 년도를 기준으로 파일을 검색해서 1개씩 삭제함 + } + } + + + } +} diff --git a/Handler/Project/RunCode/StateMachine/_SM_DIO.cs b/Handler/Project/RunCode/StateMachine/_SM_DIO.cs new file mode 100644 index 0000000..deb222a --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_SM_DIO.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e) + { + if (e.Direction == arDev.DIO.eIOPINDIR.INPUT) + { + var diPin = DIO.Pin.input.Where(t=>t.terminalno == e.ArrIDX).FirstOrDefault(); + if(diPin == null) + { + PUB.log.AddE($"No terminal target found for DI INDEX:{e.ArrIDX}"); + } + else + { + var pin = (eDIName)diPin.idx; + if (AR.SETTING.Data.Log_DI) + { + PUB.log.Add("DIO", String.Format("DI:IDX={0},DIR={1},VAL={2},NM={3}", e.ArrIDX, e.Direction, e.NewValue, diPin)); + } + var value = DIO.GetIOInput(pin); + _DIO_INPUT_VALUE_CHANGED(pin, value); + } + } + else + { + var doPin = DIO.Pin.output.Where(t => t.terminalno == e.ArrIDX).FirstOrDefault(); + if (doPin == null) + { + PUB.log.AddE($"No terminal target found for DO INDEX:{e.ArrIDX}"); + } + else + { + var pin = (eDOName)doPin.idx; + + if (AR.SETTING.Data.Log_DO) + { + //타워램프는 제외하낟. + if (e.ArrIDX != (byte)eDOName.TWR_GRNF && + e.ArrIDX != (byte)eDOName.TWR_REDF && + e.ArrIDX != (byte)eDOName.TWR_YELF && + e.ArrIDX != (byte)eDOName.BUT_STARTF && + e.ArrIDX != (byte)eDOName.BUT_STOPF && + e.ArrIDX != (byte)eDOName.BUT_RESETF) + PUB.log.Add("DIO", String.Format("DO:IDX={0},DIR={1},VAL={2}", e.ArrIDX, e.Direction, e.NewValue)); + } + _DIO_OUTPUT_VALUE_CHANGED(pin, e.NewValue); + + } + + } + } + + void _DIO_IOMessage(object sender, arDev.DIO.MessageEventArgs e) + { + if (e.IsError) + { + if (e.Message.ToLower().IndexOf("inposi") != -1 || e.Message.ToLower().IndexOf("동일위치") != -1) + { + PUB.log.AddAT("DIO:" + e.Message); + } + else + { + PUB.log.AddE("DIO:" + e.Message); + } + } + else PUB.log.Add("DIO:" + e.Message); + } + + //void IO_SaftySensor_Changed(eDIName pin, eFlag flag, eVar_Date varDt_On, eVar_Date varDt_Off, bool value) + //{ + // //안전센서는 일정 시간 동작하는것을 체크한다 + // Pub.log.AddAT(string.Format("{0} Sensor : {1}", pin, value)); + // if (value) Pub.Var_dateTime[(int)varDt_On] = DateTime.Now; + // else Pub.Var_dateTime[(int)varDt_Off] = DateTime.Now; + //} + + void IncCount(int seq, int port, int value = 1) + { + if (SETTING.Counter.DateStr != DateTime.Now.ToShortDateString()) + { + if (port == 0) SETTING.Counter.CountDP1 = value; + if (port == 1) SETTING.Counter.CountDP2 = value; + if (port == 2) SETTING.Counter.CountDP3 = value; + if (port == 3) SETTING.Counter.CountDP4 = value; + SETTING.Counter.DateStr = DateTime.Now.ToShortDateString(); + } + else + { + if (port == 0) SETTING.Counter.CountDP1 += value; + if (port == 1) SETTING.Counter.CountDP2 += value; + if (port == 2) SETTING.Counter.CountDP3 += value; + if (port == 3) SETTING.Counter.CountDP4 += value; + } + + + //각 포트별 수량은 차수별 작업이므로 차수가 변경되면 리셋됨 + //리셋되는 코드 필요함 + if (port == 0) SETTING.Counter.CountP0 += value; + if (port == 1) SETTING.Counter.CountP1 += value; + if (port == 2) SETTING.Counter.CountP2 += value; + if (port == 3) SETTING.Counter.CountPrintR += value; + else + { + PUB.log.AddAT(string.Format("[{0}] Cannot increase quantity as it is an unspecified port", seq)); + } + + //Pub.log.AddI("수량정보가 저장 되었습니다"); + SETTING.Counter.Save(); + } + + + + + } +} diff --git a/Handler/Project/RunCode/StateMachine/_SM_RUN.cs b/Handler/Project/RunCode/StateMachine/_SM_RUN.cs new file mode 100644 index 0000000..b7b51b0 --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_SM_RUN.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + #region "Common Utility" + + + + + /// + /// 지정된 시간만큼 대기하며 완료되면 true를 반환합니다. + /// + /// + /// + Boolean WaitForSeconds(eWaitType wait, double timems) + { + var idx = (byte)wait; + if (PUB.Result.WaitForVar[idx] == null || PUB.Result.WaitForVar[idx].Year == 1982) + { + PUB.Result.WaitForVar[idx] = PUB.Result.WaitForVar[idx] = DateTime.Now; + //Pub.log.Add(string.Format("Wait for [{0}], Wait Time:{1}ms", wait, timems)); + } + var ts = DateTime.Now - PUB.Result.WaitForVar[idx]; + if (ts.TotalSeconds >= timems) return true; + else return false; + } + + void ResetWaitForSeconds(eWaitType wait) + { + var idx = (byte)wait; + PUB.Result.WaitForVar[idx] = DateTime.Parse("1982-11-23"); + } + + #endregion + + }//cvass +} diff --git a/Handler/Project/RunCode/StateMachine/_SPS.cs b/Handler/Project/RunCode/StateMachine/_SPS.cs new file mode 100644 index 0000000..2bade37 --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_SPS.cs @@ -0,0 +1,265 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text.RegularExpressions; +using AR; + +namespace Project +{ + public partial class FMain + { + void SM_SPS(object sender, EventArgs e) + { + //명령어 가져오기 7:3개의 데이터 확인 + if (PUB.plc != null && PUB.plc.Init) + { + if (PUB.plc.ReadBytes(0, 16, out byte[] plcbuffer)) + { + //내부버퍼에 상태를 기록한다 + Array.Copy(plcbuffer, 0, PUB.swPLCBuffer, 0, plcbuffer.Length); + } + } + + //인터락설정(공용) + Set_InterLock(); + + //230905 + hmi1.CVLeftBusy = PUB.iLockCVL.get((int)eILockCV.BUSY); + hmi1.CVLeftReady = PUB.iLockCVL.get((int)eILockCV.EXTBUSY); + hmi1.CVRightBusy = PUB.iLockCVR.get((int)eILockCV.BUSY); + hmi1.CVRightReady = PUB.iLockCVR.get((int)eILockCV.EXTBUSY); + + //XMOVE 시에 RESET 키를 이용한 장치 초기화 작업 + if (PUB.sm.Step == eSMStep.IDLE) + if (PUB.mot.HasHomeSetOff == true) + if (DIO.GetIOInput(eDIName.BUT_RESETF) == true) + if (DIO.GetIOInput(eDIName.PICKER_SAFE) == true) + if (PUB.Result.ResetButtonDownTime.Year != 1982) + if ((DateTime.Now - PUB.Result.ResetButtonDownTime).TotalSeconds >= 5) + Func_sw_initialize(); + + //비상정지체크 + if (PUB.dio.IsInit == true) + { + if (DIO.IsEmergencyOn() == true) + { + //모터에 비상정지신호를 바로 전송한다 + //Util_DO.SetMotEmergency(true); + DIO.SetMotPowerOn(false); + DIO.SetMotEmergency(true); + if (PUB.sm.Step > eSMStep.IDLE) + { + string EmgButtonState = string.Empty; + if (DIO.GetIOInput(eDIName.BUT_EMGF)) EmgButtonState = "EMG-FRONT"; + + if (PUB.sm.Step != eSMStep.EMERGENCY && + PUB.sm.getNewStep != eSMStep.EMERGENCY) + { + PUB.mot.MoveStop("EmgBut", true); //모든 축 강제정지 (물리시그널에 의해 미리 정지 된 상태임) + + //비상상태가 아니라면 비상으로 전환해준다. + + PUB.Result.ResultCode = eResult.EMERGENCY; + PUB.Result.ResultMessage = string.Format("EMERGENCY\n" + + "Emergency stop button ({0}) has been pressed\n" + + "All motions are forced to stop\n" + + "Please check the emergency stop button and initialize the system", EmgButtonState); + + PUB.log.AddI("SPS:Reserve Emergency Step"); + PUB.sm.SetNewStep(eSMStep.EMERGENCY); + } + } + } + else + { + //이머전시가 해제되었으므로 파워를 복원한다. + DIO.SetMotPowerOn(true); + DIO.SetMotEmergency(false); + } + } + + //룸조명(자동) + if (PUB.dio.IsInit) + Func_AutoRoomLight(); + + //부저확인 + if (PUB.dio.IsInit) + Func_BuzzerControl(); + + //충돌검사() + if (PUB.dio.IsInit && PUB.mot.IsInit) + CheckCollision(); + + //포트의 UP/DN 모터 + PortZMotorAutoOff(); + + //포트의 마그넷 작동 + PortMagnet(); + + //동작중에 데이터가 reset 되는 코드 임시로 모니터링한다. + if (PUB.sm.Step != eSMStep.IDLE && PUB.sm.Step != eSMStep.HOME_FULL && PUB.sm.Step != eSMStep.HOME_QUICK) + { + var currid = PUB.Result.ItemDataC.VisionData.RID; + if (currid.Equals(lastridv1) == false) + { + PUB.AddDebugLog("[SPS] RID값 변경 감지 :" + currid); + lastridv1 = currid; + } + } + + //process barcode + BarcodeProcess(); + AutoOutConveyor(); + } + string lastridv1 = string.Empty; + + + + System.Diagnostics.Stopwatch UnloaderWatch = new System.Diagnostics.Stopwatch(); + + void PortMagnet() + { + if (PUB.flag.get(eVarBool.FG_WAT_MAGNET0) && DIO.GetIOOutput(eDOName.PORTL_MAGNET) == false) + { + var ts = DateTime.Now - VAR.TIME[(int)eVarTime.MAGNET0]; + if (ts.TotalMilliseconds > AR.SETTING.Data.WaitTime_Magnet0) + { + DIO.SetPortMagnet(0, true); //Util_DO.SetOutput(eDOName.CART_MAG0, true); + PUB.flag.set(eVarBool.FG_WAT_MAGNET0, false, "SPS-MAGON"); + } + } + if (PUB.flag.get(eVarBool.FG_WAT_MAGNET0) == true && DIO.GetIOOutput(eDOName.PORTL_MAGNET) == true) + { + PUB.flag.set(eVarBool.FG_WAT_MAGNET0, false, "SPS-MAGOFF"); + } + + if (PUB.flag.get(eVarBool.FG_WAT_MAGNET1) && DIO.GetIOOutput(eDOName.PORTC_MAGNET) == false) + { + var ts = DateTime.Now - VAR.TIME[(int)eVarTime.MAGNET1]; + if (ts.TotalMilliseconds > AR.SETTING.Data.WaitTime_Magnet1) + { + DIO.SetPortMagnet(1, true); // Util_DO.SetOutput(eDOName.CART_MAG1, true); + PUB.flag.set(eVarBool.FG_WAT_MAGNET1, false, "SPS-MAGON"); + } + } + if (PUB.flag.get(eVarBool.FG_WAT_MAGNET1) == true && DIO.GetIOOutput(eDOName.PORTC_MAGNET) == true) + { + PUB.flag.set(eVarBool.FG_WAT_MAGNET1, false, "SPS-MAGOFF"); + } + + + if (PUB.flag.get(eVarBool.FG_WAT_MAGNET2) && DIO.GetIOOutput(eDOName.PORTR_MAGNET) == false) + { + var ts = DateTime.Now - VAR.TIME[(int)eVarTime.MAGNET2]; + if (ts.TotalMilliseconds > AR.SETTING.Data.WaitTime_Magnet2) + { + DIO.SetPortMagnet(2, true); // Util_DO.SetOutput(eDOName.CART_MAG2, true); + PUB.flag.set(eVarBool.FG_WAT_MAGNET2, false, "SPS-MAGON"); + } + } + if (PUB.flag.get(eVarBool.FG_WAT_MAGNET2) == true && DIO.GetIOOutput(eDOName.PORTR_MAGNET) == true) + { + PUB.flag.set(eVarBool.FG_WAT_MAGNET2, false, "SPS-MAGOFF"); + } + } + + int intlockcnt = 0; + + /// + /// 이 기능은 DIO 에서도 처리된다. - 해당 위치가 더 빠를듯 하여 ,그곳에서도 처리되고 이곳에서도 추가 처리를 한다 + /// + private void PortZMotorAutoOff() + { + //dir 이 켜져있다면 Up/ 꺼져있다면 down + var P0DirUp = DIO.GetPortMotorDir(0) == eMotDir.CW; + var P1DirUp = DIO.GetPortMotorDir(1) == eMotDir.CW; + var P2DirUp = DIO.GetPortMotorDir(2) == eMotDir.CW; + + var P0Run = DIO.GetIOOutput(eDOName.PORTL_MOT_RUN); + var P1Run = DIO.GetIOOutput(eDOName.PORTC_MOT_RUN); + var P2Run = DIO.GetIOOutput(eDOName.PORTR_MOT_RUN); + + var P0LimUp = DIO.GetIOInput(eDIName.PORTL_LIM_UP); + var P1LimUp = DIO.GetIOInput(eDIName.PORTC_LIM_UP); + var P2LimUp = DIO.GetIOInput(eDIName.PORTR_LIM_UP); + + var P0DetUp = DIO.GetIOInput(eDIName.PORTL_DET_UP); + var P1DetUp = DIO.GetIOInput(eDIName.PORTC_DET_UP); + var P2DetUp = DIO.GetIOInput(eDIName.PORTR_DET_UP); + + var P0LimDn = DIO.GetIOInput(eDIName.PORTL_LIM_DN); + var P1LimDn = DIO.GetIOInput(eDIName.PORTC_LIM_DN); + var P2LimDn = DIO.GetIOInput(eDIName.PORTR_LIM_DN); + + //현재 출력중이고, 상단이 켜져있는데 상단 센서가 들어와잇다면 OFF 한다 + if (P0Run && P0DirUp && (P0LimUp || P0DetUp)) DIO.SetPortMotor(0, eMotDir.CCW, false, "SPS"); + if (P1Run && P1DirUp && (P1LimUp || P1DetUp)) DIO.SetPortMotor(1, eMotDir.CCW, false, "SPS"); + if (P2Run && P2DirUp && (P2LimUp || P2DetUp)) DIO.SetPortMotor(2, eMotDir.CCW, false, "SPS"); + + //현재 출력중이고, 하단이 켜져있는데. 하단 센서가 들어와 있다면 Off 한다 + if (P0Run && P0DirUp == false && P0LimDn) DIO.SetPortMotor(0, eMotDir.CW, false, "SPS"); + if (P1Run && P1DirUp == false && P1LimDn) DIO.SetPortMotor(1, eMotDir.CW, false, "SPS"); + if (P2Run && P2DirUp == false && P2LimDn) DIO.SetPortMotor(2, eMotDir.CW, false, "SPS"); + + //작업이 종료되어서 포트가 내려가고 있다면 5초뒤에 멈춘다 - 210405 + if (PUB.flag.get(eVarBool.FG_PORT1_ENDDOWN) && AR.SETTING.Data.Port1FisnishDownTime > 0) + { + var runtime = DateTime.Now - VAR.TIME[(int)eVarTime.PORT1]; + if (runtime.TotalMilliseconds >= AR.SETTING.Data.Port1FisnishDownTime) + { + if (P1Run && PUB.sm.isRunning == false && DIO.GetPortMotorDir(1) == eMotDir.CCW) + { + DIO.SetPortMotor(1, eMotDir.CW, false, "SPS"); + } + PUB.flag.set(eVarBool.FG_PORT1_ENDDOWN, false, "SPS"); + VAR.TIME.Update(eVarTime.PORT1); + } + } + } + + DateTime CollCheckTime = DateTime.Now; + private void CheckCollision() + { + //충돌검검사 (홈 이 완료안된 모터에는 처리하지 않는다) + if (PUB.sm.Step != eSMStep.RUN || PUB.sm.getNewStep != eSMStep.RUN) return; + + //초당 20번 검사하게 함 + var ts = DateTime.Now - CollCheckTime; + if (ts.TotalMilliseconds < 50) return; + + + + //현재 시간으로 설정 + CollCheckTime = DateTime.Now; + } + + private void Func_AutoRoomLight() + { + if (AR.SETTING.Data.Enable_AutoLight == false) return; + + } + + + private void Func_BuzzerControl() + { + //if (AR.SETTING.Data.Disable_Buzzer == false) return; + if (PUB.BuzzerTime.Year == 1982) return; //시간설정이없으면 out + if (DIO.GetIOOutput(eDOName.BUZZER) == false) return; //부저가 꺼져있다면 out + if (AR.SETTING.Data.buzz_run_ms != 0) //시간이 설정된 경우에만 작동190509 + { + if (PUB.BuzzerTime.Year == 1982) PUB.BuzzerTime = DateTime.Now; + else + { + var ts = DateTime.Now - PUB.BuzzerTime; + if (ts.TotalMilliseconds >= AR.SETTING.Data.buzz_run_ms) //지정시간이 초과된경우에만 OFF + { + PUB.log.Add("Auto Buzzer Off by SPS"); + DIO.SetBuzzer(false); //지정시간초과로 부저를 OFF 한다. + } + } + } + } + + } +} diff --git a/Handler/Project/RunCode/StateMachine/_SPS_AutoOutConveyor.cs b/Handler/Project/RunCode/StateMachine/_SPS_AutoOutConveyor.cs new file mode 100644 index 0000000..7d5abf8 --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_SPS_AutoOutConveyor.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text.RegularExpressions; +using AR; + +namespace Project +{ + public partial class FMain + { + //컨베이어 배출신호를 자동 해제한다.(지정시간-초) + DateTime AutoConvOutTimeL = new DateTime(1982, 11, 23); + DateTime AutoConvOutTimeR = new DateTime(1982, 11, 23); + void AutoOutConveyor() + { + //동작중에만 사용한다 + if (PUB.sm.Step != eSMStep.RUN) return; + + //컨베이어 사용시에만. + if (VAR.BOOL[eVarBool.Use_Conveyor] == false) return; + + //모델정보 필수 + if (PUB.Result.vModel == null || PUB.Result.isSetvModel == false) return; + + //자동 해제 시간확인 (0=비활성) + var AutoReleaseSecond = PUB.Result.vModel.AutoOutConveyor; + if (AutoReleaseSecond < 1) return; + + //현재 모델의 사용여부 확인 (UI상단에서 버튼으로 클릭가능하다) + if (PUB.Result.AutoReelOut == false) return; + + //외부신호 대기중일때만 사용 + if (PUB.iLockCVL.get((int)eILockCV.EXTBUSY) && DIO.GetIOInput(eDIName.L_CONV4)) + { + if (VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] == false) + { + if (AutoConvOutTimeL.Year == 1982) AutoConvOutTimeL = DateTime.Now; + var ts = DateTime.Now - AutoConvOutTimeL; + if (ts.TotalSeconds > AutoReleaseSecond) + { + PUB.log.AddI($"Auto Conveyor(L) Output - On"); + VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] = true; + AutoConvOutTimeL = DateTime.Now; + } + } + } + else if (VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] == true) + { + var ts = DateTime.Now - AutoConvOutTimeL; + if (ts.TotalSeconds > SETTING.Data.Timeout_AutoOutConvSignal) + { + PUB.log.Add($"Auto Conveyor(L) Output - Off"); + VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] = false; + AutoConvOutTimeL = new DateTime(1982, 11, 23); + } + } + + //외부신호 대기중일때만 사용 + if (PUB.iLockCVR.get((int)eILockCV.EXTBUSY) && DIO.GetIOInput(eDIName.R_CONV4)) + { + if (VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] == false) + { + if (AutoConvOutTimeR.Year == 1982) AutoConvOutTimeR = DateTime.Now; + var ts = DateTime.Now - AutoConvOutTimeR; + if (ts.TotalSeconds > AutoReleaseSecond) + { + PUB.log.AddI($"Auto Conveyor(R) Output - On"); + VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] = true; + AutoConvOutTimeR = DateTime.Now; + } + } + } + else if (VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] == true) + { + var ts = DateTime.Now - AutoConvOutTimeR; + if (ts.TotalSeconds > SETTING.Data.Timeout_AutoOutConvSignal) + { + PUB.log.Add($"Auto Conveyor(R) Output - Off"); + VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] = false; + AutoConvOutTimeR = new DateTime(1982, 11, 23); + } + } + } + + } +} diff --git a/Handler/Project/RunCode/StateMachine/_SPS_BarcodeProcess.cs b/Handler/Project/RunCode/StateMachine/_SPS_BarcodeProcess.cs new file mode 100644 index 0000000..f437a01 --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_SPS_BarcodeProcess.cs @@ -0,0 +1,266 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text.RegularExpressions; +using AR; + +namespace Project +{ + public partial class FMain + { + + Tuple> BarcodeRegExProcess( + List patterns, + List patternsEx, + Class.VisionData vdata, string barcodeSymbol, + string bcd, out bool IgnoreBarcode, out bool findregex) + { + //var patterns = PUB.Result.BCDPattern; + IgnoreBarcode = false; + findregex = false; + if (barcodeSymbol == "6") barcodeSymbol = "11"; //250930 + + //get : same symbol data + List pats; + if (patterns != null) + { + if (barcodeSymbol.isEmpty() == false) pats = patterns.Where(t => t.IsEnable == true && (string.IsNullOrEmpty(t.Symbol) || t.Symbol == barcodeSymbol)).OrderBy(t => t.Seq).ToList(); + else pats = patterns.Where(t => t.IsEnable == true).OrderBy(t => t.Seq).ToList(); + } + else pats = new List(); + + + List patsEx; + if (patternsEx == null) patsEx = new List(); + else + { + if (barcodeSymbol.isEmpty() == false) patsEx = patternsEx.Where(t => string.IsNullOrEmpty(t.Symbol) || t.Symbol == barcodeSymbol).OrderBy(t => t.Seq).ToList(); + else patsEx = patternsEx.Where(t => t.IsEnable == true).OrderBy(t => t.Seq).ToList(); + } + + + + //모델정보의 허용 심볼인지 확인한다 221017 + var vm = PUB.Result.vModel; + if (vm != null) + { + if (vm.BCD_DM == false && barcodeSymbol == "2") + { + PUB.log.AddAT($"Inactive in model Symbol Setting(DM):{bcd}"); + IgnoreBarcode = true; + return new Tuple>(0, new List()); + } + else if (vm.BCD_1D == false && (barcodeSymbol == "6" || barcodeSymbol == "11")) + { + PUB.log.AddAT($"Inactive in model Symbol Setting(1D):{bcd}"); + IgnoreBarcode = true; + return new Tuple>(0, new List()); + } + else if (vm.BCD_QR == false && (barcodeSymbol == "1")) + { + PUB.log.AddAT($"Inactive in model Symbol Setting(QR):{bcd}"); + IgnoreBarcode = true; + return new Tuple>(0, new List()); + } + } + + //check barcode pattern + if (pats.Any() == false) + { + PUB.log.AddAT($"No registered pattern(SYM={barcodeSymbol}) Model:{vm.Title}"); + return new Tuple>(0, new List()); + } + + //이 바코드가 무시바코드에 있는지 먼저 검사한다 220718 + foreach (var pt in patsEx) + { + //skip disable item + if (pt.IsEnable == false) continue; + + //check regex + var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10)); + if (regx.IsMatch(bcd)) + { + PUB.log.AddAT($"Ignore barcode:{bcd},PAT:{pt.Pattern},SYM:{pt.Symbol}"); + IgnoreBarcode = true; + break; + } + } + if (IgnoreBarcode) + { + return new Tuple>(0, new List()); + } + + + //동작중에 들어오는 바코드의 자동처리코드 추가 250926 + if (PUB.sm.Step == eSMStep.RUN || PUB.sm.Step == eSMStep.PAUSE || PUB.sm.Step == eSMStep.WAITSTART) + { + + var OPT_PrinterOff = VAR.BOOL[eVarBool.Opt_DisablePrinter]; + var OPT_CameraOff = PUB.OPT_CAMERA(); + var OPT_BYPASS = PUB.OPT_BYPASS(); + + if (OPT_BYPASS == false) + { + //기본 벤더이름 + if (PUB.Result.vModel.Def_Vname.isEmpty() == false) + { + if (vdata.VNAME.Equals(PUB.Result.vModel.Def_Vname) == false) + { + vdata.VNAME = PUB.Result.vModel.Def_Vname; + vdata.VNAME_Trust = true; + PUB.log.Add($"Defaul V.Name Set to {PUB.Result.vModel.Def_Vname}"); + } + } + + //기본 MFG + if (PUB.Result.vModel.Def_MFG.isEmpty() == false) + { + if (vdata.MFGDATE.Equals(PUB.Result.vModel.Def_MFG) == false) + { + vdata.MFGDATE = PUB.Result.vModel.Def_MFG; + vdata.MFGDATE_Trust = true; + PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}"); + } + } + + //파트넘버무시 + if (PUB.Result.vModel.IgnorePartNo) + { + vdata.PARTNO_Trust = true; + } + + //배치무시 + if (PUB.Result.vModel.IgnoreBatch) + { + + } + + //프린트를 하지 않는 경우에는 프린트 위치를 자동으로 처리한다. + if (OPT_PrinterOff == true) + { + vdata.PrintPositionData = "0"; + vdata.PrintPositionCheck = true; + } + } + else + { + if (vdata.VNAME_Trust == false) + { + vdata.VNAME = "BYPASS"; + vdata.VNAME_Trust = true; + } + } + } + + var ValueApplyCount = 0; + ValueApplyCount = 0; + List list = new List(); + findregex = false; + foreach (var pt in pats) + { + //skip disable item + if (pt.IsEnable == false) continue; + + var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 5)); + try + { + if (regx.IsMatch(bcd)) + { + findregex = true; + //find data + var matchs = regx.Matches(bcd); + foreach (System.Text.RegularExpressions.Match mat in matchs) + { + + if (vdata == null) ValueApplyCount += 1; + else + { + foreach (var matchdata in pt.Groups) + { + if (matchdata.GroupNo <= mat.Groups.Count) + { + var data = mat.Groups[matchdata.GroupNo]; + if (PUB.SetBCDValue(vdata, matchdata.TargetPos, data.Value, pt.IsTrust)) + ValueApplyCount += 1; + } + } + } + } + + if (vdata != null && pt.IsAmkStd)// && bcdObj.barcodeSymbol == "1") + { + vdata.QRInputRaw = bcd; + } + + if (vdata != null) + PUB.log.AddI($"[{pt.Description}]=>{bcd}"); + + list.Add(pt.Customer + "|" + pt.Description); + } + else + { + //PUB.log.AddAT($"(X)Match ({pt.Pattern}) Data={bcd}"); + } + } + catch (Exception ex) + { + PUB.log.AddE($"BarcodeRegEx Error : {ex.Message}"); + } + + } + return new Tuple>(ValueApplyCount, list); + } + + /// + /// barcod eprocess + /// + void BarcodeProcess() + { + var itemC = PUB.Result.ItemDataC; + var vdata = itemC.VisionData; + + //No Run - Confirm Data + if (vdata.Confirm) return; + var vm = PUB.Result.vModel; + + lock (vdata.barcodelist) + { + foreach (var item in vdata.barcodelist) + { + //var src = item.Value.barcodeSource; + var bcd = item.Value.Data; + var bcdObj = item.Value; + + //already checked + if (bcdObj.RegExConfirm) continue; + + lock (PUB.Result.BCDPatternLock) + { + var ValueApplyCount = BarcodeRegExProcess(PUB.Result.BCDPattern, PUB.Result.BCDIgnorePattern, vdata, bcdObj.barcodeSymbol, bcd, out bool IgnoreBcd, out bool findregex); + bcdObj.Ignore = IgnoreBcd; + + //기타바코드 무시기능 적용 221018 + if (vm != null && vm.IgnoreOtherBarcode == true && findregex == false) + bcdObj.Ignore = true; + + bcdObj.RefExApply = (ValueApplyCount?.Item1 ?? 0); + bcdObj.RegExConfirm = true; + } + + + + } + } + + //all process sequence + if (BCDProcess_ALL(itemC, "SPS", PUB.sm.Step == eSMStep.RUN) != EResultKeyence.Nothing) + { + //nothing : multisid condition + } + + + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/StateMachine/_SPS_RecvQRProcess.cs b/Handler/Project/RunCode/StateMachine/_SPS_RecvQRProcess.cs new file mode 100644 index 0000000..603e6ea --- /dev/null +++ b/Handler/Project/RunCode/StateMachine/_SPS_RecvQRProcess.cs @@ -0,0 +1,147 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text.RegularExpressions; +using Newtonsoft.Json.Linq; + +namespace Project +{ + public partial class FMain + { + bool RecvQRProcess(List qrdatas, eWorkPort vIdx) + { + //데이터가없으면 처리하지 않는다. + if (qrdatas == null || qrdatas.Count < 1) return false; + + bool FindData = false; + var idata = vIdx == eWorkPort.Left ? PUB.Result.ItemDataL : PUB.Result.ItemDataR; + + //표준바코드라면 그 값을 표시해준다 + lock (PUB.Result.BCDPatternLock) + { + var patterns = PUB.Result.BCDPattern; + + foreach (var datas in qrdatas) + { + // JSON 구조에서 "data" 필드 추출 + string barcodeData = datas; + try + { + var jobj = JObject.Parse(datas); + if (jobj["data"] != null) + { + barcodeData = jobj["data"].ToString(); + } + } + catch + { + // JSON 파싱 실패 시 원본 데이터 사용 + barcodeData = datas; + } + + //원본자료를 체크한다 + if (barcodeData.Equals(idata.VisionData.PrintQRData)) + { + //인쇄한 자료와 동일한 자료이다 + FindData = true; + } + + //표준 바코드 형태만 취한다 + var pats = patterns.Where(t => t.IsAmkStd && t.IsEnable).OrderBy(t => t.Seq).ToList(); + if (pats.Any()) + { + //패턴을 확인하여 값을 표시해준다 + //var ValueApplyCount = 0; + foreach (var pt in pats) + { + var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10)); + if (regx.IsMatch(barcodeData)) //패턴이 일치하다면 이것만 사용한다 + { + //find data + var matchs = regx.Matches(barcodeData); + foreach (System.Text.RegularExpressions.Match mat in matchs) + { + foreach (var matchdata in pt.Groups) + { + if (matchdata.GroupNo <= mat.Groups.Count) + { + var data = mat.Groups[matchdata.GroupNo]; + switch (matchdata.TargetPos.ToUpper()) + { + case "SID": + idata.VisionData.SID2 = data.Value; + break; + case "RID": + idata.VisionData.RID2 = data.Value; + break; + case "VLOT": + idata.VisionData.VLOT2 = data.Value; + break; + case "VNAME": + idata.VisionData.VNAME2 = data.Value; + break; + case "MFG": + idata.VisionData.MFGDATE2 = data.Value; + break; + case "QTY": + idata.VisionData.QTY2 = data.Value; + break; + case "PART": + idata.VisionData.PARTNO2 = data.Value; + break; + } + } + } + } + break; + } + } + } + } + + } + + + //자료는 있었지만 바코드검증이 실패된 경우이다 + //타임아웃까지 기다리지 않고 바로 오류처리를 한다. + if (FindData == true) + { + //데이터를 찾았다면 완료처리를 해준다 + idata.VisionData.Complete = true; + //PUB.Result.ItemData[vIdx].VisionData.Complete = true; + return true; + + } + + return false; + + //else + //{ + // var item = Pub.Result.ItemData[vIdx]; + // var tsGrab = DateTime.Now - Pub.GetVarTime(VAR_LIVEVIEW); + // var timeoutVision = vIdx == 1 ? COMM.SETTING.Data.Timeout_VisionProcessL : COMM.SETTING.Data.Timeout_VisionProcessU; + // if (tsGrab.TotalMilliseconds >= timeoutVision) + // { + // //다음 바코드가 있다면 추가 진행을 위해서 남겨준다 + // _SM_SAVEIMAGE(vIdx, DateTime.Now, "Images(QRValid)"); + + + // WS_Send((idx == 0 ? 0 : 1), Pub.wsL, Pub.Result.ItemData[idx].guid, "OFF"); + + + // var barcodepos = vIdx == 0 ? "LEFT" : "RIGHT"; + // Pub.log.AddE("(" + barcodepos + ")바코드를 검증했지만 일치하지 않습니다"); + // Pub.Result.SetResultMessage(eResult.OPERATION, eECode.BARCODEVALIDERR, eNextStep.pause, + // vIdx, Pub.Result.ItemData[vIdx].VisionData.RID, Pub.Result.ItemData[vIdx].VisionData.RID2, + // Pub.Result.ItemData[vIdx].VisionData.QTY, Pub.Result.ItemData[vIdx].VisionData.QTY2, + // Pub.Result.ItemData[vIdx].VisionData.SID, Pub.Result.ItemData[vIdx].VisionData.SID2, + // Pub.Result.ItemData[vIdx].VisionData.MFGDATE, Pub.Result.ItemData[vIdx].VisionData.MFGDATE2, + // barcodepos); + // return; + // } + //} + } + + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_FINISH.cs b/Handler/Project/RunCode/Step/_STEP_FINISH.cs new file mode 100644 index 0000000..6bfb948 --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_FINISH.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + + public void _STEP_FINISH_START(eSMStep step) + { + //포트1번을 아래로 이동한다(모든포트를 내린다) + DIO.SetPortMotor(1, eMotDir.CCW, true, "FINISH"); //210326 + + var cvMODE = VAR.BOOL[eVarBool.Use_Conveyor]; + if(cvMODE==false) + { + if (AR.SETTING.Data.Disable_Left == false) DIO.SetPortMotor(0, eMotDir.CCW, true, "FINISH"); //210326 + if (AR.SETTING.Data.Disable_Right == false) DIO.SetPortMotor(2, eMotDir.CCW, true, "FINISH"); //210326 + } + + //picker move to center + if (DIO.GetIOInput(eDIName.PICKER_SAFE) == false) + { + var PosX = MOT.GetPXPos(ePXLoc.PICKON); + MOT.Move(PosX); + } + + PUB.Result.JobEndTime = DateTime.Now; + + //컨베어OFF + DIO.SetOutput(eDOName.LEFT_CONV, false); + DIO.SetOutput(eDOName.RIGHT_CONV, false); + + DIO.SetBuzzer(true, AR.SETTING.Data.Force_JobEndBuzzer); + PUB.log.AddI("Work has been completed"); + needShowSummary = true; + } + + public StepResult _STEP_FINISH(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + return StepResult.Wait; + } + + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_HOME_CONFIRM.cs b/Handler/Project/RunCode/Step/_STEP_HOME_CONFIRM.cs new file mode 100644 index 0000000..2efe429 --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_HOME_CONFIRM.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + public void _STEP_HOME_CONFIRM_START(eSMStep step) + { + PUB.sm.seq.Clear(step); + } + + public StepResult _STEP_HOME_CONFIRM(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + byte idx = 1; + var cmdIndex = step; + if (PUB.sm.seq.Get(cmdIndex) < idx) PUB.sm.seq.Set(cmdIndex, idx); + + //********************* + //** 하드웨어 조건 확인 + //********************* + if (CheckHomeProcess_HW_Available(false) == false) + { + return StepResult.Error; + } + + // 전체 홈 시간을 체크한다. + if (stepTime.TotalSeconds >= AR.SETTING.Data.Timeout_HomeSearch) + { + PUB.Result.SetResultMessage(eResult.TIMEOUT, eECode.HOME_TIMEOUT, eNextStep.NOTHING, AR.SETTING.Data.Timeout_HomeSearch); //, eECode.(eResult.HomeTimeout,msg ,false); + return StepResult.Error; + } + + + //모든축의 완료여부 확인 + if (PUB.sm.seq.Get(step) == idx++) + { + //모든축이 완료되었다면 완료처리를 한다. + if ( + PUB.mot.IsHomeSet((short)eAxis.PX_PICK) && + PUB.mot.IsHomeSet((short)eAxis.PZ_PICK) && + PUB.mot.IsHomeSet((short)eAxis.Z_THETA) && + PUB.mot.IsHomeSet((short)eAxis.PL_MOVE) && + PUB.mot.IsHomeSet((short)eAxis.PR_MOVE) && + PUB.mot.IsHomeSet((short)eAxis.PL_UPDN) && + PUB.mot.IsHomeSet((short)eAxis.PR_UPDN)) + { + //완료처리 + hmi1.Scean = UIControl.HMI.eScean.Nomal; + PUB.sm.seq.Update(cmdIndex); + } + return StepResult.Wait; + } + + + //X축을 안전위치로 보낸다 + if (PUB.sm.seq.Get(step) == idx++) + { + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + Pos.Speed = 200; + if (MOT.CheckMotionPos(seqTime, Pos, "HOME_SEARCH", false) == false) return StepResult.Wait; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //자재를 들고 있는가(왼쪽) + if (PUB.sm.seq.Get(step) == idx++) + { + if (DIO.isVacOKL() > 0) + { + //로더에 다시 놓아야 한다 + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + if (MOT.CheckMotionPos(seqTime, Pos, "#6") == false) return 0; + + //피커의Z축은 가져오는 위치에서 +10mm 에서 처리한다 + var PosZ = MOT.GetPZPos(ePZLoc.PICKON); + PosZ.Position -= 60; + + //theta 는 0으로 원복한다 + if (MOT.CheckMotionPos(eAxis.Z_THETA, seqTime, 0, 400, 1000, 1000, "QUICK") == false) return 0; + if (MOT.CheckMotionPos(seqTime, PosZ, "QUICK") == false) return 0; + + //진공끈다(진공이꺼지면 감지 센서도 같이 꺼진다 - 이 프로젝트에는 감지 센서가 없고 , 출력센서를 그대로 감지로 이용한다) + DIO.SetPickerVac(false, true); + + //로더의 얼라인을 해제해준다. + hmi1.arVar_Port[1].AlignReset();// = 0; loader1.arVar_Port[1].errorCount = 0; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + //피커 Z축 정렬 후 Y축을 준비위치로 옮긴다 + if (PUB.sm.seq.Get(step) == idx++) + { + var PosZ = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, PosZ, "#7") == false) return StepResult.Wait; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //중앙포트(로더)를 아래로 내림 + if (PUB.sm.seq.Get(step) == idx++) + { + //if (DIO.GetIOInput(eDIName.PORTC_LIM_UP) == true) + DIO.SetPortMotor(1, eMotDir.CCW, true, "FINISH", true); //210326 + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //연관플래그 소거 + if (PUB.sm.seq.Get(step) == idx++) + { + //진공상태를 초기화 해준다. + DIO.SetPrintLVac(ePrintVac.off, true); + DIO.SetPrintRVac(ePrintVac.off, true); + + DIO.SetOutput(eDOName.PRINTL_AIRON, false); + DIO.SetOutput(eDOName.PRINTR_AIRON, false); + + PUB.Result.Clear("home"); + FlagClear(false); + + //트리거 OFF작업 + WS_Send(eWorkPort.Left, PUB.wsL, "", "OFF",""); + WS_Send(eWorkPort.Right, PUB.wsR, "", "OFF",""); + + //컨베어off + DIO.SetOutput(eDOName.LEFT_CONV, false); + DIO.SetOutput(eDOName.RIGHT_CONV, false); + + if (PUB.keyenceF != null && PUB.keyenceF.IsConnect) + PUB.keyenceF.Trigger(false); + if (PUB.keyenceR != null && PUB.keyenceR.IsConnect) + PUB.keyenceR.Trigger(false); + + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + PUB.sm.SetNewStep(eSMStep.IDLE); + return StepResult.Complete; + } + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_HOME_DELAY.cs b/Handler/Project/RunCode/Step/_STEP_HOME_DELAY.cs new file mode 100644 index 0000000..71f9145 --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_HOME_DELAY.cs @@ -0,0 +1,55 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + + public void _STEP_HOME_DELAY_START(eSMStep step) + { + //각 파트의 초기 값을 설정해준다. + DIO.SetBuzzer(false); + + //홈이완료되었으므로 3초정도 기다려준다. + PUB.log.AddAT("Timer started for home completion confirmation"); + HomeSuccessTime = DateTime.Now; + } + + public StepResult _STEP_HOME_DELAY(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + //********************* + //** 하드웨어 조건 확인 + //********************* + if (CheckHomeProcess_HW_Available(false) == false) + { + return StepResult.Error; + } + + var tsHome = DateTime.Now - HomeSuccessTime; + if (tsHome.TotalSeconds >= 3.0) + { + if (PUB.mot.HasMoving == false) + { + //모든축의 위치를 0으로 한다 + //Pub.mot.ClearPosition(); + + //각 파트의 초기 값을 설정해준다. + DIO.SetBuzzer(false); + + PUB.flag.set(eVarBool.FG_USERSTEP, false, "SM_HOME"); + PUB.log.AddI("Moving to home verification code due to home operation completion"); + + HomeChkTime = DateTime.Now; + PUB.sm.SetNewStep(eSMStep.HOME_CONFIRM); + } + } + return StepResult.Wait; + } + + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_HOME_FULL.cs b/Handler/Project/RunCode/Step/_STEP_HOME_FULL.cs new file mode 100644 index 0000000..f33eed9 --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_HOME_FULL.cs @@ -0,0 +1,564 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using Project.Commands; +using AR; +namespace Project +{ + public partial class FMain + { + public void _STEP_HOME_FULL_START(eSMStep step) + { + //ClearBarcode(); + //Pub.popup.needClose = true; // Pub.popup.CloseAll(); + + //181225 + if (PUB.dio.IsInit) + DIO.SetBuzzer(false); + + if (PUB.mot.IsInit) + { + //알람클리어작업 + if (PUB.mot.HasServoAlarm) + { + PUB.mot.SetAlarmClearOn(); + System.Threading.Thread.Sleep(200); + PUB.mot.SetAlarmClearOff(); + } + } + + HomeSuccessTime = DateTime.Parse("1982-11-23"); + + + //홈모드로 전환 + hmi1.Scean = UIControl.HMI.eScean.MotHome; + hmi1.arHomeProgress[0] = 0; + hmi1.arHomeProgress[1] = 0; + hmi1.arHomeProgress[2] = 0; + hmi1.arHomeProgress[3] = 0; + hmi1.arHomeProgress[4] = 0; + hmi1.arHomeProgress[5] = 0; + hmi1.arHomeProgress[6] = 0; + + //실린더 상태 복귀 + DIO.SetOutput(eDOName.PRINTL_FWD, false); + DIO.SetOutput(eDOName.PRINTR_FWD, false); + DIO.SetOutput(eDOName.L_CYLDN, false); + DIO.SetOutput(eDOName.R_CYLDN, false); + } + public StepResult _STEP_HOME_FULL(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + //전체 홈 시간을 체크한다. + if (stepTime.TotalSeconds >= AR.SETTING.Data.Timeout_HomeSearch) + { + PUB.Result.SetResultMessage(eResult.TIMEOUT, eECode.HOME_TIMEOUT, eNextStep.NOTHING, AR.SETTING.Data.Timeout_HomeSearch); //, eECode.(eResult.HomeTimeout,msg ,false); + return StepResult.Error; + } + + //********************* + //** 하드웨어 조건 확인 + //********************* + if (CheckHomeProcess_HW_Available(false) == false) + { + + return StepResult.Error; + } + + + int idx = 1; + var cmdIndex = step; + + //Check X Safty Area + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //안전위치 센서가 안들어와잇으면 오류 처리한다 + if (DIO.GetIOInput(eDIName.PICKER_SAFE) == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, + eECode.MOTX_SAFETY, + eNextStep.ERROR, + eAxis.PL_MOVE, PUB.mot.ErrorMessage); + return StepResult.Error; + } + + + //포트 모두내리기(221013 - 박형철) + if (VAR.BOOL[eVarBool.Use_Conveyor] == false && AR.SETTING.Data.Disable_HomePortDown == false) + { + DIO.SetPortMotor(0, eMotDir.CCW, true, "HOME"); + DIO.SetPortMotor(1, eMotDir.CCW, true, "HOME"); + DIO.SetPortMotor(2, eMotDir.CCW, true, "HOME"); + } + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //홈 설정여부플래그 OFF + for (short i = 0; i < PUB.mot.DeviceCount; i++) + { + if (PUB.mot.IsUse(i) == false) continue; + PUB.mot.SetHomeSet(i, false); + } + + //부저 OFF + DIO.SetBuzzer(false); + + //프린터부착헤드 후진 + if (DIO.GetIOInput(eDIName.L_PICK_BW) == false) + DIO.SetOutput(eDOName.PRINTL_FWD, false); + + if (DIO.GetIOInput(eDIName.R_PICK_BW) == false) + DIO.SetOutput(eDOName.PRINTR_FWD, false); + + + if (DIO.GetIOInput(eDIName.L_CYLUP) == false) + DIO.SetOutput(eDOName.L_CYLDN, false); + + if (DIO.GetIOInput(eDIName.R_CYLUP) == false) + DIO.SetOutput(eDOName.R_CYLDN, false); + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //피커실린더 상승 + if (PUB.sm.seq.Get(step) == idx++) + { + DIO.SetOutput(eDOName.L_CYLDN, false); + DIO.SetOutput(eDOName.R_CYLDN, false); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + if (PUB.sm.seq.Get(step) == idx++) + { + if (AR.SETTING.Data.Enable_PickerCylinder) + { + + if (DIO.checkDigitalO(eDIName.L_CYLUP, seqTime, true, timeoutcode: eECode.PICKER_LCYL_NOUP) != eNormalResult.True) return StepResult.Wait; + if (DIO.checkDigitalO(eDIName.R_CYLUP, seqTime, true, timeoutcode: eECode.PICKER_RCYL_NOUP) != eNormalResult.True) return StepResult.Wait; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터 부착헤드 후진 검사 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //프린터부착헤드 후진 + if (DIO.GetIOInput(eDIName.L_PICK_BW) == false) + { + if (stepTime.TotalSeconds > 5) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.PRINTER_LPICKER_NOBW, eNextStep.PAUSE); + } + return StepResult.Wait; + } + if (DIO.GetIOInput(eDIName.R_PICK_BW) == false) + { + if (stepTime.TotalSeconds > 5) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.PRINTER_RPICKER_NOBW, eNextStep.PAUSE); + } + return StepResult.Wait; + } + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터 부착헤드 후진 검사 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //프린터부착헤드 후진 + if (AR.SETTING.Data.Enable_PickerCylinder) + { + if (DIO.GetIOInput(eDIName.L_CYLUP) == false) + { + if (stepTime.TotalSeconds > 5) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.PRINTER_LPRINTER_NOUP, eNextStep.PAUSE); + } + return StepResult.Wait; + } + if (DIO.GetIOInput(eDIName.R_CYLUP) == false) + { + if (stepTime.TotalSeconds > 5) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.PRINTER_RPRINTER_NOUP, eNextStep.PAUSE); + } + return StepResult.Wait; + } + } + else + { + //전진이 들어와 있다면 오류 로한다 + if (DIO.GetIOInput(eDIName.L_CYLDN)) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.PRINTER_LPRINTER_NOUP, eNextStep.PAUSE); + return StepResult.Wait; + } + if (DIO.GetIOInput(eDIName.R_CYLDN)) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.PRINTER_RPRINTER_NOUP, eNextStep.PAUSE); + return StepResult.Wait; + } + } + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + + //피커의 Z축을 우선 진행 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var rlt1 = MOT.Home("RUN_SAFTY_HOME", eAxis.PZ_PICK); + if (rlt1 == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, + eECode.MOT_HSEARCH, + eNextStep.ERROR, + eAxis.PL_UPDN, PUB.mot.ErrorMessage); + return StepResult.Error; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //Z축 안전위치 대기 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (PUB.mot.IsHomeSet((short)eAxis.PZ_PICK) == false && PUB.mot.IsLimitN((short)eAxis.PZ_PICK) == false && PUB.mot.IsOrg((short)eAxis.PZ_PICK) == false) + { + System.Threading.Thread.Sleep(10); + return StepResult.Wait; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터의 Z축을 먼저 한다 221013 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var rlt1 = MOT.Home("RUN_SAFTY_HOME", eAxis.PL_UPDN); + var rlt2 = MOT.Home("RUN_SAFTY_HOME", eAxis.PR_UPDN); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //Z축 안전위치 대기 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (PUB.mot.IsHomeSet((short)eAxis.PL_UPDN) == false && PUB.mot.IsLimitN((short)eAxis.PL_UPDN) == false && PUB.mot.IsOrg((short)eAxis.PL_UPDN) == false) + { + System.Threading.Thread.Sleep(10); + return StepResult.Wait; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + //Z축 안전위치 대기 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (PUB.mot.IsHomeSet((short)eAxis.PR_UPDN) == false && PUB.mot.IsLimitN((short)eAxis.PR_UPDN) == false && PUB.mot.IsOrg((short)eAxis.PR_UPDN) == false) + { + System.Threading.Thread.Sleep(10); + return StepResult.Wait; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + + //각 프린터의 Y,Z 축의 홈을 진행한다. + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //유효성 검사를 하지 않는다.. 하게되면 오류남 201208 + var rlt1 = MOT.Home("RUN_SAFTY_HOME", eAxis.PL_MOVE, false); + var rlt2 = MOT.Home("RUN_SAFTY_HOME", eAxis.PR_MOVE, false); + //var rlt3 = MOT.Home("RUN_SAFTY_HOME", eAxis.PL_UPDN, false); + //var rlt4 = MOT.Home("RUN_SAFTY_HOME", eAxis.PR_UPDN, false); + if (rlt1 == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, + eECode.MOT_HSEARCH, + eNextStep.ERROR, + eAxis.PL_MOVE, PUB.mot.ErrorMessage); + return StepResult.Error; + } + if (rlt2 == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, + eECode.MOT_HSEARCH, + eNextStep.ERROR, + eAxis.PR_MOVE, PUB.mot.ErrorMessage); + return StepResult.Error; + } + //if (rlt3 == false) + //{ + // PUB.Result.SetResultMessage(eResult.MOTION, + // eECode.MOT_HSEARCH, + // eNextStep.ERROR, + // eAxis.PL_UPDN, PUB.mot.ErrorMessage); + // return StepResult.Error; + //} + //if (rlt4 == false) + //{ + // PUB.Result.SetResultMessage(eResult.MOTION, + // eECode.MOT_HSEARCH, + // eNextStep.ERROR, + // eAxis.PR_UPDN, PUB.mot.ErrorMessage); + // return StepResult.Error; + //} + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터축의 Y,Z축이 완료되기를 기다린다. + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + if (PUB.mot.IsHomeSet((short)eAxis.PL_MOVE) && + PUB.mot.IsHomeSet((short)eAxis.PR_MOVE) && + PUB.mot.IsHomeSet((short)eAxis.PL_UPDN) && + PUB.mot.IsHomeSet((short)eAxis.PR_UPDN)) + { + //현재위치를 0으로 설정한다. + PUB.mot.ClearPosition((int)eAxis.PL_MOVE); + PUB.mot.ClearPosition((int)eAxis.PR_MOVE); + + //var p1 = MOT.GetLMPos(eLMLoc.READY); + //MOT.Move(eAxis.PL_MOVE, p1.Position, 200, 500, false, false, false); + + //var p2 = MOT.GetRMPos(eRMLoc.READY); + //p2.Speed = 100; + //MOT.Move(eAxis.PR_MOVE, p2.Position, 200, 500, false, false, false); + + PUB.sm.seq.Update(cmdIndex); + } + return StepResult.Wait; + } + + //실린더를OFF한다 - 210207 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + DIO.SetOutput(eDOName.PRINTL_FWD, false); + DIO.SetOutput(eDOName.PRINTR_FWD, false); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //실린더 OFF 확인 - 210207 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //IO가 완료되지 안항ㅆ다면 대기한다 + if (DIO.checkDigitalO(eDIName.L_PICK_BW, seqTime, true) != eNormalResult.True) return StepResult.Wait; + if (DIO.checkDigitalO(eDIName.R_PICK_BW, seqTime, true) != eNormalResult.True) return StepResult.Wait; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + + //프린터 move 축 안전지대로이동 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var PosLM = MOT.GetLMPos(eLMLoc.READY); + var PosRM = MOT.GetRMPos(eRMLoc.READY); + PosLM.Speed = 200; + PosRM.Speed = 200; + MOT.Move((eAxis)PosLM.Axis, PosLM.Position, PosLM.Speed, PosLM.Acc, false, false, false); + MOT.Move((eAxis)PosRM.Axis, PosRM.Position, PosRM.Speed, PosRM.Acc, false, false, false); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터 move 축 안전지대로이동 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var PosLM = MOT.GetLMPos(eLMLoc.READY); + var PosRM = MOT.GetRMPos(eRMLoc.READY); + PosLM.Speed = 250; + PosRM.Speed = 250; + if (MOT.CheckMotionPos(seqTime, PosLM, "MOT_HOME", false) == false) return StepResult.Wait; + if (MOT.CheckMotionPos(seqTime, PosRM, "MOT_HOME", false) == false) return StepResult.Wait; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //Theta 홈 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //회전축은 잡지 않는다 + PUB.mot.SetHomeSet((int)eAxis.Z_THETA, true); + PUB.mot.ClearPosition((int)eAxis.Z_THETA); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //피커-X축 홈 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + var rlt1 = MOT.Home("RUN_SAFTY_HOME", eAxis.PX_PICK, false); + if (rlt1 == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, + eECode.MOT_HSEARCH, + eNextStep.ERROR, + eAxis.PX_PICK, PUB.mot.ErrorMessage); + return StepResult.Error; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //모든축의 완료여부 확인 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //모든축이 완료되었다면 완료처리를 한다. + if (PUB.mot.IsHomeSet((short)eAxis.PX_PICK)) + { + //완료처리 + PUB.mot.ClearPosition((int)eAxis.PX_PICK); + PUB.sm.seq.Update(cmdIndex); + } + return StepResult.Wait; + } + + //X축 값 초기화확인 + if (PUB.sm.seq.Get(cmdIndex) == idx++) + { + //모든축이 완료되었다면 완료처리를 한다. + var ts = PUB.sm.seq.GetTime(cmdIndex); + if (ts.TotalSeconds >= 5) + { + PUB.Result.SetResultMessage(eResult.MOTION, + eECode.MOT_HSEARCH, + eNextStep.ERROR, + eAxis.PX_PICK, PUB.mot.ErrorMessage); + return StepResult.Error; + } + else + { + var XPos = PUB.mot.GetActPos((int)eAxis.PX_PICK); + if (Math.Abs(XPos) <= 0.1 && PUB.mot.IsMotion((int)eAxis.PX_PICK) == false) + { + PUB.sm.seq.Update(cmdIndex); + } + } + return StepResult.Wait; + } + + //완료됨 + if (PUB.sm.seq.Get(step) == idx++) + { + //진공상태를 초기화 해준다. + DIO.SetPrintLVac(ePrintVac.off, true); + DIO.SetPrintRVac(ePrintVac.off, true); + DIO.SetOutput(eDOName.PRINTL_AIRON, false); + DIO.SetOutput(eDOName.PRINTR_AIRON, false); + + FlagClear(true); + PUB.sm.SetNewStep(eSMStep.HOME_DELAY); + return StepResult.Complete; + } + + return StepResult.Complete; + } + + void FlagClear(bool ClearItemOn) + { + PUB.log.AddAT($"Flag initialization({ClearItemOn})"); + //연관플래그 소거 + if (ClearItemOn) + { + PUB.flag.set(eVarBool.FG_PK_ITEMON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_PL_ITEMON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_PR_ITEMON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_PORTL_ITEMON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_PORTR_ITEMON, false, "POSRESET"); + } + + + PUB.flag.set(eVarBool.FG_OK_PRINTL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_OK_PRINTR, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PRINTL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PRINTR, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_RDY_PORT_PC, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PORT_PL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PORT_PR, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_RDY_PX_LPICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PX_RPICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PX_PICKONWAITL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PX_PICKONWAITR, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_SET_DATA_PORT0, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_SET_DATA_PORT2, false, "POSRESET"); + //PUB.flag.set(eVarBool.SCR_JOBFINISH, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_WAIT_PAPERDETECTL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_WAIT_PAPERDETECTR, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_END_VISIONL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_END_VISIONR, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_PRC_VISIONR, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_CMD_YP_LPICKON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_CMD_YP_LPICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_CMD_YP_RPICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_CMD_YP_RPICKON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PZ_LPICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PZ_RPICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RDY_PZ_PICKON, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_RUN_PLM_PICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PRM_PICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PLM_PICKON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PRM_PICKON, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_RUN_PLZ_PICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PRZ_PICKOF, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PLZ_PICKON, false, "POSRESET"); + PUB.flag.set(eVarBool.FG_RUN_PRZ_PICKON, false, "POSRESET"); + + PUB.flag.set(eVarBool.FG_RUN_LEFT, false, "POSREST"); + PUB.flag.set(eVarBool.FG_RUN_RIGHT, false, "POSREST"); + //VAR.BOOL[eVarBool.JOB_BYPASS_LEFT] = false; + //VAR.BOOL[eVarBool.JOB_BYPASS_RIGHT] = false; + //VAR.STR[eVarString.JOB_BYPASS_SID] = string.Empty; + //VAR.STR[eVarString.JOB_TYPE] = string.Empty; + + //retry소거 230510 + VAR.BOOL[eVarBool.JOB_PickON_Retry] = false; + VAR.BOOL[eVarBool.VisionL_Retry] = false; + VAR.BOOL[eVarBool.VisionR_Retry] = false; + VAR.BOOL[eVarBool.wait_for_keyence] = false; + VAR.BOOL[eVarBool.wait_for_keyenceL] = false; + VAR.BOOL[eVarBool.wait_for_keyenceR] = false; + VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] = false; + + //busy 플래그 제거 + PUB.iLockCVL.set((int)eILockCV.BUSY, false, "POSREST"); + PUB.iLockCVR.set((int)eILockCV.BUSY, false, "POSREST"); + PUB.iLockCVL.set((int)eILockCV.VISION, false, "POSREST"); + PUB.iLockCVR.set((int)eILockCV.VISION, false, "POSREST"); + + VAR.I32[eVarInt32.RIGT_ITEM_COUNT] = 0; + VAR.I32[eVarInt32.LEFT_ITEM_COUNT] = 0; + } + + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_HOME_QUICK.cs b/Handler/Project/RunCode/Step/_STEP_HOME_QUICK.cs new file mode 100644 index 0000000..406f669 --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_HOME_QUICK.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using Project.Commands; +using AR; + +namespace Project +{ + public partial class FMain + {//홈 맞춰 + + public void _STEP_HOME_QUICK_START(eSMStep step) + { + + + //모든 홈이 되어야 가능하다 + if (PUB.mot.IsInit && PUB.mot.HasHomeSetOff == true) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR); + return; + } + + if (DIO.IsEmergencyOn() == true) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.EMERGENCY, eNextStep.ERROR); + return; + } + + if (DIO.isSaftyDoorF() == false || DIO.isSaftyDoorR() == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.DOORSAFTY, eNextStep.ERROR); + return; + } + + + //실린더 상태 복귀 + DIO.SetOutput(eDOName.PRINTL_FWD, false); + DIO.SetOutput(eDOName.PRINTR_FWD, false); + DIO.SetOutput(eDOName.L_CYLDN, false); + DIO.SetOutput(eDOName.R_CYLDN, false); + } + + CommandBuffer cmds = new CommandBuffer(); + + public StepResult _STEP_HOME_QUICK(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + + byte idx = 1; + var cmdIndex = eSMStep.HOME_QUICK; + if (PUB.sm.seq.Get(step) < idx) PUB.sm.seq.Set(cmdIndex, idx); + + //사용자 스텝처리가 아닌경우에만 동작 중지를 검사 한다 + //중단조건 검사는 0번 축에만 동작하게 한다 + if (PUB.flag.get(eVarBool.FG_USERSTEP) == false && CheckPauseCondition(true) == false) + { + //가동불가 조건 확인 + if (PUB.Result.ResultCode == eResult.EMERGENCY) + PUB.sm.SetNewStep(eSMStep.ERROR); + else + PUB.sm.SetNewStep(eSMStep.PAUSE); + return StepResult.Wait; + } + + //동작상태가 아니라면 처리하지 않는다. + var userStep = PUB.flag.get(eVarBool.FG_USERSTEP); + + + //********************* + //** 하드웨어 조건 확인 + //********************* + if (CheckHomeProcess_HW_Available(true) == false) + { + return StepResult.Error; + } + + //시작정보 + if (PUB.sm.seq.Get(step) == idx++) + { + //210415 + if (DIO.GetPortMotorDir(0) == eMotDir.CW) DIO.SetPortMotor(0, eMotDir.CW, false, "POSRESET"); + if (DIO.GetPortMotorDir(1) == eMotDir.CW) DIO.SetPortMotor(1, eMotDir.CW, false, "POSRESET"); + if (DIO.GetPortMotorDir(2) == eMotDir.CW) DIO.SetPortMotor(2, eMotDir.CW, false, "POSRESET"); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + //피커 Z축을 0으로 이동한다 + if (PUB.sm.seq.Get(step) == idx++) + { + var Pos = MOT.GetPZPos(ePZLoc.READY); + if (MOT.CheckMotionPos(seqTime, Pos, "#7") == false) return 0; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //피커 Y축을 안전지대로 이동한다 + if (PUB.sm.seq.Get(step) == idx++) + { + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + if (MOT.CheckMotionPos(seqTime, Pos, "#7", false) == false) return 0; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //PRINT-Z축을 0으로이동한다 + if (PUB.sm.seq.Get(step) == idx++) + { + var spdinfo = MOT.GetLZPos(eLZLoc.READY); + MOT.Move(eAxis.PL_UPDN, spdinfo.Position, spdinfo.Speed, spdinfo.Acc, false, true, false); + + spdinfo = MOT.GetRZPos(eRZLoc.READY); + MOT.Move(eAxis.PR_UPDN, spdinfo.Position, spdinfo.Speed, spdinfo.Acc, false, true, false); + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + //PRINT-Z축 완료대기 + if (PUB.sm.seq.Get(step) == idx++) + { + var PosL = MOT.GetLZPos(eLZLoc.READY); + var PosR = MOT.GetRZPos(eRZLoc.READY); + if (MOT.CheckMotionPos(seqTime, PosL, "#7", false) == false) return StepResult.Wait; + if (MOT.CheckMotionPos(seqTime, PosR, "#8", false) == false) return StepResult.Wait; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //피커실린더 상승 + if (PUB.sm.seq.Get(step) == idx++) + { + DIO.SetOutput(eDOName.L_CYLDN, false); + DIO.SetOutput(eDOName.R_CYLDN, false); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + if (PUB.sm.seq.Get(step) == idx++) + { + if (AR.SETTING.Data.Enable_PickerCylinder) + { + if (DIO.checkDigitalO(eDIName.L_CYLUP, seqTime, true) != eNormalResult.True) return StepResult.Wait; + if (DIO.checkDigitalO(eDIName.R_CYLUP, seqTime, true) != eNormalResult.True) return StepResult.Wait; + } + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + //프린터부착헤드 후진 + if (PUB.sm.seq.Get(step) == idx++) + { + DIO.SetOutput(eDOName.PRINTL_FWD, false); + DIO.SetOutput(eDOName.PRINTR_FWD, false); + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터헤드후진 확인 + if (PUB.sm.seq.Get(step) == idx++) + { + if (DIO.checkDigitalO(eDIName.L_PICK_BW, seqTime, true) != eNormalResult.True) return StepResult.Wait; + if (DIO.checkDigitalO(eDIName.R_PICK_BW, seqTime, true) != eNormalResult.True) return StepResult.Wait; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + + //프린터 Y축 이동 + if (PUB.sm.seq.Get(step) == idx++) + { + var spdinfo = MOT.GetLMPos(eLMLoc.READY); + MOT.Move(eAxis.PL_MOVE, spdinfo.Position, spdinfo.Speed, spdinfo.Acc, false, true, false); + + spdinfo = MOT.GetRMPos(eRMLoc.READY); + MOT.Move(eAxis.PR_MOVE, spdinfo.Position, spdinfo.Speed, spdinfo.Acc, false, true, false); + + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //프린터 Y축 완료대기 + if (PUB.sm.seq.Get(step) == idx++) + { + var PosL = MOT.GetLMPos(eLMLoc.READY); + var PosR = MOT.GetRMPos(eRMLoc.READY); + if (MOT.CheckMotionPos(seqTime, PosL, "#7") == false) return 0; + if (MOT.CheckMotionPos(seqTime, PosR, "#8") == false) return 0; + PUB.sm.seq.Update(cmdIndex); + return StepResult.Wait; + } + + //연관플래그 소거 + if (PUB.sm.seq.Get(step) == idx++) + { + //진공상태를 초기화 해준다. + DIO.SetPrintLVac(ePrintVac.off, true); + DIO.SetPrintRVac(ePrintVac.off, true); + DIO.SetOutput(eDOName.PRINTL_AIRON, false); + DIO.SetOutput(eDOName.PRINTR_AIRON, false); + + FlagClear(true); + PUB.sm.SetNewStep(eSMStep.HOME_CONFIRM); + return StepResult.Wait; + } + + PUB.sm.seq.Clear(step); + PUB.sm.SetNewStep(eSMStep.HOME_CONFIRM); + return StepResult.Complete; + } + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_IDLE.cs b/Handler/Project/RunCode/Step/_STEP_IDLE.cs new file mode 100644 index 0000000..26b930a --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_IDLE.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + DateTime IdleStartTime = DateTime.Now; + bool IdleSleep = false; + + public void _STEP_IDLE_START(eSMStep step) + { + PUB.flag.set(eVarBool.FG_USERSTEP, false, "SM_IDLE"); + + //lbMsgR.ProgressEnable = false; + IdleStartTime = DateTime.Now; + + //초기화완료되면 버튼을 활성화한다 + if (PUB.sm.getOldStep == eSMStep.INIT) + { + this.BeginInvoke(new Action(() => + { + panTopMenu.Enabled = true; + btStart.Enabled = true; + btStop.Enabled = true; + btReset.Enabled = true; + })); + + //Pub.sm.setNewStep(eSMStep.XMOVE); //홈을 위해서 바로 이동 모션으로 가게한다 + if (PUB.mot.HasHomeSetOff == true && DIO.GetIOInput(eDIName.PICKER_SAFE) == false) + { + //피커의 이동이 필요한 상황 + this.BeginInvoke(new Action(() => { btManage.PerformClick(); })); + } + else + { + //리셋이 필요한 상황 + if (AR.SETTING.Data.OnlineMode == true) + this.BeginInvoke(new Action(() => { btMReset.PerformClick(); })); + } + } + } + + public StepResult _STEP_IDLE(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + //대기상태에서 조명 자동으로 끄기 + if (IdleSleep == false && IdleStartTime.Year != 1982) + { + var ts = DateTime.Now - IdleStartTime; + if (ts.TotalMinutes > AR.SETTING.Data.AutoOffRoomLightMin) + { + PUB.log.Add("Turning off lights due to idle state transition"); + IdleSleep = true; + DIO.SetRoomLight(false); + } + } + + //자동소거기능 + if (AR.SETTING.Data.AutoDeleteDay > 0) + { + if (PUB.flag.get(eVarBool.FG_MINSPACE) == true) + { + var ts = DateTime.Now - lastDeleteTime; + if (ts.TotalSeconds > 1) + { + //파일을 찾아서 소거한다. + var delpath = System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "Images"); + if (delpath != "") DeleteFile(delpath); + + lastDeleteTime = DateTime.Now; + } + } + } + + return StepResult.Wait; + + } + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_INIT.cs b/Handler/Project/RunCode/Step/_STEP_INIT.cs new file mode 100644 index 0000000..ae18dea --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_INIT.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + //Int32[] _hDevice = new Int32[] { 0, 0, 0 }; + //Int32[] _width = new Int32[] { 0, 0, 0 }; + //Int32[] _height = new Int32[] { 0, 0, 0 }; + //Int32[] _stride = new Int32[] { 0, 0, 0 }; + //Int32[] _bufferSize = new Int32[] { 0, 0, 0 }; + //Boolean[] _isCrevisOpen = new bool[] { false, false, false }; + //Boolean[] _isCrevisACQ = new bool[] { false, false, false }; + // IntPtr[] _pImage = new IntPtr[] { IntPtr.Zero, IntPtr.Zero, IntPtr.Zero }; + + public void _STEP_INIT_START(eSMStep step) + { + + int progress = 0; + var ProgressMax = 13; + Color fColor = Color.DarkViolet; + + + PUB.sm.RaiseStateProgress(++progress, "Motion Initialize", ProgressMax, fColor); System.Threading.Thread.Sleep(5); + if (PUB.mot.Init() == false) + { + PUB.log.AddE(string.Format("MOT INIT ERROR : {0}", PUB.mot.ErrorMessage)); + PUB.log.AddE("Motion initialization error, retrying shortly"); + System.Threading.Thread.Sleep(1000); + if (PUB.mot.Init() == false) + { + PUB.log.AddE("Motion initialization retry failed " + PUB.mot.ErrorMessage); + } + } + _SM_RUN_INIT_MOTION(); + + + PUB.sm.RaiseStateProgress(++progress, "DIO Initialize", ProgressMax, fColor); System.Threading.Thread.Sleep(5); + if (PUB.dio.Init()) + { + DIO.InitDIOSensitive(); + PUB.log.Add("DIO RUN MONITOR"); + PUB.dio.RunMonitor(); + + + //포트동작을 멈춘다 + DIO.SetPortMotor(0, eMotDir.CW, false, "init"); + DIO.SetPortMotor(1, eMotDir.CW, false, "init"); + DIO.SetPortMotor(2, eMotDir.CW, false, "init"); + } + else PUB.log.AddE(string.Format("DIO INIT ERROR : {0}", PUB.dio.ErrorMessage)); + TowerLamp.Init(PUB.dio, + DIO.Pin[eDOName.TWR_REDF].terminalno, + DIO.Pin[eDOName.TWR_GRNF].terminalno, + DIO.Pin[eDOName.TWR_YELF].terminalno); + + TowerLamp.Enable = !SETTING.Data.Disable_TowerLamp; + + PUB.sm.RaiseStateProgress(++progress, "Set DIO Names", ProgressMax, fColor); System.Threading.Thread.Sleep(5); + _SM_RUN_INIT_SETDIONAME(); + + PUB.log.AddI("Motion initialization flag setup complete"); + PUB.flag.set(eVarBool.FG_INIT_MOTIO, true, "INIT"); + + //230504 + hmi1.SetDIO(PUB.dio); + hmi1.SetMOT(PUB.mot); + + //남은 공간 + PUB.sm.RaiseStateProgress(++progress, "Space Check", ProgressMax, fColor); System.Threading.Thread.Sleep(5); + CheckFreeSpace(); //181225 + + + //프린터설정 + PUB.sm.RaiseStateProgress(++progress, "Printer Setup", ProgressMax, fColor); System.Threading.Thread.Sleep(5); + PUB.PrinterL = new Device.SATOPrinterAPI(); + PUB.PrinterL.PortName = AR.SETTING.Data.PrintL_Port; + PUB.PrinterL.BaudRate = AR.SETTING.Data.PrintL_Baud; + + PUB.PrinterR = new Device.SATOPrinterAPI(); + PUB.PrinterR.PortName = AR.SETTING.Data.PrintR_Port; + PUB.PrinterR.BaudRate = AR.SETTING.Data.PrintR_Baud; + + PUB.flag.set(eVarBool.FG_INIT_PRINTER, true, "INIT"); + + //모델자동선택 181206 + PUB.sm.RaiseStateProgress(++progress, "Previous Model Check", ProgressMax, fColor); System.Threading.Thread.Sleep(5); + + // + if (SETTING.User.LastModelV != "") PUB.SelectModelV(SETTING.User.LastModelV, false); + var motionmodel = SETTING.User.LastModelM; + if (motionmodel.isEmpty()) motionmodel = PUB.Result.vModel.Motion ?? string.Empty; + if (motionmodel.ToUpper().StartsWith("CONV")) PUB.flag.set(eVarBool.Use_Conveyor, true, "load"); + else PUB.flag.set(eVarBool.Use_Conveyor, false, "load"); + PUB.SelectModelM(motionmodel, false); + + PUB.sm.RaiseStateProgress(ProgressMax, "Initialization Complete", ProgressMax, Color.Gold); System.Threading.Thread.Sleep(5); + PUB.log.Add("init finish"); + + //조명 ON + DIO.SetRoomLight(true); + } + + public StepResult _STEP_INIT(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + PUB.sm.SetNewStep(eSMStep.IDLE); + return StepResult.Complete; + } + + public void _SM_RUN_INIT_SETDIONAME() + { + //DIO 이름설정 + Console.WriteLine("## SET DI NAME ##"); + for (int i = 0; i < PUB.dio.GetDICount; i++) + { + var name = Enum.GetName(typeof(eDIName), i); + Console.WriteLine($"[{i}] {name}"); + PUB.dio.SetDIName(i, name); + } + Console.WriteLine("## SET DO NAME ##"); + for (int i = 0; i < PUB.dio.GetDOCount; i++) + { + var name = Enum.GetName(typeof(eDOName), i); + Console.WriteLine($"[{i}] {name}"); + PUB.dio.SetDOName(i, name); + } + + //Console.WriteLine("## SET FLAG NAME ##"); + //for (int i = 0; i < PUB.flag.Length; i++) + //{ + // var name = Enum.GetName(typeof(eFlag), i); + // PUB.flag.Name[i] = name; + // Console.WriteLine($"[{i}] {name}"); + //} + } + + private void _SM_RUN_INIT_MOTION() + { + PUB.mot.SetAlarmClearOn(); + System.Threading.Thread.Sleep(5); + PUB.mot.SetAlarmClearOff(); + + //7개의 축을 사용한다 + if (PUB.mot.IsInit == false) + { + PUB.log.AddE("Motion board initialization error, configuration will not proceed"); + } + else + { + for (short i = 0; i < SETTING.System.MotaxisCount; i++) + { + //설정파일이 있다면 불러온다 + var file = System.IO.Path.Combine(UTIL.CurrentPath, "Model", "axis" + i.ToString() + ".motaxt"); + if (System.IO.File.Exists(file) == false) + { + PUB.log.AddAT($"Motion ({i}) configuration file not found!!"); + PUB.mot.InitAxis(i, file); + } + else + { + if (PUB.mot.InitAxis((short)i, file) == false) + PUB.log.AddE("Motion setup failed axis:" + i.ToString()); + else + PUB.log.AddI($"Motion ({i}) setup complete"); + } + } + + //EStop Disable + PUB.mot.SetEStopEnable(0, false); + PUB.mot.SetEStopEnable(1, false); + PUB.mot.SetEStopEnable(2, false); + PUB.mot.SetEStopEnable(3, false); + PUB.mot.SetEStopEnable(4, false); + PUB.mot.SetEStopEnable(5, false); + PUB.mot.SetEStopEnable(6, false); + + //softlimit 적용 - 201214 + UpdateSoftLimit(); + + + PUB.log.Add("MOT RUN MONITOR"); + PUB.mot.RunMonitor(); + PUB.log.AddAT("ALL SERVO ON"); + PUB.mot.SetServOn(true); + } + + } + } +} diff --git a/Handler/Project/RunCode/Step/_STEP_RUN.cs b/Handler/Project/RunCode/Step/_STEP_RUN.cs new file mode 100644 index 0000000..138f122 --- /dev/null +++ b/Handler/Project/RunCode/Step/_STEP_RUN.cs @@ -0,0 +1,328 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + + //System.Threading.ManualResetEvent LockLL = new System.Threading.ManualResetEvent(true); + //System.Threading.ManualResetEvent LockLR = new System.Threading.ManualResetEvent(true); + + System.Threading.ManualResetEvent LockPK = new System.Threading.ManualResetEvent(true); + + System.Threading.ManualResetEvent LockUserL = new System.Threading.ManualResetEvent(true); + System.Threading.ManualResetEvent LockUserR = new System.Threading.ManualResetEvent(true); + + + async public void _STEP_RUN_START(eSMStep step) + { + + //새로시작하면 포트 얼라인을 해제 해준다 + PUB.flag.set(eVarBool.FG_RDY_PORT_PL, false, "SM_RUN"); + PUB.flag.set(eVarBool.FG_RDY_PORT_PC, false, "SM_RUN"); + PUB.flag.set(eVarBool.FG_RDY_PORT_PR, false, "SM_RUN"); + + //작업완료기준시간 초기화 + if (PUB.flag.get(eVarBool.FG_JOB_END) == true) VAR.TIME.Update(eVarTime.JOB_END); + + //라이브뷰시간 초기화 + VAR.TIME.Update(eVarTime.LIVEVIEW0); + VAR.TIME.Update(eVarTime.LIVEVIEW1); + VAR.TIME.Update(eVarTime.LIVEVIEW2); + + //룸조명과, 타워램프 ON 한다 - 210402 + //COMM.SETTING.Data.Disable_RoomLight = false; + //COMM.SETTING.Data.Disable_TowerLamp = false; + + //얼라인상태 초기화 + hmi1.arVar_Port[1].AlignReset(); + hmi1.Scean = UIControl.HMI.eScean.Nomal; + //loader1.arVar_Port.ToList().ForEach(t => t.AlignReset()); + + //daycount 초기화 + if (SETTING.Counter.DateStr != DateTime.Now.ToString("yyyy-MM-dd")) + { + SETTING.Counter.ClearDay(); + SETTING.Counter.DateStr = DateTime.Now.ToString("yyyy-MM-dd"); + SETTING.Counter.Save(); + } + + + //키엔스 시작시간을 초기화한다. + VAR.TIME.Update(eVarTime.KEYENCEWAIT); + + //조명켜기 - 201228 + DIO.SetRoomLight(true); //조명은 켜는 것으로 한다 221107 + + //각스텝의 시작변수 초기화한다. + PUB.sm.seq.ClearTime();//.ClearRunStepSeqTime(); + + //대기메세지소거 + PUB.WaitMessage = new string[] { "", "", "", "", "", "", "", "", "", "", "" }; + + if (PUB.flag.get(eVarBool.FG_PRC_VISIONL) && PUB.flag.get(eVarBool.FG_END_VISIONL) == false) + { + //작업을 재시작하면 카메라 트리거를 다시 보낸다 + WS_Send(eWorkPort.Left, PUB.wsL, PUB.Result.ItemDataL.guid, "TRIG", PUB.Result.ItemDataL.VisionData.PrintQRData); + } + + if (PUB.flag.get(eVarBool.FG_PRC_VISIONR) && PUB.flag.get(eVarBool.FG_END_VISIONR) == false) + { + //Pub.Result.ItemData[2].Clear("[0] RUN FIRST"); + WS_Send(eWorkPort.Right, PUB.wsR, PUB.Result.ItemDataR.guid, "TRIG", PUB.Result.ItemDataR.VisionData.PrintQRData); + } + + //재시작할때에는 이것이 동작하면 안됨 + if (PUB.sm.getOldStep == eSMStep.IDLE) + { + //인쇄용지감지상태 초기화 + PUB.flag.set(eVarBool.FG_WAIT_PAPERDETECTL, false, ""); + PUB.flag.set(eVarBool.FG_WAIT_PAPERDETECTR, false, ""); + + + PUB.flag.set(eVarBool.FG_PRC_VISIONL, false, ""); + PUB.flag.set(eVarBool.FG_PRC_VISIONR, false, ""); + + PUB.flag.set(eVarBool.FG_END_VISIONL, false, ""); + PUB.flag.set(eVarBool.FG_END_VISIONR, false, ""); + + PUB.flag.set(eVarBool.FG_OK_PRINTL, false, ""); + PUB.flag.set(eVarBool.FG_OK_PRINTR, false, ""); + PUB.flag.set(eVarBool.FG_RUN_PRINTL, false, ""); + PUB.flag.set(eVarBool.FG_RUN_PRINTR, false, ""); + + PUB.flag.set(eVarBool.FG_RDY_PX_PICKON, false, ""); + PUB.flag.set(eVarBool.FG_RDY_PX_LPICKOF, false, ""); + PUB.flag.set(eVarBool.FG_RDY_PX_RPICKOF, false, ""); + PUB.flag.set(eVarBool.FG_SET_DATA_PORT0, false, ""); + PUB.flag.set(eVarBool.FG_SET_DATA_PORT2, false, ""); + PUB.flag.set(eVarBool.FG_RDY_PX_PICKONWAITL, false, ""); + PUB.flag.set(eVarBool.FG_RDY_PX_PICKONWAITR, false, ""); + + PUB.flag.set(eVarBool.FG_PORTL_ITEMON, false, ""); + PUB.flag.set(eVarBool.FG_PORTR_ITEMON, false, ""); + + //PUB.flag.set(eVarBool.INPUT_LEFT, false, "SM_RUN"); + + //step seq 를 모두 소거해준다 + PUB.sm.seq.Clear(eSMStep.RUN_PICK_RETRY); + + //자료를 소거한다. + //PUB.Result.Clear("RUN_START"); + //PUB.Result.JobStartTime = DateTime.Now; //200728 + + //신규실행이므로 작업차수별 수량을 초기화해준다 + SETTING.Counter.ClearP(); //200711 + + PUB.flag.set(eVarBool.FG_JOB_END, false, "SM_RUN"); + + PUB.sm.seq.Clear(eSMStep.RUN_ROOT_SEQUENCE_L); + PUB.sm.seq.Clear(eSMStep.RUN_ROOT_SEQUENCE_R); + + if (await _SM_RUN_STARTCHKSW(true, new TimeSpan(0)) == false) return; + if (_SM_RUN_STARTCHKHW(true, new TimeSpan(0)) == false) return; + + //plc의 SID 데이터를 갱신하도록 한다 + PUB.Result.ClearAllSID = true; + PUB.log.AddI("*** New job has started ***"); + //PUB.flag.set(eVarBool.RDY_VISION1, true, "JOB START"); //최초 시작시에는 1번 비젼이 동작하게 한다 + + //새로시작할때에는 이 값을 초기화 해준다. + PUB.Result.LastSIDFrom = string.Empty; + PUB.Result.LastSIDTo = string.Empty; + //Pub.Result.LastSID103_2 = string.Empty; + PUB.Result.LastSIDCnt = -1; + PUB.Result.LastVName = string.Empty; + + + //릴아디이 221107 + VAR.STR[eVarString.PrePick_ReelIDNew] = string.Empty; + VAR.STR[eVarString.PrePick_ReelIDOld] = string.Empty; + VAR.STR[eVarString.PrePick_ReelIDTarget] = string.Empty; + } + else + { + if (VAR.BOOL[eVarBool.wait_for_keyence]) + { + PUB.log.Add($"Deleting existing values because barcode reception was waiting (CONF={PUB.Result.ItemDataC.VisionData.Confirm}, ID:{PUB.Result.ItemDataC.VisionData.RID})"); + PUB.Result.ItemDataC.VisionData.Clear("RESTART", true); + } + PUB.log.AddI("*** Job has been restarted ***"); + } + } + + public StepResult _STEP_RUN(eSMStep step, TimeSpan stepTime, TimeSpan seqTime) + { + if (PUB.popup.needClose) + { + System.Threading.Thread.Sleep(10); //팝업이 닫힐때까지 기다린다. + return StepResult.Wait; + } + + //사용자 스텝처리가 아닌경우에만 동작 중지를 검사 한다 + //중단조건 검사는 0번 축에만 동작하게 한다 + //if (PUB.flag.get(eVarBool.UserStepCheck) == false) + //{ + // return false; + //} + + if (CheckSystemRunCondition() == false) + { + return StepResult.Wait; + } + + //동작상태가 아니라면 처리하지 않는다. + if (PUB.sm.Step == eSMStep.RUN && PUB.sm.getNewStep == eSMStep.RUN) + { + var RStepisFirst = runStepisFirst[0]; + + //릴포트 제어 + _SM_RUN_MOT_PORT(0, false, PUB.sm.seq.GetTime(eSMStep.RUN_COM_PT0)); + _SM_RUN_MOT_PORT(1, false, PUB.sm.seq.GetTime(eSMStep.RUN_COM_PT1)); + _SM_RUN_MOT_PORT(2, false, PUB.sm.seq.GetTime(eSMStep.RUN_COM_PT2)); + + //컨베어 상시동작 - 230503 + Boolean cvl = PUB.iLockCVL.IsEmpty(); + Boolean cvr = PUB.iLockCVR.IsEmpty(); + DIO.SetOutput(eDOName.LEFT_CONV, cvl); + DIO.SetOutput(eDOName.RIGHT_CONV, cvr); + + //왼쪽작업 + if (PUB.flag.get(eVarBool.FG_ENABLE_LEFT)) + { + _RUN_ROOT_SEQUENCE(eWorkPort.Left, eSMStep.RUN_ROOT_SEQUENCE_L); + } + + //오른쪽작업 + if (PUB.flag.get(eVarBool.FG_ENABLE_RIGHT)) + { + _RUN_ROOT_SEQUENCE(eWorkPort.Right, eSMStep.RUN_ROOT_SEQUENCE_R); + } + + //작업완료조건확인 + var PLReady = MOT.GetLMPos(eLMLoc.READY); + var PRReady = MOT.GetRMPos(eRMLoc.READY); + + //최종이벤트시간에서 10초이상 기다려준다 230504 + var tsEventTime = VAR.TIME.RUN((int)eVarTime.JOBEVENT); + + //컨베이어모드 + var CVMode = VAR.BOOL[eVarBool.Use_Conveyor]; + + if (tsEventTime.TotalSeconds > 10 && + stepTime.TotalSeconds > 5.0 && + DIO.isSaftyDoorF(false) == true && + PUB.flag.get(eVarBool.FG_PK_ITEMON) == false && + PUB.flag.get(eVarBool.FG_PL_ITEMON) == false && + PUB.flag.get(eVarBool.FG_PR_ITEMON) == false && + + //신규로 추가된 컨베이어 센서이다 + (CVMode == false || DIO.GetIOInput(eDIName.L_CONV1) == false) && + // (CVMode == false || DIO.GetIOInput(eDIName.L_CONV3) == false) && + (CVMode == false || DIO.GetIOInput(eDIName.L_CONV4) == false) && + (CVMode == false || DIO.GetIOInput(eDIName.R_CONV1) == false) && + // (CVMode == false || DIO.GetIOInput(eDIName.R_CONV3) == false) && + (CVMode == false || DIO.GetIOInput(eDIName.R_CONV4) == false) && + + //작업진행중 확인 + PUB.flag.get(eVarBool.FG_BUSY_LEFT) == false && + PUB.flag.get(eVarBool.FG_BUSY_RIGHT) == false && + + //비전처리중 확인 + //PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false && + //PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false && + + //모든 모터는 멈춰있어야 한다 + PUB.mot.HasMoving == false && //피커는 중앙에 있어야 한다 + + //좌,우측 프린터 Y축이 정위치에 있어야 한다 + MOT.getPositionMatch(PLReady) && + MOT.getPositionMatch(PRReady) && + + isPortDetUp(1) == false && + isPortLimUP(1) && + + //드라이런 중에는 완료하지 않는다 + PUB.Result.DryRun == false) + { + + if (PUB.flag.get(eVarBool.FG_JOB_END) == false) + { + PUB.log.AddAT("Work completion condition execution"); + VAR.TIME.Update(eVarTime.JOB_END); + PUB.flag.set(eVarBool.FG_JOB_END, true, "SM_RUN"); + } + else + { + //10초가 지나면 최조 완료로 한다 + var ts = VAR.TIME.RUN((int)eVarTime.JOB_END); + if (ts.TotalSeconds >= AR.SETTING.Data.Timeout_JOBEnd) + { + PUB.Result.JobEndTime = DateTime.Now; + PUB.log.AddI($"Switching to job completion state (wait time: {AR.SETTING.Data.Timeout_JOBEnd} seconds)"); + PUB.sm.SetNewStep(eSMStep.FINISH); + PUB.flag.set(eVarBool.FG_JOB_END, false, "SM_RUN:FINISH"); + } + } + } + else + { + //이조건일때에는 job_End 가 없어야한다 + if (PUB.flag.get(eVarBool.FG_JOB_END) == true) + { + PUB.log.AddI("Work completion condition released"); + PUB.flag.set(eVarBool.FG_JOB_END, false, "run"); + + //메인메세지를 제거 해준다. + PUB.StatusMessage.set(Class.eStatusMesage.Main, string.Empty); + } + } + } + return StepResult.Wait; + } + + public Boolean CheckSystemRunCondition() + { + if (PUB.mot.IsInit == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.AZJINIT, eNextStep.ERROR); + return false; + } + + if (PUB.dio.IsInit == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.AZJINIT, eNextStep.ERROR); + return false; + } + + if (PUB.mot.HasHomeSetOff == true) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.MOT_HSET, eNextStep.ERROR); + return false; + } + + if (PUB.Result.vModel == null || PUB.Result.vModel.Title.isEmpty()) + { + PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELV, eNextStep.ERROR); + return false; + } + if (PUB.Result.mModel == null || PUB.Result.mModel.Title.isEmpty()) + { + PUB.Result.SetResultMessage(eResult.SETUP, eECode.NOMODELM, eNextStep.ERROR); + return false; + } + + if (DIO.isSaftyDoorF() == false || DIO.isSaftyDoorR() == false) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.DOORSAFTY, eNextStep.PAUSE); + return false; + } + return true; + } + } +} diff --git a/Handler/Project/RunCode/_01_Input_Events.cs b/Handler/Project/RunCode/_01_Input_Events.cs new file mode 100644 index 0000000..bf140c2 --- /dev/null +++ b/Handler/Project/RunCode/_01_Input_Events.cs @@ -0,0 +1,466 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + + + void _DIO_INPUT_VALUE_CHANGED(eDIName pin, Boolean value) + { + //카드사이즈 센서 적용 + if (pin == eDIName.PORT0_SIZE_07 || pin == eDIName.PORT0_SIZE_13) + { + if (value) + { + //둘중하나가 들어오면 시작시간을 설정한다 + if (VAR.BOOL[eVarBool.Use_Conveyor] == false) + { + VAR.TIME.Update(eVarTime.MAGNET0); + PUB.flag.set(eVarBool.FG_WAT_MAGNET0, true, "SENSOR"); + } + + } + else + { + var b1 = DIO.GetIOInput(eDIName.PORT0_SIZE_07); + var b2 = DIO.GetIOInput(eDIName.PORT0_SIZE_13); + if (b1 == false && b2 == false) + { + PUB.flag.set(eVarBool.FG_WAT_MAGNET0, false, "SENSOR"); + DIO.SetPortMagnet(0, false); + //if (Util_DO.GetIOOutput(eDOName.CART_MAG0)) + //Util_DO.SetOutput(eDOName.CART_MAG0, false); + } + } + } + else if (pin == eDIName.PORT1_SIZE_07 || pin == eDIName.PORT1_SIZE_13) + { + if (value) + { + //둘중하나가 들어오면 시작시간을 설정한다 + //if (VAR.BOOL[eVarBool.Use_Conveyor] == false) + { + VAR.TIME.Update(eVarTime.MAGNET1); + PUB.flag.set(eVarBool.FG_WAT_MAGNET1, true, "SENSOR"); + } + } + else + { + var b1 = DIO.GetIOInput(eDIName.PORT1_SIZE_07); + var b2 = DIO.GetIOInput(eDIName.PORT1_SIZE_13); + if (b1 == false && b2 == false) + { + PUB.flag.set(eVarBool.FG_WAT_MAGNET1, false, "SENSOR"); + DIO.SetPortMagnet(1, false); + //if (Util_DO.GetIOOutput(eDOName.CART_MAG1)) + //Util_DO.SetOutput(eDOName.CART_MAG1, false); + } + } + } + else if (pin == eDIName.PORT2_SIZE_07 || pin == eDIName.PORT2_SIZE_13) + { + if (value) + { + //둘중하나가 들어오면 시작시간을 설정한다 + if (VAR.BOOL[eVarBool.Use_Conveyor] == false) + { + VAR.TIME.Update(eVarTime.MAGNET2); + PUB.flag.set(eVarBool.FG_WAT_MAGNET2, true, "SENSOR"); + } + } + else + { + var b1 = DIO.GetIOInput(eDIName.PORT2_SIZE_07); + var b2 = DIO.GetIOInput(eDIName.PORT2_SIZE_13); + if (b1 == false && b2 == false) + { + PUB.flag.set(eVarBool.FG_WAT_MAGNET2, false, "SENSOR"); + DIO.SetPortMagnet(2, false); + //if (Util_DO.GetIOOutput(eDOName.CART_MAG2)) + // Util_DO.SetOutput(eDOName.CART_MAG2, false); + } + } + } + else if (pin == eDIName.DOORF1 || pin == eDIName.DOORF2 || pin == eDIName.DOORF3) + { + int PortIDX = 0; + eVarBool FG_RDY_PORT; + if (pin == eDIName.DOORF1) { PortIDX = 0; FG_RDY_PORT = eVarBool.FG_RDY_PORT_PL; } + else if (pin == eDIName.DOORF2) { PortIDX = 1; FG_RDY_PORT = eVarBool.FG_RDY_PORT_PC; } + else { PortIDX = 2; FG_RDY_PORT = eVarBool.FG_RDY_PORT_PR; } + + //전면도어가 열렸다 + if (DIO.GetIOInput(pin) == true) + { + + + + if (PUB.flag.get(FG_RDY_PORT) == true) + { + PUB.flag.set(FG_RDY_PORT, false, "IOCHANGE"); + if (PUB.sm.Step > eSMStep.IDLE) + PUB.log.AddAT("Releasing PORT_READY(L) due to safety sensor detection"); + } + + //도어가 열리면 포트를 멈춘다 210329 + if (DIO.GetPortMotorRun(0)) DIO.SetPortMotor(0, DIO.GetPortMotorDir(0), false, "DOOR OPEN"); + if (DIO.GetPortMotorRun(1)) DIO.SetPortMotor(1, DIO.GetPortMotorDir(1), false, "DOOR OPEN"); + if (DIO.GetPortMotorRun(2)) DIO.SetPortMotor(2, DIO.GetPortMotorDir(2), false, "DOOR OPEN"); + + //210331 + if (PUB.sm.Step != eSMStep.RUN) + { + PUB.mot.MoveStop("Dorr oopen"); + } + + if (PUB.sm.isRunning == false && AR.SETTING.Data.PickerAutoMoveForDoor) + { + var motSpeed = 300; + var motAcc = 500; + if (pin == eDIName.DOORF3) //좌측도어가 열렸다 + { + var DoorF2 = DIO.GetIOInput(eDIName.DOORF2); + var DoorF1 = DIO.GetIOInput(eDIName.DOORF1); + if (DoorF2 == false && DoorF1 == false) //중앙도어가 닫혀있다 + { + var PosPZ = MOT.getPositionMatch(MOT.GetPZPos(ePZLoc.READY));//.MOT.GetPKZ_PosName(); + var PosLM = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY));//. MOT.GetPLM_PosName(); + var PosRM = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY));//.MOT.GetPRM_PosName(); + + if (PosLM && PosRM && PosPZ) + { + //x위치가 pickon 보다 작으면 옴겨줘야 한다. + var xpos = MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)); + if (xpos < 1) + { + var mPos = MOT.GetPXPos(ePXLoc.PICKON); + MOT.Move(eAxis.PX_PICK, mPos.Position, motSpeed, motAcc, false, false, false); + } + } + } + } + else if (pin == eDIName.DOORF2) //중앙도어가 열렸다 + { + //좌우측 닫혀있고 프린트M 위치가 Ready 여아한다. + var PosPZ = MOT.getPositionMatch(MOT.GetPZPos(ePZLoc.READY));//.MOT.GetPKZ_PosName(); + var PosLM = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY));//. MOT.GetPLM_PosName(); + var PosRM = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY));//.MOT.GetPRM_PosName(); + + if (PosPZ) + { + var xpos = MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)); + + if (Math.Abs(xpos) < 100) //중앙근처 10 mm 안에 있다면 + { + var DoorF1 = DIO.GetIOInput(eDIName.DOORF1); + var DoorF3 = DIO.GetIOInput(eDIName.DOORF3); + + if (DoorF1 == false && DoorF3 == false) + { + if (PosLM) + { + var mPos = MOT.GetPXPos(ePXLoc.READYL); + MOT.Move(eAxis.PX_PICK, mPos.Position, motSpeed, motAcc, false, false, false); + } + else if (PosRM) + { + var mPos = MOT.GetPXPos(ePXLoc.READYR); + MOT.Move(eAxis.PX_PICK, mPos.Position, motSpeed, motAcc, false, false, false); + } + //} + } + } + } + + + } + else if (pin == eDIName.DOORF1) //우측도어가 열렸다 + { + var DoorF2 = DIO.GetIOInput(eDIName.DOORF2); + var DoorF3 = DIO.GetIOInput(eDIName.DOORF3); + if (DoorF2 == false && DoorF3 == false) //중앙도어가 닫혀있다 + { + var PosPZ = MOT.getPositionMatch(MOT.GetPZPos(ePZLoc.READY));//.MOT.GetPKZ_PosName(); + var PosLM = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY));//. MOT.GetPLM_PosName(); + var PosRM = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY));//.MOT.GetPRM_PosName(); + + if (PosLM && PosRM && PosPZ) + { + //x위치가 pickon 보다 작으면 옴겨줘야 한다. + var xpos = MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)); + if (xpos > 1) + { + var mPos = MOT.GetPXPos(ePXLoc.PICKON); + MOT.Move(eAxis.PX_PICK, mPos.Position, motSpeed, motAcc, false, false, false); + } + } + } + } + } + + //안전센서가 감지되었다면 얼라인을 초기화 해준다 + hmi1.arVar_Port[PortIDX].AlignOK = 0; + hmi1.arVar_Port[PortIDX].errorCount = 0; + + //동작중일경우 추가 작업 + if (PUB.sm.Step > eSMStep.IDLE) + { + //안전센서가 들어와잇다면 이 값을 초기화 해준다 + if (DIO.isSaftyDoorF(PortIDX, true) == false && PUB.flag.get(eVarBool.FG_JOB_END) == true) + VAR.TIME.Update(eVarTime.JOB_END); + } + + //오류 혹은 Wait 상태일때에는 프린터 Z축을 올려준다 + if (PUB.sm.Step == eSMStep.WAITSTART || PUB.sm.Step == eSMStep.PAUSE) + { + if (pin == eDIName.DOORF3) + { + var PosM = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY));//. MOT.GetPLM_PosName(); + var PosZ = MOT.getPositionMatch(MOT.GetLZPos(eLZLoc.PICKON));//.MOT.GetPRM_PosName(); + if (PosM && PosZ) + { + PUB.log.Add("Raising printer L Z-axis due to door opening"); + var Pos = MOT.GetLZPos(eLZLoc.PICKON); + MOT.Move(Pos); + } + } + else if (pin == eDIName.DOORF1) + { + var PosM = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY));// MOT.GetPRM_PosName(); + var PosZ = MOT.getPositionMatch(MOT.GetRZPos(eRZLoc.PICKON));// GetPRZ_PosName(); + if (PosM && PosZ) + { + PUB.log.Add("Raising printer R Z-axis due to door opening"); + MOT.Move(eAxis.PR_UPDN, 0, 100, 1000, false, false, false); + } + } + } + } + else + { + //도어를 다시 닫았을때처리해준다. + + //오류 혹은 Wait 상태일때에는 프린터 Z축을 올려준다 + if (PUB.sm.Step == eSMStep.WAITSTART || PUB.sm.Step == eSMStep.PAUSE) + { + if (pin == eDIName.DOORF3) + { + + var PosM = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY));//. MOT.GetPLM_PosName(); + var PosZ = MOT.getPositionMatch(MOT.GetLZPos(eLZLoc.READY));//.MOT.GetPRM_PosName(); + if (PosM && PosZ) + { + var zpos = MOT.GetLZPos(eLZLoc.PICKON); + PUB.log.Add("Lowering printer L Z-axis due to door closing"); + MOT.Move(eAxis.PL_UPDN, zpos.Position, 100, 1000, false, false, false); + } + } + else if (pin == eDIName.DOORF1) + { + var PosM = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY));//. MOT.GetPLM_PosName(); + var PosZ = MOT.getPositionMatch(MOT.GetRZPos(eRZLoc.READY));//.MOT.GetPRM_PosName(); + if (PosM && PosZ) + { + var zpos = MOT.GetRZPos(eRZLoc.PICKON); + PUB.log.Add("Lowering printer R Z-axis due to door closing"); + MOT.Move(eAxis.PR_UPDN, zpos.Position, 100, 1000, false, false, false); + } + } + } + + + } + } + else if (pin == eDIName.BUT_AIRF) //여기서부터는 스위치 영역 + { + //AIR버튼은 IDLE 이상일떄에 동작 한다 + if (value == true && PUB.sm.Step >= eSMStep.IDLE) + { + var curState = DIO.GetIOOutput(eDOName.SOL_AIR); + if (curState == false) + { + DIO.SetAIR(!curState); + PUB.log.AddI("Air ON"); + } + else + { + DIO.SetAIR(!curState); + PUB.log.AddAT("Air OFF"); + } + } + //AIR의 LED는 실제 AIR 출력 상태와 동기화 한다 * output event 에서 처리함 + } + else if (pin == eDIName.BUT_EMGF) + { + PUB.log.AddAT(string.Format("Emergency Status : {0} Value= {1}", pin, value)); + if (value == false) + { + //로더컨트롤의 이머전시 상탤르 설정한다 (둘중 하나라도 꺼지면 비상값이다) + + EmergencyTime = DateTime.Now; //한놈이라도 이머전시가 들어오면 강제 멈춘다 + PUB.mot.MoveStop("emg", true); + + //포트 모터 정지 + DIO.SetPortMotor(0, eMotDir.CW, false, "EMG"); System.Threading.Thread.Sleep(1); + DIO.SetPortMotor(1, eMotDir.CW, false, "EMG"); System.Threading.Thread.Sleep(1); + DIO.SetPortMotor(2, eMotDir.CW, false, "EMG"); System.Threading.Thread.Sleep(1); + } + else + { + //둘다 ON 되어잇다면 비상을 해제한다 + if (DIO.IsEmergencyOn() != true) hmi1.arDI_Emergency = false; + } + + //Emg는 B접점이라서 LED상태를 반전시킨다 + if (pin == eDIName.BUT_EMGF) DIO.SetOutput(eDOName.BUT_EMGF, !value); + + } + else if (pin == eDIName.BUT_STARTF) //시작버튼 + { + if (PUB.flag.get(eVarBool.FG_MOVE_PICKER)) + { + if (value) + { + if (VAR.BOOL[eVarBool.Enable_PickerMoveX] && PUB.mot.IsMotion((int)eAxis.PX_PICK) == false) + PUB.mot.JOG((int)eAxis.PX_PICK, arDev.MOT.MOTION_DIRECTION.Negative, AR.SETTING.Data.JOG_Speed, AR.SETTING.Data.JOG_Acc); + } + else + { + PUB.mot.MoveStop("xmove", (int)eAxis.PX_PICK); + } + + } + else + { + if (PUB.flag.get(eVarBool.FG_SCR_JOBSELECT) == false) + { + if (value && PUB.sm.Step >= eSMStep.IDLE) + { + PUB.log.AddI("START BUTTON"); + this._BUTTON_START(); + } + } + } + } + else if (pin == eDIName.BUT_STOPF) //중단버튼 + { + if (PUB.flag.get(eVarBool.FG_MOVE_PICKER)) + { + if (value) + { + if (VAR.BOOL[eVarBool.Enable_PickerMoveX] && PUB.mot.IsMotion((int)eAxis.PX_PICK) == false) + PUB.mot.JOG((int)eAxis.PX_PICK, arDev.MOT.MOTION_DIRECTION.Positive, AR.SETTING.Data.JOG_Speed, AR.SETTING.Data.JOG_Acc); + } + else + { + PUB.mot.MoveStop("xmove", (int)eAxis.PX_PICK); + } + } + else + { + if (PUB.flag.get(eVarBool.FG_SCR_JOBSELECT) == false) + { + if (value && PUB.sm.Step >= eSMStep.IDLE) + { + PUB.log.AddI("STOP BUTTON"); + _BUTTON_STOP(); + } + } + } + + } + else if (pin == eDIName.BUT_RESETF) //리셋버튼 + { + if (PUB.flag.get(eVarBool.FG_SCR_JOBSELECT) == false) + { + if (value && PUB.sm.Step >= eSMStep.IDLE) + { + + if (value) PUB.Result.ResetButtonDownTime = DateTime.Now; + else PUB.Result.ResetButtonDownTime = new DateTime(1982, 11, 23); + + PUB.log.AddI("RESET BUTTON"); + _BUTTON_RESET(); + } + } + + //요약폼이 있었다면 해제 해준다. - 210329 + if (PUB.sm.Step == eSMStep.FINISH) + HideSummary(); + } + else if (pin == eDIName.PORTL_DET_UP || pin == eDIName.PORTC_DET_UP || pin == eDIName.PORTR_DET_UP) + { + var pidx = 0; + eVarBool FG_RDY_PORT = eVarBool.FG_RDY_PORT_PL; + var value1 = DIO.GetIOInput(pin); + + if (pin == eDIName.PORTC_DET_UP) + { + pidx = 1; + FG_RDY_PORT = eVarBool.FG_RDY_PORT_PC; + if (value1 == true) //해당 제품이 검출되어 멈춘다면, 키엔스 데이터를 초기화 해준다. + { + //Pub.Result.ItemData[1].VisionData.Clear("DIO DET1"); + //PUB.flag.set(eVarBool.END_VISION1, false, "DIO DET1"); + //데이터 손실건이 나와서 처리하지 않게한다 210318 + } + } + else if (pin == eDIName.PORTR_DET_UP) { pidx = 2; FG_RDY_PORT = eVarBool.FG_RDY_PORT_PR; } + + if (PUB.sm.Step != eSMStep.RUN && value1 == false) //감지가 꺼지면 ready 를 해제한다 + PUB.flag.set(FG_RDY_PORT, false, "IOCHANGE"); + else if (hmi1.arVar_Port[pidx].AlignOK != 1) + PUB.Result.PortAlignTime[0] = DateTime.Now.Ticks; //시작시간을 초기화 해준다 + + //동작중에 들어오면 바로 멈추게한다. 이것은 SPS에서 적용되어야하지만 더 빠르게 반응하기 위해서 그렇게 한다 - 200813 + if (value1 && DIO.GetPortMotorDir(pidx) == eMotDir.CW) + DIO.SetPortMotor(pidx, eMotDir.CW, false, "_DIO_DETECT"); + } + + + if (pin == eDIName.PORTL_LIM_DN) + { + //좌측포트의 하단부리밋센서가 검출될경우 마그넷이 on 되어있다면 off한다. + if (DIO.GetIOInput(eDIName.PORTL_LIM_DN) == true && DIO.GetIOOutput(eDOName.PORTL_MAGNET) == true) + { + DIO.SetPortMagnet(0, false); + PUB.log.Add("Left port magnet OFF"); + } + } + else if (pin == eDIName.PORTC_LIM_DN) + { + //좌측포트의 하단부리밋센서가 검출될경우 마그넷이 on 되어있다면 off한다. + if (DIO.GetIOInput(eDIName.PORTC_LIM_DN) == true && DIO.GetIOOutput(eDOName.PORTC_MAGNET) == true) + { + DIO.SetPortMagnet(1, false); + PUB.log.Add("Center port magnet OFF"); + + if(PUB.sm.Step == eSMStep.FINISH) + { + DIO.SetBuzzer(false); //부저종료 231005 + } + } + } + else if (pin == eDIName.PORTR_LIM_DN) + { + //좌측포트의 하단부리밋센서가 검출될경우 마그넷이 on 되어있다면 off한다. + if (DIO.GetIOInput(eDIName.PORTR_LIM_DN) == true && DIO.GetIOOutput(eDOName.PORTR_MAGNET) == true) + { + DIO.SetPortMagnet(2, false); + PUB.log.Add("Right port magnet OFF"); + } + } + else if (pin == eDIName.R_CONV4 || pin == eDIName.L_CONV1 || pin == eDIName.L_CONV4 || pin == eDIName.R_CONV1) + { + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + } + + } + } +} \ No newline at end of file diff --git a/Handler/Project/RunCode/_02_Output_Events.cs b/Handler/Project/RunCode/_02_Output_Events.cs new file mode 100644 index 0000000..8816b54 --- /dev/null +++ b/Handler/Project/RunCode/_02_Output_Events.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + void _DIO_OUTPUT_VALUE_CHANGED(eDOName pin, Boolean value) + { + if (pin == eDOName.PORTL_MOT_RUN) + { + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + hmi1.arVar_Port[0].MotorRun = value; + } + else if (pin == eDOName.PORTC_MOT_RUN) + { + //VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + hmi1.arVar_Port[1].MotorRun = value; + } + else if (pin == eDOName.PORTR_MOT_RUN) + { + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + hmi1.arVar_Port[2].MotorRun = value; + } + + else if (pin == eDOName.PORTL_MOT_DIR) + { + + hmi1.arVar_Port[0].MotorDir = !value; + } + else if (pin == eDOName.PORTC_MOT_DIR) + hmi1.arVar_Port[1].MotorDir = !value; + else if (pin == eDOName.PORTR_MOT_DIR) + { + + hmi1.arVar_Port[2].MotorDir = !value; + } + + //피커 백큠 동작 상태(front) + //else if (pin == eDOName.PICK_VAC1) loader1.arVar_Picker[0].VacOutput[0] = value; + //else if (pin == eDOName.PICK_VAC2) loader1.arVar_Picker[0].VacOutput[1] = value; + //else if (pin == eDOName.PICK_VAC3) loader1.arVar_Picker[0].VacOutput[2] = value; + //else if (pin == eDOName.PICK_VAC4) loader1.arVar_Picker[0].VacOutput[3] = value; + + //출력상태에 따라서 버튼의 LED를 켠다 + else if (pin == eDOName.SOL_AIR) + { + DIO.SetOutput(eDOName.BUT_AIRF, value); + + if (value == false) + PUB.flag.set(eVarBool.FG_PK_ITEMON, false, "DO"); + hmi1.arDIAir = value; //AIR상태를 표시 + } + else if (pin == eDOName.LEFT_CONV) + { + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + if (value) + { + VAR.TIME[eVarTime.CONVL_START] = DateTime.Now; + } + else + { + VAR.TIME[eVarTime.CONVL_START] = new DateTime(1982, 11, 23); + VAR.DBL[eVarDBL.CONVL_RUNTIME] = 0; + } + + PUB.log.Add($"LEFT_CONV : {value}"); + } + else if (pin == eDOName.RIGHT_CONV) + { + VAR.TIME[(int)eVarTime.JOBEVENT] = DateTime.Now; + PUB.log.Add($"RIGHT_CONV : {value}"); + if (value) + { + VAR.TIME[eVarTime.CONVR_START] = DateTime.Now; + } + else + { + VAR.TIME[eVarTime.CONVR_START] = new DateTime(1982, 11, 23); + VAR.DBL[eVarDBL.CONVR_RUNTIME] = 0; + } + + } + else if (pin == eDOName.BUZZER) + { + if (value) + PUB.BuzzerTime = DateTime.Now; + else + PUB.BuzzerTime = new DateTime(1982, 11, 23); + } + + } + + } +} diff --git a/Handler/Project/RunCode/_03_Interlock_Events.cs b/Handler/Project/RunCode/_03_Interlock_Events.cs new file mode 100644 index 0000000..159c82f --- /dev/null +++ b/Handler/Project/RunCode/_03_Interlock_Events.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using arDev; +using AR; +using AR; +namespace Project +{ + public partial class FMain + { + void Set_InterLock() + { + if (PUB.sm.Step < eSMStep.IDLE) return; + intlockcnt += 1; + + var CurrentSaftyDoor = DIO.isSaftyDoorF();//도어안전 + var CurrentSaftyArea = true; //안전영역 + var bEmg = DIO.IsEmergencyOn(); //비상정지 + var bHSet = PUB.mot.IsInit && PUB.mot.HasHomeSetOff; //홈 설정이 완료되었는지 확인한다 + + PUB.flag.set(eVarBool.FG_DOORSAFTY, CurrentSaftyDoor, "COMMINTERLOCK"); + PUB.flag.set(eVarBool.FG_AREASAFTY, CurrentSaftyArea, "COMMINTERLOCK"); + + for (int i = 0; i < PUB.iLock.Length; i++) + { + PUB.iLock[i].set((int)eILock.EMG, bEmg, "COMMINTERLOCK"); + PUB.iLock[i].set((int)eILock.DOOR, !CurrentSaftyDoor, "COMMINTERLOCK"); + if (i < 7) + { + PUB.iLock[i].set((int)eILock.HOMESET, bHSet, "COMMINTERLOCK"); + } + } + + //피커의 Z축이 움직이는 동안에는 Y축을 움직이지 못하게 한다 + PUB.iLock[(int)eAxis.PX_PICK].set((int)eILock.ZMOVE, PUB.mot.IsMotion((int)eAxis.PZ_PICK), "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.ZMOVE, PUB.mot.IsMotion((int)eAxis.PL_UPDN), "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.ZMOVE, PUB.mot.IsMotion((int)eAxis.PR_UPDN), "COMMINTERLOCK"); + + //피커의 Y축이 움직이는 동안에는 Z축을 움직이지 못하게 한다 + PUB.iLock[(int)eAxis.PZ_PICK].set((int)eILock.XMOVE, PUB.mot.IsMotion((int)eAxis.PX_PICK), "COMMINTERLOCK"); + + //외부컨베어 신호 인터락설정 (출구쪽센서가 인식되지 않았다면 멈추지 않는다) + var cvLBusy = DIO.GetIOInput(eDIName.L_CONV4) && DIO.GetIOInput(eDIName.L_EXT_READY) == false && VAR.BOOL[eVarBool.FG_AUTOOUTCONVL] == false; + var cvRBusy = DIO.GetIOInput(eDIName.R_CONV4) && DIO.GetIOInput(eDIName.R_EXT_READY) == false && VAR.BOOL[eVarBool.FG_AUTOOUTCONVR] == false; + PUB.iLockCVL.set((int)eILockCV.EXTBUSY, cvLBusy, "COMMINTERLOCK"); + PUB.iLockCVR.set((int)eILockCV.EXTBUSY, cvRBusy, "COMMINTERLOCK"); + + //축을 사용하지 않는경우 + PUB.iLockCVL.set((int)eILockCV.DISABLE, SETTING.Data.Disable_Left, "COMMINTERLOCK"); + PUB.iLockCVR.set((int)eILockCV.DISABLE, SETTING.Data.Disable_Right, "COMMINTERLOCK"); + + //카트모드에서 + PUB.iLockCVL.set((int)eILockCV.CARTMODE, !VAR.BOOL[eVarBool.Use_Conveyor], "COMMINTERLOCK"); + PUB.iLockCVR.set((int)eILockCV.CARTMODE, !VAR.BOOL[eVarBool.Use_Conveyor], "COMMINTERLOCK"); + + + //포트가동상태에따라서 비젼인터락 + PUB.iLockVS0.set((int)eILockVS0.PORTRDY, !PUB.flag.get(eVarBool.FG_RDY_PORT_PL), "COMMINTERLOCK"); + if (PUB.Result.DryRun == true) + PUB.iLockVS1.set((int)eILockVS1.PORTRDY, false, "COMMINTERLOCK"); + else + PUB.iLockVS1.set((int)eILockVS1.PORTRDY, !PUB.flag.get(eVarBool.FG_RDY_PORT_PC), "COMMINTERLOCK"); + PUB.iLockVS2.set((int)eILockVS2.PORTRDY, !PUB.flag.get(eVarBool.FG_RDY_PORT_PR), "COMMINTERLOCK"); + + //위치관련 인터락은 MODEL이 설정 되어있어야하며, MOTION도 정상이어야 한다 + if (PUB.mot.IsInit && PUB.Result.mModel.isSet) + { + //if (PUB.LockModel.WaitOne(1) == true) + { + //PUB.LockModel.Reset(); + + //피커의 X축에 따라서 비젼의 촬영가능여부가 결정된다 + PUB.iLockVS0.set((int)eILockVS0.PKXPOS, DIO.GetIOInput(eDIName.PICKER_SAFE) == false && MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)) < -2, "COMMINTERLOCK"); + if (MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.READYL)) <= 2 || MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.READYR)) >= -2) + PUB.iLockVS1.set((int)eILockVS1.PKXPOS, false, "COMMINTERLOCK"); + else + PUB.iLockVS1.set((int)eILockVS1.PKXPOS, true, "COMMINTERLOCK"); + PUB.iLockVS2.set((int)eILockVS2.PKXPOS, DIO.GetIOInput(eDIName.PICKER_SAFE) == false && MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)) > 2, "COMMINTERLOCK"); + + //프린터Y축 위치에 따른 비젼촬영여부(기준위치보다 낮게 있다면 촬영이 안된다) + var PLMCmdPos = MOT.GetLMPos(eLMLoc.READY); + var PRMCmdPos = MOT.GetRMPos(eRMLoc.READY); + PUB.iLockVS0.set((int)eILockVS0.PRNYPOS, (MOT.getPositionOffset(PLMCmdPos) < -5), "COMMINTERLOCK"); + PUB.iLockVS2.set((int)eILockVS2.PRNYPOS, (MOT.getPositionOffset(PRMCmdPos) < -5), "COMMINTERLOCK"); + + //피커의Z축이 안전위치가 아니면 Y축을 움직이지 않는다 + var PKZ_POS_ERR = MOT.getPositionOffset(MOT.GetPZPos(ePZLoc.READY)) > 2; + PUB.iLock[(int)eAxis.PX_PICK].set((int)eILock.Z_POS, PKZ_POS_ERR, "COMMINTERLOCK"); + + PKZ_POS_ERR = (DIO.GetIOInput(eDIName.PICKER_SAFE) == false && MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)) <= 2); + PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.X_POS, PKZ_POS_ERR, "COMMINTERLOCK"); ; + + PKZ_POS_ERR = (DIO.GetIOInput(eDIName.PICKER_SAFE) == false && MOT.getPositionOffset(MOT.GetPXPos(ePXLoc.PICKON)) >= 2); + PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.X_POS, PKZ_POS_ERR, "COMMINTERLOCK"); + + //프린터Z축 안전위치가 아니면 Y축을 멈춘다 + var PLZ_POS_ERR = MOT.getPositionOffset(MOT.GetLZPos(eLZLoc.READY)) > 2.0; + var PRZ_POS_ERR = MOT.getPositionOffset(MOT.GetRZPos(eRZLoc.READY)) > 2.0; + PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.PZ_POS, PLZ_POS_ERR, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.PZ_POS, PRZ_POS_ERR, "COMMINTERLOCK"); + + //실린더가 전진해 잇다면 이동하지 않아야 한다 - 210207 + var PLZ_CYL_FW = !DIO.GetIOInput(eDIName.L_PICK_BW); + var PRZ_CYL_FW = !DIO.GetIOInput(eDIName.R_PICK_BW); + PUB.iLock[(int)eAxis.PL_MOVE].set((int)eILock.CYL_FORWARD, PLZ_CYL_FW, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PR_MOVE].set((int)eILock.CYL_FORWARD, PRZ_CYL_FW, "COMMINTERLOCK"); + + //프린터Y축 안전위치가 아니면 Z축을 멈춘다 + var PLM_YPOS_READY = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY)); //MOT.GetPLM_PosName(); + var PRM_YPOS_READY = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY)); //MOT.GetPRM_PosName(); + + var PLM_YPOS_H07 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTH07)); + var PLM_YPOS_M07 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTM07)); + var PLM_YPOS_L07 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTL07)); + var PLM_YPOS_H13 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTH13)); + var PLM_YPOS_M13 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTM13)); + var PLM_YPOS_L13 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTL13)); + + var PRM_YPOS_H07 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTH07)); + var PRM_YPOS_M07 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTM07)); + var PRM_YPOS_L07 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTL07)); + var PRM_YPOS_H13 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTH13)); + var PRM_YPOS_M13 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTM13)); + var PRM_YPOS_L13 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTL13)); + + + var 좌측대기옵셋 = MOT.getPositionOffset(MOT.GetLMPos(eLMLoc.READY)); + var 우측대기옵셋 = MOT.getPositionOffset(MOT.GetRMPos(eRMLoc.READY)); + var 좌측대기인정 = (좌측대기옵셋 >= (AR.SETTING.Data.MoveYForPaperVaccumeValue - 0.5) && 좌측대기옵셋 <= 0.5); + var 우측대기인정 = (우측대기옵셋 >= (AR.SETTING.Data.MoveYForPaperVaccumeValue - 0.5) && 좌측대기옵셋 <= 0.5); + + var PLM_POS_ERR = !(좌측대기인정 || PLM_YPOS_READY || PLM_YPOS_H07 || PLM_YPOS_M07 || PLM_YPOS_L07 || PLM_YPOS_H13 || PLM_YPOS_M13 || PLM_YPOS_L13); + var PRM_POS_ERR = !(우측대기인정 || PRM_YPOS_READY || PRM_YPOS_H07 || PRM_YPOS_M07 || PRM_YPOS_L07 || PRM_YPOS_H13 || PRM_YPOS_M13 || PRM_YPOS_L13); + + PUB.iLock[(int)eAxis.PL_UPDN].set((int)eILock.PY_POS, PLM_POS_ERR, "COMMINTERLOCK"); + PUB.iLock[(int)eAxis.PR_UPDN].set((int)eILock.PY_POS, PRM_POS_ERR, "COMMINTERLOCK"); + + //PUB.LockModel.Set(); + } + } + else + { + //모션사용불능은 그냥 해제한다 + //Pub.LockPRL.set((int)eILockPRL.PYPOS, false, "COMMINTERLOCK"); + //Pub.LockPRL.set((int)eILockPRR.PYPOS, false, "COMMINTERLOCK"); + } + + } + + } +} diff --git a/Handler/Project/RunCode/_04_Flag_Events.cs b/Handler/Project/RunCode/_04_Flag_Events.cs new file mode 100644 index 0000000..237b11a --- /dev/null +++ b/Handler/Project/RunCode/_04_Flag_Events.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +using arDev; + +namespace Project +{ + public partial class FMain + { + + void Lock_ValueChanged(object sender, AR.InterfaceValueEventArgs e) + { + + //인터락플래그 변경 이벤트 + var iL = sender as AR.CInterLock; + var tagstr = (iL.Tag == null ? string.Empty : iL.Tag.ToString()); + var fgstr = $"[{e.ArrIDX}]"; + + if (tagstr == "PKX") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PKZ") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PKT") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PLM") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PLZ") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PRM") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PRZ") fgstr = ((eILock)e.ArrIDX).ToString(); + else if (tagstr == "PRL") fgstr = ((eILockPRL)e.ArrIDX).ToString(); + else if (tagstr == "PRR") fgstr = ((eILockPRR)e.ArrIDX).ToString(); + else if (tagstr == "VS0") fgstr = ((eILockVS0)e.ArrIDX).ToString(); + else if (tagstr == "VS1") fgstr = ((eILockVS1)e.ArrIDX).ToString(); + else if (tagstr == "VS2") fgstr = ((eILockVS2)e.ArrIDX).ToString(); + + else if (tagstr == "CVL") fgstr = ((eILockCV)e.ArrIDX).ToString(); + else if (tagstr == "CVR") fgstr = ((eILockCV)e.ArrIDX).ToString(); + + //else fgstr = "?"; + + //최초생성시에는 값을 표시한다 + if (PUB.sm.Step >= eSMStep.IDLE && PUB.sm.Step != eSMStep.HOME_FULL) + { + if (e.NewOn) + { + if (tagstr == "PKX" && PUB.mot.IsMotion(0) == true) + { + Console.WriteLine("ㅠㅠ"); + } + if (AR.SETTING.Data.Log_ILock) + PUB.log.Add(string.Format("[IL-ON:{2}] {0}:{1}", fgstr, e.Reason, tagstr)); + if (AR.SETTING.Data.Enable_Log_ILock) + PUB.logILock.Add("ON", $"{fgstr}:{e.Reason}"); + } + else if (e.NewOff) + { + if (AR.SETTING.Data.Log_ILock) + PUB.log.Add(string.Format("[IL-OF:{2}] {0}:{1}", fgstr, e.Reason, tagstr)); + if (AR.SETTING.Data.Enable_Log_ILock) + PUB.logILock.Add("OF", $"{fgstr}:{e.Reason}"); + } + + var logmsg = "#### ILOCK(" + tagstr + ")변경 : " + fgstr + "(" + e.ArrIDX.ToString() + ") 값:" + e.NewValue.ToString() + ",사유:" + e.Reason; + + //ILOck 로그에 기록 + if (AR.SETTING.Data.Enable_Log_ILock) PUB.logILock.Add(logmsg); + + //메인로그에 기록 + if (AR.SETTING.Data.Log_ILock) PUB.log.Add(logmsg); + } + + } + private void Flag_ValueChanged(object sender, VarData.ValueEventArgs e) + { + var fg = (eVarBool)e.Idx; + + if (fg == eVarBool.FG_PK_ITEMON) + { + // Pub.log.AddAT(string.Format("[FLAG:{0}] : {1}", fg, e.NewValue)); + hmi1.arVar_Picker[0].ItemOn = e.Value; + } + + else if (fg == eVarBool.FG_RDY_PZ_LPICKOF) hmi1.arFG_RDY_YP_FPICKOF = e.Value; + else if (fg == eVarBool.FG_RDY_PZ_RPICKOF) hmi1.arFG_RDY_YP_RPICKOF = e.Value; + else if (fg == eVarBool.FG_CMD_YP_LPICKON) hmi1.arFG_CMD_YP_FPICKON = e.Value; + else if (fg == eVarBool.FG_CMD_YP_RPICKON) hmi1.arFG_CMD_YP_RPICKON = e.Value; + + else if (fg == eVarBool.FG_MINSPACE) hmi1.arFlag_Minspace = e.Value; + + + hmi1.arVar_Port[0].Ready = PUB.flag.get(eVarBool.FG_RDY_PORT_PL); + hmi1.arVar_Port[1].Ready = PUB.flag.get(eVarBool.FG_RDY_PORT_PC); + hmi1.arVar_Port[2].Ready = PUB.flag.get(eVarBool.FG_RDY_PORT_PR); + + if (PUB.sm.Step >= eSMStep.IDLE && PUB.sm.Step != eSMStep.HOME_FULL) + { + var logmsg = string.Format("[{0}] {1} : {2} => {3}", e.Idx, fg, e.Value, e.Message); + //ILOck 로그에 기록 + if (AR.SETTING.Data.Enable_Log_Flag) PUB.logFlag.Add(logmsg); + + //메인로그에 기록 + if (AR.SETTING.Data.Log_flag) PUB.log.Add(logmsg); + } + + } + } +} diff --git a/Handler/Project/RunCode/_97_Utility.cs b/Handler/Project/RunCode/_97_Utility.cs new file mode 100644 index 0000000..4125ce0 --- /dev/null +++ b/Handler/Project/RunCode/_97_Utility.cs @@ -0,0 +1,152 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; +namespace Project +{ + public partial class FMain + { + Dialog.fFinishJob fsum = null; + void HideSummary() + { + if (this.InvokeRequired) + { + this.BeginInvoke(new MethodInvoker(HideSummary), null); + } + else + { + if (fsum != null) + { + if (fsum.IsDisposed == false && fsum.Disposing == false) + { + fsum.Close(); + fsum.Dispose(); + } + fsum = null; + } + } + + } + void ShowSummary() + { + if (fsum == null || fsum.IsDisposed || fsum.Disposing == true) + { + fsum = new Dialog.fFinishJob(); + fsum.FormClosed += (s1, e1) => + { + //해당 폼이 닫힐때 처리한다. + if (PUB.sm.Step == eSMStep.FINISH) + { + //완료상때일때 닫으면 + Run_MotionPositionReset(); + } + }; + fsum.Show(); + } + else + { + fsum.Show(); + fsum.Activate(); + } + } + + void UserStepWait(eWorkPort target) + { + if (PUB.flag.get(eVarBool.FG_USERSTEP)) + { + if (target == eWorkPort.Left) + { + if (LockUserL.WaitOne(1)) + LockUserL.Reset(); + } + else + { + if (LockUserR.WaitOne(1)) + LockUserR.Reset(); + } + + } + } + + /// + /// user step 상황에서 자동으로 멈추게 합니다. + /// + void UserStepRun(eWorkPort target) + { + if (PUB.flag.get(eVarBool.FG_USERSTEP)) + { + if (target == eWorkPort.Right) + { + if (LockUserL.WaitOne(1) == false) + LockUserL.Set(); + } + else + { + if (LockUserR.WaitOne(1) == false) + LockUserR.Set(); + } + + } + } + + + /// + /// 홈작업이 진행 가능한지 하드웨어 상태를 확인한다. + /// + /// + bool CheckHomeProcess_HW_Available(Boolean needHomeSet) + { + //모션이 초기화되지 않았다면 오류로 한다 + if (PUB.mot.IsInit == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.AZJINIT, eNextStep.NOTHING); + return false; + } + + //모든 홈이 되어야 가능하다 + if (needHomeSet) + { + if (PUB.mot.IsInit && PUB.mot.HasHomeSetOff == true) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR); + return false; + } + } + + //안전센서가 작동했다면 중지한다. + if (DIO.isSaftyDoorF(true) == false || DIO.isSaftyDoorR() == false) + { + PUB.Result.SetResultMessage(eResult.SAFTY, eECode.DOORSAFTY, eNextStep.ERROR); + return false; + } + + //모션모델이 반드시 설정되어있어야 한다 + if (PUB.Result.isSetmModel == false) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.NOMODELM, eNextStep.ERROR); + return false; + } + + //AIR확인 + if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) + { + PUB.Result.SetResultMessage(eResult.SENSOR, eECode.AIRNOOUT, eNextStep.ERROR); + return false; + } + + // 비상정지 확인 + if (DIO.IsEmergencyOn() == true) + { + PUB.Result.SetResultMessage(eResult.SAFTY, eECode.EMERGENCY, eNextStep.ERROR); + return false; + } + + return true; + } + + + } +} diff --git a/Handler/Project/RunCode/_99_System_Shutdown.cs b/Handler/Project/RunCode/_99_System_Shutdown.cs new file mode 100644 index 0000000..89f4b5e --- /dev/null +++ b/Handler/Project/RunCode/_99_System_Shutdown.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + + } +} diff --git a/Handler/Project/RunCode/_Close.cs b/Handler/Project/RunCode/_Close.cs new file mode 100644 index 0000000..2f83dfa --- /dev/null +++ b/Handler/Project/RunCode/_Close.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + /// + /// 프로그램을 닫을때 1회 실행되는 함수 + /// + private void _Close_Start() + { + //연결체크용 쓰레드 종료 + bRunConnection = false; + this.thConnection.Abort(); + + + //Light off 220714 + DIO.SetRoomLight(false, true); + + //Pub.dio.SetOutput((int)eDOName.ABRUN, false); //stop mgz loader a/c motor + PUB.log.Add("Program Close"); + PUB.LogFlush(); + + //키엔트추가 210114 + + if(PUB.keyenceF != null) + { + PUB.keyenceF.ExecCommand("QUIT"); + PUB.keyenceF.Dispose(); + } + if(PUB.keyenceR != null) + { + PUB.keyenceR.ExecCommand("QUIT"); + PUB.keyenceR.Dispose(); + } + + PUB.dio.StopMonitor(); + PUB.mot.StopMonitor(); + PUB.sm.Stop(); + } + } +} diff --git a/Handler/Project/RunCode/_Motion.cs b/Handler/Project/RunCode/_Motion.cs new file mode 100644 index 0000000..4e63369 --- /dev/null +++ b/Handler/Project/RunCode/_Motion.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; + +namespace Project +{ + public partial class FMain + { + public Boolean[] DisableMotion; + private void Mot_PositionChanged(object sender, arDev.MOT.PositionChangeEventArgs e) + { + eAxis mot = (eAxis)e.Axis; + if (mot == eAxis.PX_PICK) + { + + } + + //모터 위치가 변경되면 로더 컨트롤에 입력한다 + hmi1.arMotorPosition[e.Axis] = e.Actual; + } + + void mot_StatusChanged(object sender, arDev.MOT.StatusChangeEventArags e) + { + if (e.Axis >= SETTING.System.MotaxisCount) return; + if (e.Status == arDev.MOT.MOTION_STATUS.SERVOALARM) hmi1.arMOT_Alm[e.Axis] = e.Value; + else if (e.Status == arDev.MOT.MOTION_STATUS.LIMITN) hmi1.arMOT_LimDn[e.Axis] = e.Value; + else if (e.Status == arDev.MOT.MOTION_STATUS.LIMITP) hmi1.arMOT_LimUp[e.Axis] = e.Value; + else if (e.Status == arDev.MOT.MOTION_STATUS.ORIGIN) hmi1.arMOT_Origin[e.Axis] = e.Value; + else if (e.Status == arDev.MOT.MOTION_STATUS.SERVROON) hmi1.arMOT_SVOn[e.Axis] = e.Value; + } + + private void Mot_EndStatusChanged(object sender, arDev.MOT.EndStatusChangeEventArgs e) + { + if (AR.SETTING.Data.Enable_Log_MotStopReason == false) return; //210112 + + var bitstatus = Convert.ToString(e.Value, 2).PadLeft(16, '0'); + List lst = new List(); + for (byte i = 0; i < 15; i++) + { + var offset = (ushort)(Math.Pow(2, i)); + if ((e.Value & offset) > 0) lst.Add((FS_END_STATUS)offset); + } + + var reason = string.Join(",", lst); + PUB.log.Add("MOT", $"Motor stop reason ({e.axis}): {reason}: bit={bitstatus}"); + } + + + void mot_HomeStatusChanged(object sender, arDev.MOT.HomeStatusChangeEventArgs e) + { + if (PUB.sm.Step == eSMStep.HOME_FULL) + { + hmi1.arHomeProgress[e.Axis] = e.Progress; + if (e.NewStatus == arDev.MOT.HOME_RESULT.HOME_ERR_NOT_DETECT) + { + //홈 검색시 오류가 발생했다 사용자에게 알림을 해야 함 + PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR, e.Axis); + } + else if (e.NewStatus == arDev.MOT.HOME_RESULT.HOME_SUCCESS) + { + PUB.log.AddI(string.Format("Home search completed for axis: {0}", e.Axis)); + } + } + } + + + void mot_Message(object sender, arDev.MOT.MessageEventArgs e) + { + if (e.IsError) + { + if (e.Message.IndexOf("same position") != -1 || e.Message.IndexOf("inposition") != -1) + { // Pub.log.AddAT("MOT:" + e.Message); + } + else PUB.log.AddE("MOT:" + e.Message); + } + + else PUB.log.Add("MOT:" + e.Message); + } + + } +} diff --git a/Handler/Project/RunCode/_SM_RUN.cs b/Handler/Project/RunCode/_SM_RUN.cs new file mode 100644 index 0000000..d6c3db7 --- /dev/null +++ b/Handler/Project/RunCode/_SM_RUN.cs @@ -0,0 +1,202 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using AR; +namespace Project +{ + public partial class FMain + { + bool[] runStepisFirst = new bool[] { false, false }; + + #region "Is Can Pick On/Off" + + Boolean isCanPLPickOn() + { + //아이템을 가지고 있으면 안된다. + if (PUB.flag.get(eVarBool.FG_PL_ITEMON)) return false; + + //Y축이 집는 위치가 아니면 빠져나감 + var Pos = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.READY));// MOT.GetPLM_PosName(); + if (Pos) return false; + + return true; + } + + Boolean isCanPRPickOn() + { + //아이템을 가지고 있으면 안된다. + if (PUB.flag.get(eVarBool.FG_PR_ITEMON)) return false; + + //Y축이 집는 위치가 아니면 빠져나감 + var Pos = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.READY));// MOT.GetPRM_PosName(); + if (Pos) return false; + + return true; + } + + Boolean isCanPLPickOff() + { + //아이템이 없으면 불가 + if (PUB.flag.get(eVarBool.FG_PL_ITEMON) == false) return false; + + //Y축 위치 확인 + var PosH07 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTH07)); + var PosM07 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTM07)); + var PosL07 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTL07)); + + var PosH13 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTH13)); + var PosM13 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTM13)); + var PosL13 = MOT.getPositionMatch(MOT.GetLMPos(eLMLoc.PRINTL13)); + + if (PosH07 && PosM07 && PosL07 && PosH13 && PosM13 && PosL13) return false; + + //포트가 준비되지않았거나, 감지가 안되었다면 진행 불가 + if (PUB.flag.get(eVarBool.FG_RDY_PORT_PL) == false || hmi1.arVar_Port[0].AlignOK != 1) return false; + + return true; + } + + + Boolean isCanPRPickOff() + { + //아이템이 없으면 불가 + if (PUB.flag.get(eVarBool.FG_PR_ITEMON) == false) return false; + + //Y축 위치 확인 + var PosH07 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTH07)); + var PosM07 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTM07)); + var PosL07 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTL07)); + + var PosH13 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTH13)); + var PosM13 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTM13)); + var PosL13 = MOT.getPositionMatch(MOT.GetRMPos(eRMLoc.PRINTL13)); + + if (PosH07 && PosM07 && PosL07 && PosH13 && PosM13 && PosL13) return false; + + //포트가 준비되지않았거나, 감지가 안되었다면 진행 불가 + if (PUB.flag.get(eVarBool.FG_RDY_PORT_PR) == false || hmi1.arVar_Port[2].AlignOK != 1) return false; + + return true; + } + + Boolean isCanPickOffL() + { + //아이템이 없으면 불가 + if (PUB.flag.get(eVarBool.FG_PK_ITEMON) == false) return false; + + //Y축 위치 확인 + if (MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKOFFL)) == false) return false; + + //포트가 준비되지않았거나, 감지가 안되었다면 진행 불가 + if (PUB.flag.get(eVarBool.FG_RDY_PORT_PL) == false || hmi1.arVar_Port[0].AlignOK != 1) return false; + + return true; + } + + Boolean isCanPickOn() + { + //아이템을 가지고 있으면 안된다. + if (PUB.flag.get(eVarBool.FG_PK_ITEMON)) return false; + + //Y축이 집는 위치가 아니면 빠져나감 + if (MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKON)) == false) return false; + + //포트가 준비되어 있지 않다면 가져갈수 없다 + if (PUB.Result.DryRun == false && (PUB.flag.get(eVarBool.FG_RDY_PORT_PC) == false || hmi1.arVar_Port[1].AlignOK != 1)) return false; + + return true; + } + + Boolean isCanPickOffR() + { + //아이템이 없으면 불가 + if (PUB.flag.get(eVarBool.FG_PK_ITEMON) == false) return false; + + //Y축 위치 확인 + if (MOT.getPositionMatch(MOT.GetPXPos(ePXLoc.PICKOFFR)) == false) return false; + + //포트가 준비되지않았거나, 감지가 안되었다면 진행 불가 + if (PUB.flag.get(eVarBool.FG_RDY_PORT_PR) == false || hmi1.arVar_Port[2].AlignOK != 1) return false; + + return true; + } + + #endregion + + bool CheckPauseCondition(Boolean lightCheck) + { + //비상정지체크 + if (DIO.IsEmergencyOn() == true || PUB.mot.HasEmergencyStop) + { + //이것은 SPS에서 추가로 처리된다 + PUB.Result.SetResultMessage(eResult.EMERGENCY, eECode.EMERGENCY, eNextStep.NOTHING);// false); + return false; + } + + //홈이 잡혀잇는지 체크한다 + if (PUB.mot.HasHomeSetOff == true) + { + PUB.Result.SetResultMessage(eResult.MOTION, eECode.MOT_HSET, eNextStep.ERROR); + return false; + } + + if (lightCheck == false) + { + //안전센서체크 + if (DIO.isSaftyDoorF() == false) + { + PUB.Result.SetResultMessage(eResult.EMERGENCY, eECode.DOORSAFTY, eNextStep.PAUSE);// false); + PUB.mot.MoveStop("Safety issue", true); + + if (DIO.isSaftyDoorF(0, false) == false) DIO.SetPortMotor(0, eMotDir.CW, false, "Safety error"); + if (DIO.isSaftyDoorF(1, false) == false) DIO.SetPortMotor(1, eMotDir.CW, false, "Safety error"); + if (DIO.isSaftyDoorF(2, false) == false) DIO.SetPortMotor(2, eMotDir.CW, false, "Safety error"); + return false; + } + + //에어공급출력체크 + if (AR.SETTING.Data.DisableSensor_AIRCheck == false && DIO.GetIOOutput(eDOName.SOL_AIR) == false) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.AIRNOOUT, eNextStep.PAUSE);//false); + return false; + } + + //오버로드체크 + if (hmi1.arVar_Port[0].OverLoad) + { + PUB.Result.SetResultMessage(eResult.SENSOR, eECode.PORTOVERLOAD, eNextStep.PAUSE, new object[] { "FRONT-LEFT" }); + return false; + } + } + + return true; + } + + Boolean isPortLimDN(int idx) + { + if (idx < 0 || idx > 2) throw new Exception("Port number must be between (0~2)"); + if (idx == 0) return DIO.GetIOInput(eDIName.PORTL_LIM_DN); + else if (idx == 1) return DIO.GetIOInput(eDIName.PORTC_LIM_DN); + else return DIO.GetIOInput(eDIName.PORTR_LIM_DN); + + } + Boolean isPortLimUP(int idx) + { + if (idx < 0 || idx > 2) throw new Exception("Port number must be between (0~2)"); + if (idx == 0) return DIO.GetIOInput(eDIName.PORTL_LIM_UP); + else if (idx == 1) return DIO.GetIOInput(eDIName.PORTC_LIM_UP); + else return DIO.GetIOInput(eDIName.PORTR_LIM_UP); + } + Boolean isPortDetUp(int idx) + { + if (idx < 0 || idx > 2) throw new Exception("Port number must be between (0~2)"); + if (idx == 0) return DIO.GetIOInput(eDIName.PORTL_DET_UP); + else if (idx == 1) return DIO.GetIOInput(eDIName.PORTC_DET_UP); + else return DIO.GetIOInput(eDIName.PORTR_DET_UP); + } + + + }//cvass +} diff --git a/Handler/Project/RunCode/_Vision.cs b/Handler/Project/RunCode/_Vision.cs new file mode 100644 index 0000000..7f54db2 --- /dev/null +++ b/Handler/Project/RunCode/_Vision.cs @@ -0,0 +1,381 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WatsonWebsocket; +using AR; + +namespace Project +{ + public partial class FMain + { + //DateTime lastRecvWSL = new DateTime(1982, 11, 23); + //DateTime lastRecvWSR = new DateTime(1982, 11, 23); + string lastBarcodeRawL = string.Empty; + string lastBarcodeRawR = string.Empty; + + + void AttachCameraEventL() + { + //크레비스오픈 - 210203 + //PUB.log.Add("카메라 이벤트 생성"); + PUB.wsL.MessageReceived += Ws_DataArrivalL; + PUB.wsL.ServerConnected += Ws_ConnectedL; + PUB.wsL.ServerDisconnected += Ws_DisconnectedL; + } + void DetachCameraEventL() + { + //크레비스오픈 - 210203 + //PUB.log.Add("카메라 이벤트 해제"); + PUB.wsL.MessageReceived -= Ws_DataArrivalL; + PUB.wsL.ServerConnected -= Ws_ConnectedL; + PUB.wsL.ServerDisconnected -= Ws_DisconnectedL; + + } + void AttachCameraEventR() + { + //크레비스오픈 - 210203 + //if (COMM.SETTING.Data.Log_CameraConn) PUB.log.Add("카메라 이벤트 생성"); + PUB.wsR.MessageReceived += Ws_DataArrivalR; + PUB.wsR.ServerConnected += Ws_ConnectedR; + PUB.wsR.ServerDisconnected += Ws_DisconnectedR; + } + void DetachCameraEventR() + { + //크레비스오픈 - 210203 + //if (COMM.SETTING.Data.Log_CameraConn) PUB.log.Add("카메라 이벤트 해제"); + PUB.wsR.MessageReceived -= Ws_DataArrivalR; + PUB.wsR.ServerConnected -= Ws_ConnectedR; + PUB.wsR.ServerDisconnected -= Ws_DisconnectedR; + } + private void Ws_DisconnectedL(object sender, EventArgs e) + { + var ws = sender as WatsonWebsocket.WatsonWsClient; + PUB.log.AddAT("Camera L connection terminated"); + //_isCrevisOpen[0] = false; + PUB.flag.set(eVarBool.FG_RDY_CAMERA_L, false, "DISC"); + } + + private void Ws_ConnectedL(object sender, EventArgs e) + { + PUB.log.AddAT("Camera L connection successful"); + //_isCrevisOpen[0] = true; + } + private void Ws_DisconnectedR(object sender, EventArgs e) + { + var ws = sender as WatsonWebsocket.WatsonWsClient; + PUB.log.AddAT("Camera R connection terminated"); + //_isCrevisOpen[2] = false; + PUB.flag.set(eVarBool.FG_RDY_CAMERA_R, false, "DISC"); + } + + private void Ws_ConnectedR(object sender, EventArgs e) + { + PUB.log.AddAT("Camera R connection successful"); + //_isCrevisOpen[2] = true; + } + + private void Ws_DataArrivalL(object sender, MessageReceivedEventArgs e) + { + Ws_DataArrival(0, sender as WatsonWsClient, e); + } + private void Ws_DataArrivalR(object sender, MessageReceivedEventArgs e) + { + Ws_DataArrival(1, sender as WatsonWsClient, e); + } + + private void Ws_DataArrival(int idx, WatsonWsClient ws, MessageReceivedEventArgs e) + { + //throw new NotImplementedException(); + var data = Encoding.UTF8.GetString(e.Data);// Pub.ws.Get(); + if (idx == 0) VAR.TIME[eVarTime.lastRecvWSL] = DateTime.Now; + else VAR.TIME[eVarTime.lastRecvWSR] = DateTime.Now; + + + + if (data.Contains("\"command\":\"status")) + { + //PUB.logVision.Add($"[{idx}]상태메세지수신"); + //PUB.logVision.Flush(); + try + { + var jsondata = JObject.Parse(data); + var msgdata = new + { + command = jsondata.Value("command"), + camera = jsondata.Value("camera"), + live = jsondata.Value("live"), + stream = jsondata.Value("stream"), + listen = jsondata.Value("listen"), + trig = jsondata.Value("trig"), + license = jsondata.Value("license"), + reel = jsondata.Value("reel"), + conv = jsondata.Value("conv"), + }; + + if (idx == 0) + { + PUB.flag.set(eVarBool.VS_DETECT_REEL_L, (msgdata.reel == "1"), "WS"); + PUB.flag.set(eVarBool.VS_DETECT_CONV_L, (msgdata.conv == "1"), "WS"); + } + else + { + PUB.flag.set(eVarBool.VS_DETECT_REEL_R, (msgdata.reel == "1"), "WS"); + PUB.flag.set(eVarBool.VS_DETECT_CONV_R, (msgdata.conv == "1"), "WS"); + } + + + if (msgdata.license == "1" && msgdata.camera == "1") + { + if (idx == 0) + { + if(PUB.flag.get(eVarBool.FG_RDY_CAMERA_L)==false) + { + PUB.flag.set(eVarBool.FG_RDY_CAMERA_L, true, "WEBSOCKET"); + PUB.log.Add("Left camera ready"); + } + } + else + { + if (PUB.flag.get(eVarBool.FG_RDY_CAMERA_R) == false) + { + PUB.flag.set(eVarBool.FG_RDY_CAMERA_R, true, "WEBSOCKET"); + PUB.log.Add("Right camera ready"); + } + + } + } + else + { + if (idx == 0) PUB.flag.set(eVarBool.FG_RDY_CAMERA_L, false, "WEBSOCKET"); + else PUB.flag.set(eVarBool.FG_RDY_CAMERA_R, false, "WEBSOCKET"); + } + } + catch (Exception ex) + { + PUB.log.AddE("Status message analysis failed: " + ex.Message); + } + } + else + { + //처리가능한 상황에서만 큐에 데이터를 넣는다 + if (idx == 0 && PUB.flag.get(eVarBool.FG_PRC_VISIONL) == false) + { + PUB.log.AddAT("Left side vision not in verification state, deleting barcode data\n" + data); + return; + } + if (idx != 0 && PUB.flag.get(eVarBool.FG_PRC_VISIONR) == false) + { + PUB.log.AddAT("Right side vision not in verification state, deleting barcode data\n" + data); + return; + } + + PUB.log.Add($"QR verification ({(idx == 0 ? "L" : "R")}) received: " + data); + var guid = idx == 0 ? PUB.Result.ItemDataL.guid : PUB.Result.ItemDataR.guid; + + //BarcodeParsing(idx, guid, data, "WS"); + var qrDataList = ProcessRecvBarcodeData(idx, data); + if (qrDataList.Count > 0) //바코드데이터가 존재 했다 + { + //처리가 완료되지 않은경우엠ㄴ 사용한다. + if (idx == 0) + { + if (PUB.flag.get(eVarBool.FG_END_VISIONL) == false) + { + var Complete = RecvQRProcess(qrDataList, eWorkPort.Left); + if (Complete) PUB.flag.set(eVarBool.FG_END_VISIONL, true, "DATA_ARRIVAL"); + } + else PUB.log.AddAT("Vision (L) previous task completed, not processing"); + } + else + { + if (PUB.flag.get(eVarBool.FG_END_VISIONR) == false) + { + var Complete = RecvQRProcess(qrDataList, eWorkPort.Right); + if (Complete) PUB.flag.set(eVarBool.FG_END_VISIONR, true, "DATA_ARRIVAL"); + } + else PUB.log.AddAT("Vision (R) previous task completed, not processing"); + } + } + + } + + } + + + + + //바코드 원본의 데이터큐 + //ConcurrentQueue BarcodeQueL = new ConcurrentQueue(); + //ConcurrentQueue BarcodeQueR = new ConcurrentQueue(); + + //bool BarcodeParsing(int idx, string guid, string jsonstr, string source, Boolean force = false) + //{ + + // //값이있다면 바코드 큐에 집어 넣는다. + // if (idx == 0) + // { + // lastBarcodeRawL = jsonstr; + // lock (BarcodeQueL) + // BarcodeQueL.Enqueue(jsonstr); + // } + // else + // { + // lastBarcodeRawR = jsonstr; + // lock (BarcodeQueR) + // BarcodeQueR.Enqueue(jsonstr); + // } + + // return true; + //} + + //DateTime WSLLastRecv = DateTime.Now; + //DateTime WSRLastRecv = DateTime.Now; + bool WS_Send(eWorkPort idx, WatsonWebsocket.WatsonWsClient ws, string guid, string cmd,string data) + { + if (ws == null) return false; + + //데이터 생성 + var msg = new + { + guid = guid, + command = cmd, + data = data + }; + + var json = Newtonsoft.Json.JsonConvert.SerializeObject(msg); + Boolean sendok = false; + try + { + //PUB.log.Add($"전송({idx}),ID:{guid},명령:{cmd}"); + ws.SendAsync(json); + sendok = true; + } + catch (Exception ex) + { + PUB.log.AddE($"Transmission {idx} failed {ex.Message}"); + sendok = false; + } + + if (sendok == false) + { + try + { + if (idx == 0) CameraConTimeL = DateTime.Now; + else CameraConTimeR = DateTime.Now; + + if(ws != null) + { + PUB.log.AddAT($"Closing socket due to transmission {idx} failure"); + ws.Stop(); + } + } + catch (Exception ex) + { + PUB.log.AddE($"Socket {idx} termination failed: {ex.Message}"); + } + } + return sendok; + } + + //System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + //System.Diagnostics.Stopwatch wat0 = new System.Diagnostics.Stopwatch(); + //System.Diagnostics.Stopwatch wat1 = new System.Diagnostics.Stopwatch(); + //System.Diagnostics.Stopwatch wat2 = new System.Diagnostics.Stopwatch(); + + + /// + /// 바코드큐에있는 데이터를 분석하고 시작한다. + /// + /// + /// + /// + List ProcessRecvBarcodeData(int vIdx, string JsonStr) + { + //PUB.logVision.Add($"[{vIdx}]ProcessBarcodeQue"); + //PUB.logVision.Flush(); + List retval = new List(); + + if (JsonStr.isEmpty()) + { + PUB.log.AddE("Cannot proceed due to missing barcode receive value (JSON)"); + return retval; + } + + if (vIdx == 0) + lastBarcodeRawL = JsonStr; + else + lastBarcodeRawR = JsonStr; + + try + { + //모델에서 고정값을 입력한게 있다면 그것을 사용한다 + var itemC = PUB.Result.ItemDataC; + if (itemC.VisionData.VNAME.isEmpty() && PUB.Result.vModel.Def_Vname.isEmpty() == false) + { + itemC.VisionData.VNAME = PUB.Result.vModel.Def_Vname; + itemC.VisionData.VNAME_Trust = true; + PUB.log.Add($"Defaul V.Name Set to {PUB.Result.vModel.Def_Vname}"); + } + if (itemC.VisionData.MFGDATE.isEmpty() && PUB.Result.vModel.Def_MFG.isEmpty() == false) + { + itemC.VisionData.MFGDATE = PUB.Result.vModel.Def_MFG; + itemC.VisionData.MFGDATE_Trust = true; + PUB.log.Add($"Defaul MFGDATE Set to {PUB.Result.vModel.Def_MFG}"); + } + + var jsondata = JObject.Parse(JsonStr); + var msgdata = new + { + guid = jsondata.Value("guid"), + command = jsondata.Value("command"), + data = jsondata.Value("data[]"), + time = jsondata.Value("time"), + file = jsondata.Value("file") + }; + + var datas = jsondata.GetValue("data"); + if (datas.Type == JTokenType.String) + { + var bcdstr = datas.ToString(); + + //새로운 바코드라면 추가한다 + if (retval.Contains(bcdstr) == false) + retval.Add(bcdstr); + } + else + { + //데이터가 배열로 들어있는 경우이다 + foreach (var data in datas) + { + var dataarr = new + { + barcode = data.ToString() + }; + if (dataarr.barcode.isEmpty()) continue; + if (retval.Contains(dataarr.barcode) == false) + retval.Add(dataarr.barcode); + } + } + + //입력된 바코드 데이터를 확인한다. + //각 데이터는 아래처럼 변수에 추가를 해줘야ㅏ한ㄷ.ㅏ + //ImageProcessResult[vIdx].Add(item.data); + + + } + catch (Exception ex) + { + PUB.logVision.Add($"Camera ({vIdx}) ProcessBarcodeQue failed {ex.Message}"); PUB.logVision.Flush(); + } + + return retval; + } + + + } +} diff --git a/Handler/Project/STDLabelAttach(ATV).csproj b/Handler/Project/STDLabelAttach(ATV).csproj new file mode 100644 index 0000000..351bc4c --- /dev/null +++ b/Handler/Project/STDLabelAttach(ATV).csproj @@ -0,0 +1,995 @@ + + + + + Debug + AnyCPU + {65F3E762-800C-499E-862F-A535642EC59F} + WinExe + Project + Amkor + v4.8 + 512 + false + False + False + OnBuildSuccess + False + False + False + obj\$(Configuration)\ + + + + 게시\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + x64 + true + Full + False + ..\..\..\..\..\Amkor\BulkReelReader\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + ..\..\..\ManualMapEditor\ + TRACE + prompt + 4 + false + + + icons8-split-64.ico + + + LocalIntranet + + + false + + + + true + bin\debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + false + + + bin\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + false + + + Project + False + obj\ + + + 4194304 + False + Auto + + + + + + Properties\app.manifest + + + + False + ..\DLL\arControl.Net4.dll + + + ..\packages\chilkat-x64.9.5.0.77\lib\net47\ChilkatDotNet47.dll + + + ..\DLL\Communication.dll + + + False + ..\DLL\libxl\libxl.net.dll + + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\DLL\Sato\x64\SATOPrinterAPI.dll + + + C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\System.dll + + + + + + ..\packages\System.Drawing.Common.7.0.0\lib\net462\System.Drawing.Common.dll + + + ..\packages\System.Drawing.Primitives.4.3.0\lib\net45\System.Drawing.Primitives.dll + + + + + + + + + ..\packages\Microsoft.Web.WebView2.1.0.2849.39\lib\net45\Microsoft.Web.WebView2.Core.dll + + + ..\packages\Microsoft.Web.WebView2.1.0.2849.39\lib\net45\Microsoft.Web.WebView2.WinForms.dll + + + ..\packages\Microsoft.Web.WebView2.1.0.2849.39\lib\net45\Microsoft.Web.WebView2.Wpf.dll + + + + + + + + ..\DLL\WatsonWebsocket.dll + + + False + ..\DLL\Winsock Orcas.dll + + + + + Form + + + Form + + + Form + + + Form + + + + + + + + + + + + + + + + + + + + True + True + DataSet1.xsd + + + + + + + + Form + + + Form + + + fSendInboutData.cs + + + Form + + + fDataBufferSIDRef.cs + + + Form + + + fHistory.cs + + + Form + + + fSelectSIDInformation.cs + + + Form + + + fLoaderInfo.cs + + + Form + + + fManualPrint.cs + + + Form + + + fManualPrint0.cs + + + Form + + + fMessageInput.cs + + + Form + + + fNewSID.cs + + + Form + + + fPickerMove.cs + + + Form + + + fSavePosition.cs + + + Form + + + fSelectCustInfo.cs + + + Form + + + fSelectResult.cs + + + Form + + + fSelectDataList.cs + + + Form + + + fSelectDay.cs + + + Form + + + fSelectJob.cs + + + Form + + + fSelectSID.cs + + + Form + + + fVAR.cs + + + Form + + + Form + + + fZPLEditor.cs + + + Form + + + Model_Motion.cs + + + Form + + + Model_Motion_Desc.cs + + + Form + + + Model_Operation.cs + + + Form + + + Motion_MoveToGroup.cs + + + Form + + + RegExRule.cs + + + Form + + + RegExTest.cs + + + Form + + + UserControl + + + UserControl1.cs + + + + + + + + Form + + + fDebug.cs + + + Form + + + fFinishJob.cs + + + Form + + + fSIDQty.cs + + + True + True + dsWMS.xsd + + + + + Form + + + DataSet1.xsd + + + Form + + + Quick_Control.cs + + + Form + + + DIOMonitor.cs + + + Form + + + fLog.cs + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + fSetting.cs + + + Form + + + fSystem_Setting.cs + + + DSList.xsd + + + True + True + DSList.xsd + + + True + True + DSSetup.xsd + + + Form + + + fMain.cs + + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + + + + + + + Form + + + fSetting_ErrorMessage.cs + + + Form + + + fSetting_IOMessage.cs + + + Form + + + fSystem_MotParameter.cs + + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + + CtlBase.cs + + + + CtlContainer.cs + + + Component + + + CtlCylinder.cs + + + Component + + + CtlMotor.cs + + + Component + + + CtlSensor.cs + + + Component + + + CtlTowerLamp.cs + + + Form + + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + Form + + + + + Form + + + fSendInboutData.cs + + + fDataBufferSIDRef.cs + + + fHistory.cs + + + fSelectSIDInformation.cs + + + fLoaderInfo.cs + + + fManualPrint.cs + + + fManualPrint0.cs + + + fMessageInput.cs + + + fNewSID.cs + + + fPickerMove.cs + + + fSavePosition.cs + + + fSelectCustInfo.cs + + + fSelectJob.cs + + + fSelectResult.cs + + + fSelectDataList.cs + + + fSelectDay.cs + + + fDebug.cs + + + fFinishJob.cs + + + fVAR.cs + + + fZPLEditor.cs + + + Model_Motion.cs + + + Model_Motion_Desc.cs + + + Model_Operation.cs + + + Motion_MoveToGroup.cs + + + Quick_Control.cs + + + fSelectSID.cs + + + RegExRule.cs + + + RegExTest.cs + + + UserControl1.cs + + + DIOMonitor.cs + + + fLog.cs + + + fSIDQty.cs + + + fSetting.cs + + + fSystem_Setting.cs + + + fMain.cs + Designer + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + fSetting_ErrorMessage.cs + + + fSetting_IOMessage.cs + + + fSystem_MotParameter.cs + + + CtlMotor.cs + + + + DataSet1.xsd + + + Designer + MSDataSetGenerator + DataSet11.Designer.cs + + + DataSet1.xsd + Designer + + + DSList.xsd + + + Designer + MSDataSetGenerator + DSList.Designer.cs + + + DSList.xsd + + + DSSetup.xsd + + + Designer + MSDataSetGenerator + DSSetup.Designer.cs + + + DSSetup.xsd + + + dsWMS.xsd + + + Designer + MSDataSetGenerator + dsWMS.Designer.cs + + + dsWMS.xsd + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + Microsoft .NET Framework 4%28x86 및 x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + {62370293-92aa-4b73-b61f-5c343eeb4ded} + arAjinextek_Union + + + {a16c9667-5241-4313-888e-548375f85d29} + arFrameControl + + + {14e8c9a5-013e-49ba-b435-efefc77dd623} + CommData + + + {d54444f7-1d85-4d5d-b1d1-10d040141a91} + arCommSM + + + {14e8c9a5-013e-49ba-b435-ffffff7dd623} + arCommUtil + + + {140af52a-5986-4413-bf02-8ea55a61891b} + MemoryMapCore + + + {48654765-548d-42ed-9238-d65eb3bc99ad} + Setting + + + {b18d3b96-2fdf-4ed9-9a49-d9b8cee4ed6d} + StdLabelPrint + + + {9264cd2e-7cf8-4237-a69f-dcda984e0613} + UIControl + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/Setting/CounterSetting.cs b/Handler/Project/Setting/CounterSetting.cs new file mode 100644 index 0000000..e0e21cb --- /dev/null +++ b/Handler/Project/Setting/CounterSetting.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using AR; + +namespace Project +{ + public class CounterSetting : arUtil.Setting + { + public int seq { get; set; } + public string DateStr { get; set; } + + + + public void ClearP() + { + CountV0 = CountV1 = CountV2 = CountE = CountP0 = CountP1 = CountP2 = CountPrintL = CountPrintR = 0; + PUB.log.Add("Count(Port) Clear"); + this.Save(); + } + + public void ClearDay() + { + DateStr = string.Empty; + CountDP0 = CountDP1 = CountDP2 = CountDP3 = CountDP4 = 0; + PUB.log.Add("Count(Day) Clear"); + this.Save(); + } + + public int CountD + { + get + { + return CountDP0 + CountDP1 + CountDP2 + CountDP3 + CountDP4; + } + } + public int Count + { + get + { + return CountP0 + CountP1 + CountP2 + CountPrintL + CountPrintR; + } + } + + public int CountDP0 { get; set; } + public int CountDP1 { get; set; } + public int CountDP2 { get; set; } + public int CountDP3 { get; set; } + public int CountDP4 { get; set; } + + + + + //메인카운터 + public int CountP0 { get; set; } + public int CountP1 { get; set; } + public int CountP2 { get; set; } + public int CountPrintL { get; set; } + public int CountPrintR { get; set; } + public int CountE { get; set; } + public int CountV0 { get; set; } + public int CountV1 { get; set; } + public int CountV2 { get; set; } + + + public CounterSetting() + { + this.filename = AR.UTIL.CurrentPath + "counter.xml"; + } + public override void AfterLoad() + { + //if (CountReset == null) CountReset = DateTime.Parse("1982-11-23"); + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/Project/Setting/System_MotParameter.cs b/Handler/Project/Setting/System_MotParameter.cs new file mode 100644 index 0000000..19796ce --- /dev/null +++ b/Handler/Project/Setting/System_MotParameter.cs @@ -0,0 +1,263 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + + +namespace Project +{ + public class System_MotParameter + { + + string filename; + public DSSetup.MotionParamDataTable dt; + public int MotaxisCount + { + get + { + if (this.dt.Rows.Count < 1) return 0; + var maxid = this.dt.Max(t => t.idx); + return maxid + 1; + } + } + + + double[] _maxspeed; + public double MaxSpeed(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 0; + else return dr.MaxSpeed; + } + public double[] GetMaxSpeed + { + get + { + if (MotaxisCount < 1) return null; + + if (_maxspeed == null || _maxspeed.Length != MotaxisCount) + { + _maxspeed = new double[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + _maxspeed[i] = MaxSpeed(i); + } + } + + return _maxspeed; + } + } + + public void ClearCache() + { + _maxspeed = null; + _maxacc = null; + } + + double[] _maxacc; + + public double MaxAcc(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 0; + else return dr.MaxAcc; + } + + public double[] GetMaxAcc + { + get + { + if (MotaxisCount < 1) return null; + + if (_maxacc == null || _maxacc.Length != MotaxisCount) + { + _maxacc = new double[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + _maxacc[i] = MaxAcc(i); + } + } + return _maxacc; + } + } + + public double HomeSpeedHigh(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 30; + else return dr.HomeHigh; + } + public double[] GetHomeSpeedHigh + { + get + { + if (MotaxisCount < 1) return null; + var retval = new double[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = HomeSpeedHigh(i); + } + return retval; + } + } + public double HomeSpeedLow(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 10; + else return dr.HomeLow; + } + public double[] GetHomeSpeedLow + { + get + { + if (MotaxisCount < 1) return null; + var retval = new double[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = HomeSpeedLow(i); + } + return retval; + } + } + public double HomeSpeedAcc(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 50; + else return dr.HomeAcc; + } + public double[] GetHomeSpeedAcc + { + get + { + if (MotaxisCount < 1) return null; + var retval = new double[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = HomeSpeedAcc(i); + } + return retval; + } + } + public Boolean UseEStopSignal(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return false; + else return dr.UseEStop; + } + + public Boolean UseOriginSignal(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return false; + else return dr.UseOrigin; + } + + public Boolean UseAxis(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return false; + else return dr.Enable; + } + public double SWLimit(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 0; + else return dr.SWLimitP; + } + + public double HomeSpeedDcc(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 50; + else return dr.HomeDcc; + } + + + public float INPAccurary(int idx) + { + var dr = dt.Where(t => t.idx == idx).FirstOrDefault(); + if (dr == null) return 0.1f; + else return dr.InpositionAccr; + } + + public double[] GetHomeSpeedDcc + { + get + { + if (MotaxisCount < 1) return null; + var retval = new double[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = HomeSpeedDcc(i); + } + return retval; + } + } + public Boolean[] GetUseAxis + { + get + { + if (MotaxisCount < 1) return null; + var retval = new bool[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = UseAxis(i); + } + return retval; + } + } + public Boolean[] GetUseOrigin + { + get + { + if (MotaxisCount < 1) return null; + var retval = new bool[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = UseOriginSignal(i); + } + return retval; + } + } + + public Boolean[] GetUseEStop + { + get + { + if (MotaxisCount < 1) return null; + var retval = new bool[MotaxisCount]; + for (int i = 0; i < MotaxisCount; i++) + { + retval[i] = UseEStopSignal(i); + } + return retval; + } + } + public System_MotParameter(string filename) + { + this.filename = filename; + //if (string.IsNullOrEmpty(filename) + //this.filename = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "system_mot.xml"); + dt = new DSSetup.MotionParamDataTable(); + } + public void Save(DSSetup.MotionParamDataTable dt) + { + this.dt.Clear(); + this.dt.Merge(dt); + this.dt.AcceptChanges(); + if (string.IsNullOrEmpty(this.filename) == false) + this.dt.WriteXml(this.filename); + } + public void Load() + { + if (string.IsNullOrEmpty(this.filename) == false) + { + dt.Clear(); + if (System.IO.File.Exists(this.filename)) + dt.ReadXml(this.filename); + dt.AcceptChanges(); + } + } + } +} diff --git a/Handler/Project/Setting/System_Setting.cs b/Handler/Project/Setting/System_Setting.cs new file mode 100644 index 0000000..df59193 --- /dev/null +++ b/Handler/Project/Setting/System_Setting.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using AR; + +namespace Project +{ + + public class SystemSetting : arUtil.Setting + { + public int SaftySensor_Threshold { get; set; } + + #region "System Setting" + public int MotaxisCount { get; set; } + #endregion + + #region "Signal Reverse" + + + [Category("Signal Reverse")] + public Boolean ReverseSIG_Emgergency { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_ButtonAir { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_DoorF { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_DoorR { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_AirCheck { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortLimitUp { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortLimitDn { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortDetect0Up { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortDetect1Up { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortDetect2Up { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PickerSafe { get; set; } + + [Category("Signal Reverse")] + public Boolean ReverseSIG_ExtConvReady { get; set; } + + #endregion + + + public SystemSetting() + { + this.filename = UTIL.CurrentPath + "system.xml"; + } + public override void AfterLoad() + { + MotaxisCount = 7; + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/Project/Setting/UserSetting.cs b/Handler/Project/Setting/UserSetting.cs new file mode 100644 index 0000000..a858c70 --- /dev/null +++ b/Handler/Project/Setting/UserSetting.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using AR; + + +namespace Project +{ + public class UserSetting : arUtil.Setting + { + public Boolean Option_QtyUpdate1 { get; set; } + public Boolean Option_PartUpdate { get; set; } + public Boolean Option_printforce1 { get; set; } + public Boolean Option_Confirm1 { get; set; } + public Boolean Option_AutoConfirm { get; set; } + public Boolean Option_vname { get; set; } + public Boolean Option_FixPrint1 { get; set; } + public string Option_PrintPos1 { get; set; } + public Boolean Option_SidConv { get; set; } + + //public Boolean Option_QtyUpdate3 { get; set; } + //public Boolean Option_printforce3 { get; set; } + //public Boolean Option_Confirm3 { get; set; } + //public Boolean Option_FixPrint3 { get; set; } + //public string Option_PrintPos3 { get; set; } + + public string LastJobUnP11 { get; set; } + public string LastJobUnP12 { get; set; } + public string LastJobUnP21 { get; set; } + public string LastJobUnP22 { get; set; } + public string LastJobUnP31 { get; set; } + public string LastJobUnP32 { get; set; } + public string LastJobUnP41 { get; set; } + public string LastJobUnP42 { get; set; } + + + public string LastLot { get; set; } + public string LastAltag { get; set; } + public string LastModelM { get; set; } + public string LastModelV { get; set; } + + public string LastMC { get; set; } + + public int jobtype { get; set; } + public int scantype { get; set; } + public bool useConv { get; set; } + public UserSetting() + { + this.filename = AppDomain.CurrentDomain.BaseDirectory + "UserSet.xml"; + } + + public override void AfterLoad() + { + + if (PUB.uSetting.LastJobUnP11.isEmpty()) PUB.uSetting.LastJobUnP11 = "AUTO"; + if (PUB.uSetting.LastJobUnP12.isEmpty()) PUB.uSetting.LastJobUnP12 = "AUTO"; + if (PUB.uSetting.LastJobUnP21.isEmpty()) PUB.uSetting.LastJobUnP21 = "AUTO"; + if (PUB.uSetting.LastJobUnP22.isEmpty()) PUB.uSetting.LastJobUnP22 = "AUTO"; + if (PUB.uSetting.LastJobUnP31.isEmpty()) PUB.uSetting.LastJobUnP31 = "AUTO"; + if (PUB.uSetting.LastJobUnP32.isEmpty()) PUB.uSetting.LastJobUnP32 = "AUTO"; + if (PUB.uSetting.LastJobUnP41.isEmpty()) PUB.uSetting.LastJobUnP41 = "AUTO"; + if (PUB.uSetting.LastJobUnP42.isEmpty()) PUB.uSetting.LastJobUnP42 = "AUTO"; + + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/Project/Setting/fSetting.Designer.cs b/Handler/Project/Setting/fSetting.Designer.cs new file mode 100644 index 0000000..009dfa0 --- /dev/null +++ b/Handler/Project/Setting/fSetting.Designer.cs @@ -0,0 +1,660 @@ +namespace Project +{ + partial class fSetting + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSetting)); + this.btSave = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.btSystemBypass = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.btbuzAfterFinish = new System.Windows.Forms.Button(); + this.button13 = new System.Windows.Forms.Button(); + this.button14 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.btmag2 = new System.Windows.Forms.Button(); + this.btRoomLamp = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.btPickerVac = new System.Windows.Forms.Button(); + this.btPort1 = new System.Windows.Forms.Button(); + this.btmag1 = new System.Windows.Forms.Button(); + this.btTWLamp = new System.Windows.Forms.Button(); + this.btBuz = new System.Windows.Forms.Button(); + this.btmag0 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.btPort0 = new System.Windows.Forms.Button(); + this.btPort2 = new System.Windows.Forms.Button(); + this.btLeftVac = new System.Windows.Forms.Button(); + this.btPrintR = new System.Windows.Forms.Button(); + this.btPrintL = new System.Windows.Forms.Button(); + this.btRightVac = new System.Windows.Forms.Button(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.btDetectPrintR = new System.Windows.Forms.Button(); + this.btDetectPrintL = new System.Windows.Forms.Button(); + this.btCartDetR = new System.Windows.Forms.Button(); + this.btCartDetL = new System.Windows.Forms.Button(); + this.btCartDetC = new System.Windows.Forms.Button(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.btDefIO = new System.Windows.Forms.Button(); + this.btDefError = new System.Windows.Forms.Button(); + this.btOpenZPL = new System.Windows.Forms.Button(); + this.bsLang = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DataSet1(); + this.bsRecipient = new System.Windows.Forms.BindingSource(this.components); + this.bsMailForm = new System.Windows.Forms.BindingSource(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components); + this.panel1.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bsLang)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsRecipient)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsMailForm)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).BeginInit(); + this.SuspendLayout(); + // + // btSave + // + this.btSave.Dock = System.Windows.Forms.DockStyle.Fill; + this.btSave.Location = new System.Drawing.Point(5, 5); + this.btSave.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btSave.Name = "btSave"; + this.btSave.Size = new System.Drawing.Size(604, 53); + this.btSave.TabIndex = 0; + this.btSave.Text = "Save(&S)"; + this.btSave.UseVisualStyleBackColor = true; + this.btSave.Click += new System.EventHandler(this.button1_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.btSave); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 623); + this.panel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(614, 63); + this.panel1.TabIndex = 1; + // + // propertyGrid1 + // + this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill; + this.propertyGrid1.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.propertyGrid1.LineColor = System.Drawing.SystemColors.ControlDark; + this.propertyGrid1.Location = new System.Drawing.Point(3, 3); + this.propertyGrid1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.propertyGrid1.Name = "propertyGrid1"; + this.propertyGrid1.Size = new System.Drawing.Size(600, 584); + this.propertyGrid1.TabIndex = 1; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage4); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(614, 623); + this.tabControl1.TabIndex = 2; + this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.groupBox1); + this.tabPage2.Controls.Add(this.groupBox2); + this.tabPage2.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tabPage2.Location = new System.Drawing.Point(4, 29); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(5); + this.tabPage2.Size = new System.Drawing.Size(606, 590); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Quick Settings"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.btSystemBypass); + this.groupBox1.Controls.Add(this.button7); + this.groupBox1.Controls.Add(this.btbuzAfterFinish); + this.groupBox1.Controls.Add(this.button13); + this.groupBox1.Controls.Add(this.button14); + this.groupBox1.Controls.Add(this.button3); + this.groupBox1.Controls.Add(this.btmag2); + this.groupBox1.Controls.Add(this.btRoomLamp); + this.groupBox1.Controls.Add(this.button6); + this.groupBox1.Controls.Add(this.btPickerVac); + this.groupBox1.Controls.Add(this.btPort1); + this.groupBox1.Controls.Add(this.btmag1); + this.groupBox1.Controls.Add(this.btTWLamp); + this.groupBox1.Controls.Add(this.btBuz); + this.groupBox1.Controls.Add(this.btmag0); + this.groupBox1.Controls.Add(this.button5); + this.groupBox1.Controls.Add(this.btPort0); + this.groupBox1.Controls.Add(this.btPort2); + this.groupBox1.Controls.Add(this.btLeftVac); + this.groupBox1.Controls.Add(this.btPrintR); + this.groupBox1.Controls.Add(this.btPrintL); + this.groupBox1.Controls.Add(this.btRightVac); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.groupBox1.Location = new System.Drawing.Point(5, 5); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(596, 409); + this.groupBox1.TabIndex = 1; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Function Control"; + // + // btSystemBypass + // + this.btSystemBypass.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btSystemBypass.Location = new System.Drawing.Point(53, 349); + this.btSystemBypass.Name = "btSystemBypass"; + this.btSystemBypass.Size = new System.Drawing.Size(479, 42); + this.btSystemBypass.TabIndex = 49; + this.btSystemBypass.Text = "SYSTEM BYPASS"; + this.btSystemBypass.UseVisualStyleBackColor = true; + this.btSystemBypass.Click += new System.EventHandler(this.button8_Click); + // + // button7 + // + this.button7.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.button7.Location = new System.Drawing.Point(230, 279); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(124, 43); + this.button7.TabIndex = 48; + this.button7.Text = "Picker-Cylinder"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button7_Click_2); + // + // btbuzAfterFinish + // + this.btbuzAfterFinish.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btbuzAfterFinish.Location = new System.Drawing.Point(18, 30); + this.btbuzAfterFinish.Name = "btbuzAfterFinish"; + this.btbuzAfterFinish.Size = new System.Drawing.Size(135, 43); + this.btbuzAfterFinish.TabIndex = 25; + this.btbuzAfterFinish.Text = "Buzzer After Completion"; + this.btbuzAfterFinish.UseVisualStyleBackColor = true; + this.btbuzAfterFinish.Click += new System.EventHandler(this.button10_Click); + // + // button13 + // + this.button13.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.button13.Location = new System.Drawing.Point(53, 215); + this.button13.Name = "button13"; + this.button13.Size = new System.Drawing.Size(128, 42); + this.button13.TabIndex = 46; + this.button13.Text = "AIR(Lower)"; + this.button13.UseVisualStyleBackColor = true; + this.button13.Click += new System.EventHandler(this.button13_Click); + // + // button14 + // + this.button14.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.button14.Location = new System.Drawing.Point(404, 213); + this.button14.Name = "button14"; + this.button14.Size = new System.Drawing.Size(128, 42); + this.button14.TabIndex = 47; + this.button14.Text = "AIR(Lower)"; + this.button14.UseVisualStyleBackColor = true; + this.button14.Click += new System.EventHandler(this.button14_Click); + // + // button3 + // + this.button3.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.button3.Location = new System.Drawing.Point(230, 89); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(124, 43); + this.button3.TabIndex = 38; + this.button3.Text = "QR Validation"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click_1); + // + // btmag2 + // + this.btmag2.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btmag2.Location = new System.Drawing.Point(230, 233); + this.btmag2.Name = "btmag2"; + this.btmag2.Size = new System.Drawing.Size(124, 43); + this.btmag2.TabIndex = 42; + this.btmag2.Text = "Picker-Magnet"; + this.btmag2.UseVisualStyleBackColor = true; + this.btmag2.Click += new System.EventHandler(this.button5_Click_1); + // + // btRoomLamp + // + this.btRoomLamp.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btRoomLamp.Location = new System.Drawing.Point(429, 30); + this.btRoomLamp.Name = "btRoomLamp"; + this.btRoomLamp.Size = new System.Drawing.Size(135, 43); + this.btRoomLamp.TabIndex = 28; + this.btRoomLamp.Text = "Interior Light"; + this.btRoomLamp.UseVisualStyleBackColor = true; + this.btRoomLamp.Click += new System.EventHandler(this.button2_Click_2); + // + // button6 + // + this.button6.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.button6.Location = new System.Drawing.Point(404, 75); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(163, 49); + this.button6.TabIndex = 44; + this.button6.Text = "Right-Function"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button6_Click_3); + // + // btPickerVac + // + this.btPickerVac.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btPickerVac.Location = new System.Drawing.Point(230, 133); + this.btPickerVac.Name = "btPickerVac"; + this.btPickerVac.Size = new System.Drawing.Size(124, 43); + this.btPickerVac.TabIndex = 34; + this.btPickerVac.Text = "Picker-Vacuum"; + this.btPickerVac.UseVisualStyleBackColor = true; + this.btPickerVac.Click += new System.EventHandler(this.btPickerVac_Click); + // + // btPort1 + // + this.btPort1.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btPort1.ForeColor = System.Drawing.Color.Black; + this.btPort1.Location = new System.Drawing.Point(230, 187); + this.btPort1.Name = "btPort1"; + this.btPort1.Size = new System.Drawing.Size(124, 43); + this.btPort1.TabIndex = 23; + this.btPort1.Text = "Picker-Port"; + this.btPort1.UseVisualStyleBackColor = true; + this.btPort1.Click += new System.EventHandler(this.btPort1_Click); + // + // btmag1 + // + this.btmag1.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btmag1.Location = new System.Drawing.Point(404, 299); + this.btmag1.Name = "btmag1"; + this.btmag1.Size = new System.Drawing.Size(128, 42); + this.btmag1.TabIndex = 41; + this.btmag1.Text = "Magnet"; + this.btmag1.UseVisualStyleBackColor = true; + this.btmag1.Click += new System.EventHandler(this.button6_Click_2); + // + // btTWLamp + // + this.btTWLamp.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btTWLamp.Location = new System.Drawing.Point(292, 30); + this.btTWLamp.Name = "btTWLamp"; + this.btTWLamp.Size = new System.Drawing.Size(135, 43); + this.btTWLamp.TabIndex = 21; + this.btTWLamp.Text = "Tower Lamp"; + this.btTWLamp.UseVisualStyleBackColor = true; + this.btTWLamp.Click += new System.EventHandler(this.btTWLamp_Click); + // + // btBuz + // + this.btBuz.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btBuz.Location = new System.Drawing.Point(155, 30); + this.btBuz.Name = "btBuz"; + this.btBuz.Size = new System.Drawing.Size(135, 43); + this.btBuz.TabIndex = 4; + this.btBuz.Text = "Buzzer"; + this.btBuz.UseVisualStyleBackColor = true; + this.btBuz.Click += new System.EventHandler(this.button6_Click); + // + // btmag0 + // + this.btmag0.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btmag0.Location = new System.Drawing.Point(53, 301); + this.btmag0.Name = "btmag0"; + this.btmag0.Size = new System.Drawing.Size(128, 42); + this.btmag0.TabIndex = 40; + this.btmag0.Text = "Magnet"; + this.btmag0.UseVisualStyleBackColor = true; + this.btmag0.Click += new System.EventHandler(this.button7_Click_1); + // + // button5 + // + this.button5.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.button5.Location = new System.Drawing.Point(18, 77); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(163, 49); + this.button5.TabIndex = 43; + this.button5.Text = "Left-Function"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button5_Click_2); + // + // btPort0 + // + this.btPort0.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btPort0.ForeColor = System.Drawing.Color.Black; + this.btPort0.Location = new System.Drawing.Point(53, 258); + this.btPort0.Name = "btPort0"; + this.btPort0.Size = new System.Drawing.Size(128, 42); + this.btPort0.TabIndex = 22; + this.btPort0.Text = "Port"; + this.btPort0.UseVisualStyleBackColor = true; + this.btPort0.Click += new System.EventHandler(this.btPort0_Click); + // + // btPort2 + // + this.btPort2.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btPort2.ForeColor = System.Drawing.Color.Black; + this.btPort2.Location = new System.Drawing.Point(404, 256); + this.btPort2.Name = "btPort2"; + this.btPort2.Size = new System.Drawing.Size(128, 42); + this.btPort2.TabIndex = 35; + this.btPort2.Text = "Port"; + this.btPort2.UseVisualStyleBackColor = true; + this.btPort2.Click += new System.EventHandler(this.btPort2_Click); + // + // btLeftVac + // + this.btLeftVac.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btLeftVac.Location = new System.Drawing.Point(53, 172); + this.btLeftVac.Name = "btLeftVac"; + this.btLeftVac.Size = new System.Drawing.Size(128, 42); + this.btLeftVac.TabIndex = 32; + this.btLeftVac.Text = "VAC(Upper)"; + this.btLeftVac.UseVisualStyleBackColor = true; + this.btLeftVac.Click += new System.EventHandler(this.btLeftVac_Click); + // + // btPrintR + // + this.btPrintR.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btPrintR.ForeColor = System.Drawing.Color.Black; + this.btPrintR.Location = new System.Drawing.Point(404, 127); + this.btPrintR.Name = "btPrintR"; + this.btPrintR.Size = new System.Drawing.Size(128, 42); + this.btPrintR.TabIndex = 37; + this.btPrintR.Text = "Printer"; + this.btPrintR.UseVisualStyleBackColor = true; + this.btPrintR.Click += new System.EventHandler(this.button3_Click); + // + // btPrintL + // + this.btPrintL.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btPrintL.ForeColor = System.Drawing.Color.Black; + this.btPrintL.Location = new System.Drawing.Point(53, 129); + this.btPrintL.Name = "btPrintL"; + this.btPrintL.Size = new System.Drawing.Size(128, 42); + this.btPrintL.TabIndex = 36; + this.btPrintL.Text = "Printer"; + this.btPrintL.UseVisualStyleBackColor = true; + this.btPrintL.Click += new System.EventHandler(this.button4_Click_2); + // + // btRightVac + // + this.btRightVac.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold); + this.btRightVac.Location = new System.Drawing.Point(404, 170); + this.btRightVac.Name = "btRightVac"; + this.btRightVac.Size = new System.Drawing.Size(128, 42); + this.btRightVac.TabIndex = 33; + this.btRightVac.Text = "VAC(Upper)"; + this.btRightVac.UseVisualStyleBackColor = true; + this.btRightVac.Click += new System.EventHandler(this.btRightVac_Click); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.btDetectPrintR); + this.groupBox2.Controls.Add(this.btDetectPrintL); + this.groupBox2.Controls.Add(this.btCartDetR); + this.groupBox2.Controls.Add(this.btCartDetL); + this.groupBox2.Controls.Add(this.btCartDetC); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.groupBox2.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.groupBox2.Location = new System.Drawing.Point(5, 414); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(596, 171); + this.groupBox2.TabIndex = 2; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Sensor Control"; + // + // btDetectPrintR + // + this.btDetectPrintR.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.btDetectPrintR.Location = new System.Drawing.Point(112, 38); + this.btDetectPrintR.Name = "btDetectPrintR"; + this.btDetectPrintR.Size = new System.Drawing.Size(100, 58); + this.btDetectPrintR.TabIndex = 24; + this.btDetectPrintR.Text = "Print Detect-R"; + this.btDetectPrintR.UseVisualStyleBackColor = true; + this.btDetectPrintR.Click += new System.EventHandler(this.btDetectPrintR_Click); + // + // btDetectPrintL + // + this.btDetectPrintL.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.btDetectPrintL.Location = new System.Drawing.Point(12, 38); + this.btDetectPrintL.Name = "btDetectPrintL"; + this.btDetectPrintL.Size = new System.Drawing.Size(100, 58); + this.btDetectPrintL.TabIndex = 23; + this.btDetectPrintL.Text = "Print Detect-L"; + this.btDetectPrintL.UseVisualStyleBackColor = true; + this.btDetectPrintL.Click += new System.EventHandler(this.btDetectPrintL_Click); + // + // btCartDetR + // + this.btCartDetR.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.btCartDetR.Location = new System.Drawing.Point(213, 99); + this.btCartDetR.Name = "btCartDetR"; + this.btCartDetR.Size = new System.Drawing.Size(100, 58); + this.btCartDetR.TabIndex = 20; + this.btCartDetR.Text = "Cart Detect(R)"; + this.btCartDetR.UseVisualStyleBackColor = true; + this.btCartDetR.Click += new System.EventHandler(this.button5_Click); + // + // btCartDetL + // + this.btCartDetL.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.btCartDetL.Location = new System.Drawing.Point(12, 99); + this.btCartDetL.Name = "btCartDetL"; + this.btCartDetL.Size = new System.Drawing.Size(100, 58); + this.btCartDetL.TabIndex = 21; + this.btCartDetL.Text = "Cart Detect(L)"; + this.btCartDetL.UseVisualStyleBackColor = true; + this.btCartDetL.Click += new System.EventHandler(this.button6_Click_1); + // + // btCartDetC + // + this.btCartDetC.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.btCartDetC.Location = new System.Drawing.Point(112, 99); + this.btCartDetC.Name = "btCartDetC"; + this.btCartDetC.Size = new System.Drawing.Size(100, 58); + this.btCartDetC.TabIndex = 22; + this.btCartDetC.Text = "Cart Detect(C)"; + this.btCartDetC.UseVisualStyleBackColor = true; + this.btCartDetC.Click += new System.EventHandler(this.button7_Click); + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.propertyGrid1); + this.tabPage1.Location = new System.Drawing.Point(4, 29); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(606, 590); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Advanced Settings"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.btDefIO); + this.tabPage4.Controls.Add(this.btDefError); + this.tabPage4.Controls.Add(this.btOpenZPL); + this.tabPage4.Location = new System.Drawing.Point(4, 29); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Size = new System.Drawing.Size(606, 590); + this.tabPage4.TabIndex = 3; + this.tabPage4.Text = "Other"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // btDefIO + // + this.btDefIO.Location = new System.Drawing.Point(13, 118); + this.btDefIO.Name = "btDefIO"; + this.btDefIO.Size = new System.Drawing.Size(234, 43); + this.btDefIO.TabIndex = 48; + this.btDefIO.Text = "Define I/O Description"; + this.btDefIO.UseVisualStyleBackColor = true; + this.btDefIO.Click += new System.EventHandler(this.button12_Click); + // + // btDefError + // + this.btDefError.Location = new System.Drawing.Point(13, 65); + this.btDefError.Name = "btDefError"; + this.btDefError.Size = new System.Drawing.Size(234, 43); + this.btDefError.TabIndex = 47; + this.btDefError.Text = "Define Error Messages"; + this.btDefError.UseVisualStyleBackColor = true; + this.btDefError.Click += new System.EventHandler(this.button11_Click); + // + // btOpenZPL + // + this.btOpenZPL.Location = new System.Drawing.Point(13, 12); + this.btOpenZPL.Name = "btOpenZPL"; + this.btOpenZPL.Size = new System.Drawing.Size(234, 43); + this.btOpenZPL.TabIndex = 46; + this.btOpenZPL.Text = "Open ZPL"; + this.btOpenZPL.UseVisualStyleBackColor = true; + this.btOpenZPL.Click += new System.EventHandler(this.btOpenZPL_Click); + // + // bsLang + // + this.bsLang.DataMember = "language"; + this.bsLang.DataSource = this.dataSet1; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // bsRecipient + // + this.bsRecipient.DataMember = "MailRecipient"; + this.bsRecipient.DataSource = this.dataSet1; + // + // bsMailForm + // + this.bsMailForm.DataMember = "MailFormat"; + this.bsMailForm.DataSource = this.dataSet1; + // + // errorProvider1 + // + this.errorProvider1.ContainerControl = this; + // + // fSetting + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(614, 686); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.panel1); + this.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSetting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Program Settings"; + this.Load += new System.EventHandler(this.@__Load); + this.panel1.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.bsLang)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsRecipient)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsMailForm)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btSave; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.PropertyGrid propertyGrid1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.BindingSource bsLang; + private DataSet1 dataSet1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btBuz; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.ErrorProvider errorProvider1; + private System.Windows.Forms.Button btTWLamp; + private System.Windows.Forms.BindingSource bsRecipient; + private System.Windows.Forms.BindingSource bsMailForm; + private System.Windows.Forms.Button btRoomLamp; + private System.Windows.Forms.Button btPickerVac; + private System.Windows.Forms.Button btRightVac; + private System.Windows.Forms.Button btLeftVac; + private System.Windows.Forms.Button btPort1; + private System.Windows.Forms.Button btPort0; + private System.Windows.Forms.Button btPort2; + private System.Windows.Forms.Button btPrintR; + private System.Windows.Forms.Button btPrintL; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button btCartDetR; + private System.Windows.Forms.Button btCartDetL; + private System.Windows.Forms.Button btCartDetC; + private System.Windows.Forms.Button btmag2; + private System.Windows.Forms.Button btmag1; + private System.Windows.Forms.Button btmag0; + private System.Windows.Forms.Button btDetectPrintR; + private System.Windows.Forms.Button btDetectPrintL; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.Button btOpenZPL; + private System.Windows.Forms.Button btbuzAfterFinish; + private System.Windows.Forms.Button btDefIO; + private System.Windows.Forms.Button btDefError; + private System.Windows.Forms.Button button13; + private System.Windows.Forms.Button button14; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button btSystemBypass; + } +} \ No newline at end of file diff --git a/Handler/Project/Setting/fSetting.cs b/Handler/Project/Setting/fSetting.cs new file mode 100644 index 0000000..d31b5db --- /dev/null +++ b/Handler/Project/Setting/fSetting.cs @@ -0,0 +1,412 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project +{ + public partial class fSetting : Form + { + CommonSetting dummySetting; //Temporarily store settings and overwrite on completion + + public fSetting() + { + InitializeComponent(); + + //setting + dummySetting = new CommonSetting(); + AR.SETTING.Data.CopyTo(dummySetting); + + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) + this.Close(); + if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; + }; + this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; }; + this.FormClosed += __Closed; + + bsRecipient.DataSource = PUB.mailList; + bsMailForm.DataSource = PUB.mailForm; + } + + private void __Closed(object sender, FormClosedEventArgs e) + { + + } + + private void __Load(object sender, EventArgs e) + { + this.Show(); + + this.propertyGrid1.SelectedObject = this.dummySetting; + this.propertyGrid1.Refresh(); + + btBuz.BackColor = dummySetting.Disable_Buzzer == false ? Color.Lime : Color.Tomato; + this.btTWLamp.BackColor = dummySetting.Disable_TowerLamp ? Color.Tomato : Color.Lime; + this.btRoomLamp.BackColor = dummySetting.Disable_RoomLight == true ? Color.Tomato : Color.Lime; + + //Vacuum usage status + this.btLeftVac.BackColor = dummySetting.Disable_PLVac ? Color.Tomato : Color.Lime; + this.btRightVac.BackColor = dummySetting.Disable_PRVac ? Color.Tomato : Color.Lime; + this.btPickerVac.BackColor = dummySetting.Disable_PKVac ? Color.Tomato : Color.Lime; + + //Port usage status + this.btPort0.BackColor = dummySetting.Disable_PortL ? Color.Tomato : Color.Lime; + this.btPort1.BackColor = dummySetting.Disable_PortC ? Color.Tomato : Color.Lime; + this.btPort2.BackColor = dummySetting.Disable_PortR ? Color.Tomato : Color.Lime; + + //Printer usage status + this.btPrintL.BackColor = dummySetting.Disable_PrinterL ? Color.Tomato : Color.Lime; + this.btPrintR.BackColor = dummySetting.Disable_PrinterR ? Color.Tomato : Color.Lime; + + //Unloader QR validation + this.button3.BackColor = dummySetting.Enable_Unloader_QRValidation ? Color.Lime : Color.Tomato; + + //Card detection sensor + this.btCartDetL.BackColor = dummySetting.Detect_CartL ? Color.Lime : Color.Tomato; + this.btCartDetC.BackColor = dummySetting.Detect_CartC ? Color.Lime : Color.Tomato; + this.btCartDetR.BackColor = dummySetting.Detect_CartR ? Color.Lime : Color.Tomato; + + //Magnet usage + this.btmag0.BackColor = dummySetting.Enable_Magnet0 ? Color.Lime : Color.Tomato; + this.btmag1.BackColor = dummySetting.Enable_Magnet1 ? Color.Lime : Color.Tomato; + this.btmag2.BackColor = dummySetting.Enable_Magnet2 ? Color.Lime : Color.Tomato; + + //Print paper detection + this.btDetectPrintL.BackColor = dummySetting.Detect_PrintL ? Color.Lime : Color.Tomato; + this.btDetectPrintR.BackColor = dummySetting.Detect_PrintR ? Color.Lime : Color.Tomato; + + //Function usage + this.button5.BackColor = dummySetting.Disable_Left == false ? Color.Lime : Color.Tomato; + this.button6.BackColor = dummySetting.Disable_Right == false ? Color.Lime : Color.Tomato; + //this.button9.BackColor = dummySetting.Enable_RQAuto ? Color.Lime : Color.Tomato; + + this.button13.BackColor = dummySetting.Disable_PLAir == false ? Color.Lime : Color.Tomato; + this.button14.BackColor = dummySetting.Disable_PRAir == false ? Color.Lime : Color.Tomato; + this.btbuzAfterFinish.BackColor = dummySetting.Force_JobEndBuzzer ? Color.Gold : SystemColors.Control; + this.button7.BackColor = dummySetting.Enable_PickerCylinder ? Color.Lime : Color.Tomato; + this.btSystemBypass.BackColor = dummySetting.SystemBypass ? Color.DarkBlue : Color.Transparent; + this.btSystemBypass.ForeColor = dummySetting.SystemBypass ? Color.White : Color.Black; + } + + private void button1_Click(object sender, EventArgs e) + { + + if (PUB.PasswordCheck() == false) + { + UTIL.MsgE("Password incorrect"); + return; + } + //check convmode - disable port0/2 + //if (dummySetting.Enable_ConveryorMode) + //{ + // if (dummySetting.Disable_PortL == false) + // { + // UTIL.MsgE("컨베이어 사용시에는 포트(L/R)을 사용할 수 없습니다"); + // return; + // } + // if (dummySetting.Disable_PortR == false) + // { + // UTIL.MsgE("컨베이어 사용시에는 포트(L/R)을 사용할 수 없습니다"); + // return; + // } + //} + + var ChangeL = dummySetting.Disable_Left != AR.SETTING.Data.Disable_Left; + var ChangeR = dummySetting.Disable_Right != AR.SETTING.Data.Disable_Right; + if (ChangeL || ChangeR) + { + UTIL.MsgI("Left/Right usage options will be applied after restarting the job"); + } + + this.Invalidate(); + var chTable = PUB.userList.GetChanges(); + if (chTable != null) + { + string fn = UTIL.MakePath("Data", "users.xml"); + PUB.userList.WriteXml(fn, true); + PUB.userList.AcceptChanges(); + } + + bsRecipient.EndEdit(); + this.Validate(); + var recpTable = PUB.mailList.GetChanges(); + if (recpTable != null) + { + string fn = AppDomain.CurrentDomain.BaseDirectory + "mailList.xml"; + + PUB.mailList.WriteXml(fn, true); + PUB.mailList.AcceptChanges(); + } + bsMailForm.EndEdit(); + var formTable = PUB.mailForm.GetChanges(); + if (formTable != null) + { + string fn = AppDomain.CurrentDomain.BaseDirectory + "mailForm.xml"; + PUB.mailForm.WriteXml(fn, true); + PUB.mailForm.AcceptChanges(); + } + + + + + + try + { + dummySetting.CopyTo(SETTING.Data); + SETTING.Save(); + PUB.log.AddI("Setting Save"); + PUB.log.Add(SETTING.Data.ToString()); + } + catch (Exception ex) + { + PUB.log.AddE("Setting Save Error:" + ex.Message); + UTIL.MsgE("Error\n" + ex.Message + "\n\nPlease try again"); + } + + //PUB.flag.set(eVarBool.TestRun, btLoaderDetect.BackColor == Color.Lime); + DialogResult = DialogResult.OK; + } + + + private void button6_Click(object sender, EventArgs e) + { + dummySetting.Disable_Buzzer = !dummySetting.Disable_Buzzer; + btBuz.BackColor = dummySetting.Disable_Buzzer ? Color.Tomato : Color.Lime; + } + + + + private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + + private void btTWLamp_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_TowerLamp = !dummySetting.Disable_TowerLamp; + but.BackColor = dummySetting.Disable_TowerLamp ? Color.Tomato : Color.Lime; + } + + + + private void button2_Click_2(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_RoomLight = !dummySetting.Disable_RoomLight; + but.BackColor = dummySetting.Disable_RoomLight == true ? Color.Tomato : Color.Lime; + } + + + + private void btLeftVac_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PLVac = !dummySetting.Disable_PLVac; + but.BackColor = dummySetting.Disable_PLVac ? Color.Tomato : Color.Lime; + } + + private void btRightVac_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PRVac = !dummySetting.Disable_PRVac; + but.BackColor = dummySetting.Disable_PRVac ? Color.Tomato : Color.Lime; + } + + private void btPickerVac_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PKVac = !dummySetting.Disable_PKVac; + but.BackColor = dummySetting.Disable_PKVac ? Color.Tomato : Color.Lime; + } + + private void btPort0_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PortL = !dummySetting.Disable_PortL; + but.BackColor = dummySetting.Disable_PortL ? Color.Tomato : Color.Lime; + } + + private void btPort1_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PortC = !dummySetting.Disable_PortC; + but.BackColor = dummySetting.Disable_PortC ? Color.Tomato : Color.Lime; + } + + private void btPort2_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PortR = !dummySetting.Disable_PortR; + but.BackColor = dummySetting.Disable_PortR ? Color.Tomato : Color.Lime; + } + + private void button4_Click_2(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PrinterL = !dummySetting.Disable_PrinterL; + but.BackColor = dummySetting.Disable_PrinterL ? Color.Tomato : Color.Lime; + } + + private void button3_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PrinterR = !dummySetting.Disable_PrinterR; + but.BackColor = dummySetting.Disable_PrinterR ? Color.Tomato : Color.Lime; + } + + private void button3_Click_1(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Enable_Unloader_QRValidation = !dummySetting.Enable_Unloader_QRValidation; + but.BackColor = dummySetting.Enable_Unloader_QRValidation == false ? Color.Tomato : Color.Lime; + } + + private void button6_Click_1(object sender, EventArgs e) + { + //카트감지l + var but = sender as Button; + dummySetting.Detect_CartL = !dummySetting.Detect_CartL; + but.BackColor = dummySetting.Detect_CartL == false ? Color.Tomato : Color.Lime; + } + + private void button7_Click(object sender, EventArgs e) + { + //카드감지c + var but = sender as Button; + dummySetting.Detect_CartC = !dummySetting.Detect_CartC; + but.BackColor = dummySetting.Detect_CartC == false ? Color.Tomato : Color.Lime; + } + + private void button5_Click(object sender, EventArgs e) + { + //카트감지r + var but = sender as Button; + dummySetting.Detect_CartR = !dummySetting.Detect_CartR; + but.BackColor = dummySetting.Detect_CartR == false ? Color.Tomato : Color.Lime; + } + + private void button7_Click_1(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Enable_Magnet0 = !dummySetting.Enable_Magnet0; + but.BackColor = dummySetting.Enable_Magnet0 == false ? Color.Tomato : Color.Lime; + } + + private void button6_Click_2(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Enable_Magnet1 = !dummySetting.Enable_Magnet1; + but.BackColor = dummySetting.Enable_Magnet1 == false ? Color.Tomato : Color.Lime; + } + + private void button5_Click_1(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Enable_Magnet2 = !dummySetting.Enable_Magnet2; + but.BackColor = dummySetting.Enable_Magnet2 == false ? Color.Tomato : Color.Lime; + } + + private void btDetectPrintL_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Detect_PrintL = !dummySetting.Detect_PrintL; + but.BackColor = dummySetting.Detect_PrintL == false ? Color.Tomato : Color.Lime; + } + + private void btDetectPrintR_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Detect_PrintR = !dummySetting.Detect_PrintR; + but.BackColor = dummySetting.Detect_PrintR == false ? Color.Tomato : Color.Lime; + } + + private void button5_Click_2(object sender, EventArgs e) + { + //기능-좌 + var but = sender as Button; + dummySetting.Disable_Left = !dummySetting.Disable_Left; + but.BackColor = dummySetting.Disable_Left == true ? Color.Tomato : Color.Lime; + } + + private void button6_Click_3(object sender, EventArgs e) + { + //기능-우 + var but = sender as Button; + dummySetting.Disable_Right = !dummySetting.Disable_Right; + but.BackColor = dummySetting.Disable_Right == true ? Color.Tomato : Color.Lime; + } + + + + private void btOpenZPL_Click(object sender, EventArgs e) + { + var fi = new System.IO.FileInfo( UTIL.MakePath("data","zpl.txt")); + if (fi.Exists == false) + { + //System.IO.File.WriteAllText(fi.FullName, Properties.Settings.Default.ZPL7, System.Text.Encoding.Default); + UTIL.MsgI("New ZPL file has been created\n" + fi.FullName); + } + using (var f = new Dialog.fZPLEditor(fi.FullName)) + f.ShowDialog(); + } + + + private void button11_Click(object sender, EventArgs e) + { + using (var f = new fSetting_ErrorMessage()) + f.ShowDialog(); + } + + private void button12_Click(object sender, EventArgs e) + { + using (var f = new fSetting_IOMessage()) + f.ShowDialog(); + } + + private void button13_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PLAir = !dummySetting.Disable_PLAir; + but.BackColor = dummySetting.Disable_PLAir ? Color.Tomato : Color.Lime; + } + + private void button14_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Disable_PRAir = !dummySetting.Disable_PRAir; + but.BackColor = dummySetting.Disable_PRAir ? Color.Tomato : Color.Lime; + } + + private void button10_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Force_JobEndBuzzer = !dummySetting.Force_JobEndBuzzer; + but.BackColor = dummySetting.Force_JobEndBuzzer ? Color.Gold : SystemColors.Control; + } + + private void button7_Click_2(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.Enable_PickerCylinder = !dummySetting.Enable_PickerCylinder; + but.BackColor = dummySetting.Enable_PickerCylinder == false ? Color.Tomato : Color.Lime; + } + + private void button8_Click(object sender, EventArgs e) + { + var but = sender as Button; + dummySetting.SystemBypass = !dummySetting.SystemBypass; + but.BackColor = dummySetting.SystemBypass ? Color.DarkBlue : Color.Transparent; + but.ForeColor = dummySetting.SystemBypass ? Color.White : Color.Black; + } + } +} + diff --git a/Handler/Project/Setting/fSetting.resx b/Handler/Project/Setting/fSetting.resx new file mode 100644 index 0000000..c6a7f1f --- /dev/null +++ b/Handler/Project/Setting/fSetting.resx @@ -0,0 +1,1919 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 117, 17 + + + 17, 17 + + + 660, 17 + + + 776, 17 + + + 208, 17 + + + 528, 17 + + + 60 + + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/Handler/Project/Setting/fSetting_ErrorMessage.Designer.cs b/Handler/Project/Setting/fSetting_ErrorMessage.Designer.cs new file mode 100644 index 0000000..0c228c6 --- /dev/null +++ b/Handler/Project/Setting/fSetting_ErrorMessage.Designer.cs @@ -0,0 +1,276 @@ +namespace Project +{ + partial class fSetting_ErrorMessage + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + this.bsError = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DataSet1(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.bsI = new System.Windows.Forms.BindingSource(this.components); + this.bsO = new System.Windows.Forms.BindingSource(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components); + this.dv1 = new arCtl.arDatagridView(); + this.idxDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.titleDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Shorts = new System.Windows.Forms.DataGridViewButtonColumn(); + this.descriptionDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewButtonColumn(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.exportCSVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + ((System.ComponentModel.ISupportInitialize)(this.bsError)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + this.toolStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bsI)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsO)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // bsError + // + this.bsError.DataMember = "ErrorDescription"; + this.bsError.DataSource = this.dataSet1; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // toolStrip1 + // + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton1, + this.toolStripButton2, + this.toolStripSeparator1, + this.toolStripButton3}); + this.toolStrip1.Location = new System.Drawing.Point(0, 822); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(1084, 39); + this.toolStrip1.TabIndex = 1; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripButton1 + // + this.toolStripButton1.Image = global::Project.Properties.Resources.icons8_repeat_40; + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(119, 36); + this.toolStripButton1.Text = "Regenerate"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // toolStripButton2 + // + this.toolStripButton2.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton2.Image = global::Project.Properties.Resources.icons8_save_close_40; + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(82, 36); + this.toolStripButton2.Text = "Save(&S)"; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click_1); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 39); + // + // toolStripButton3 + // + this.toolStripButton3.Image = global::Project.Properties.Resources.icons8_resize_horizontal_40; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(103, 36); + this.toolStripButton3.Text = "Adjust Column Width"; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // + // bsI + // + this.bsI.DataMember = "InputDescription"; + this.bsI.DataSource = this.dataSet1; + // + // bsO + // + this.bsO.DataMember = "OutputDescription"; + this.bsO.DataSource = this.dataSet1; + // + // errorProvider1 + // + this.errorProvider1.ContainerControl = this; + // + // dv1 + // + this.dv1.A_DelCurrentCell = true; + this.dv1.A_EnterToTab = true; + this.dv1.A_KoreanField = null; + this.dv1.A_UpperField = null; + this.dv1.A_ViewRownumOnHeader = false; + this.dv1.AllowUserToAddRows = false; + this.dv1.AutoGenerateColumns = false; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.idxDataGridViewTextBoxColumn, + this.titleDataGridViewTextBoxColumn, + this.Shorts, + this.descriptionDataGridViewTextBoxColumn}); + this.dv1.ContextMenuStrip = this.contextMenuStrip1; + this.dv1.DataSource = this.bsError; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle4.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv1.DefaultCellStyle = dataGridViewCellStyle4; + this.dv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv1.Location = new System.Drawing.Point(0, 0); + this.dv1.Name = "dv1"; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(1084, 822); + this.dv1.TabIndex = 0; + this.dv1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.arDatagridView1_CellContentClick); + // + // idxDataGridViewTextBoxColumn + // + this.idxDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.idxDataGridViewTextBoxColumn.DataPropertyName = "Idx"; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192))))); + this.idxDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.idxDataGridViewTextBoxColumn.HeaderText = "Code"; + this.idxDataGridViewTextBoxColumn.Name = "idxDataGridViewTextBoxColumn"; + this.idxDataGridViewTextBoxColumn.ReadOnly = true; + this.idxDataGridViewTextBoxColumn.Width = 70; + // + // titleDataGridViewTextBoxColumn + // + this.titleDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None; + this.titleDataGridViewTextBoxColumn.DataPropertyName = "Title"; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(224)))), ((int)(((byte)(192))))); + this.titleDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle2; + this.titleDataGridViewTextBoxColumn.HeaderText = "CodeName"; + this.titleDataGridViewTextBoxColumn.Name = "titleDataGridViewTextBoxColumn"; + this.titleDataGridViewTextBoxColumn.ReadOnly = true; + this.titleDataGridViewTextBoxColumn.Width = 110; + // + // Shorts + // + this.Shorts.DataPropertyName = "Shorts"; + this.Shorts.HeaderText = "Error Description"; + this.Shorts.Name = "Shorts"; + this.Shorts.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.Shorts.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.Shorts.Visible = false; + this.Shorts.Width = 94; + // + // descriptionDataGridViewTextBoxColumn + // + this.descriptionDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.descriptionDataGridViewTextBoxColumn.DataPropertyName = "Description"; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.descriptionDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle3; + this.descriptionDataGridViewTextBoxColumn.HeaderText = "Check/Action Items"; + this.descriptionDataGridViewTextBoxColumn.Name = "descriptionDataGridViewTextBoxColumn"; + this.descriptionDataGridViewTextBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.descriptionDataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.exportCSVToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(136, 26); + // + // exportCSVToolStripMenuItem + // + this.exportCSVToolStripMenuItem.Name = "exportCSVToolStripMenuItem"; + this.exportCSVToolStripMenuItem.Size = new System.Drawing.Size(135, 22); + this.exportCSVToolStripMenuItem.Text = "Export CSV"; + this.exportCSVToolStripMenuItem.Click += new System.EventHandler(this.exportCSVToolStripMenuItem_Click); + // + // fSetting_ErrorMessage + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1084, 861); + this.Controls.Add(this.dv1); + this.Controls.Add(this.toolStrip1); + this.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Name = "fSetting_ErrorMessage"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Error Message Definition"; + this.Load += new System.EventHandler(this.@__Load); + ((System.ComponentModel.ISupportInitialize)(this.bsError)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bsI)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsO)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private DataSet1 dataSet1; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ErrorProvider errorProvider1; + private arCtl.arDatagridView dv1; + private System.Windows.Forms.BindingSource bsError; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.BindingSource bsI; + private System.Windows.Forms.BindingSource bsO; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.DataGridViewTextBoxColumn idxDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn titleDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewButtonColumn Shorts; + private System.Windows.Forms.DataGridViewButtonColumn descriptionDataGridViewTextBoxColumn; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem exportCSVToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Handler/Project/Setting/fSetting_ErrorMessage.cs b/Handler/Project/Setting/fSetting_ErrorMessage.cs new file mode 100644 index 0000000..bb5aa9a --- /dev/null +++ b/Handler/Project/Setting/fSetting_ErrorMessage.cs @@ -0,0 +1,222 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class fSetting_ErrorMessage : Form + { + + public fSetting_ErrorMessage() + { + InitializeComponent(); + + + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) + this.Close(); + if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; + }; + this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; }; + this.FormClosing += FSetting_ErrorMessage_FormClosing; + } + + private void FSetting_ErrorMessage_FormClosing(object sender, FormClosingEventArgs e) + { + this.bsError.EndEdit(); + this.Validate(); + var chgs = this.dataSet1.ErrorDescription.GetChanges(); + if (chgs != null && chgs.Rows.Count > 0) + { + if (UTIL.MsgQ("There are unsaved changes. If you close now, these changes will be lost. Do you want to close the window?") != DialogResult.Yes) + { + e.Cancel = true; + return; + } + } + } + + private void __Load(object sender, EventArgs e) + { + this.dv1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + this.dv1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; + + RefreshError(); + } + + void RefreshError() + { + this.dataSet1.ErrorDescription.Clear(); + this.dataSet1.ErrorDescription.Merge(PUB.mdm.dataSet.ErrorDescription); + this.dataSet1.AcceptChanges(); + + //자료를 업데이트해준다. + var ecodelist = Enum.GetValues(typeof(eECode)); + for (short valueI = 0; valueI < 255; valueI++) + { + eECode valu = (eECode)valueI; + //short valueI = (short)valu; + + var dr = this.dataSet1.ErrorDescription.Where(t => t.Idx == valueI).FirstOrDefault(); + if (dr == null) + { + //이 값이 없는경우에는 추가하지 않는다 + if (valu.ToString() == valueI.ToString()) + { + //두 이름이 같다면 존재하는 코드 값이다 + } + else + { + var newdr = dataSet1.ErrorDescription.NewErrorDescriptionRow(); + newdr.Idx = valueI; + newdr.Title = valu.ToString(); + newdr.EndEdit(); + this.dataSet1.ErrorDescription.AddErrorDescriptionRow(newdr); + } + } + else + { + if (valu.ToString() == valueI.ToString()) + { + //해당 값이 업어졌다 + dr.Title = "n/a"; + dr.EndEdit(); + } + else + { + if (dr.Title.Equals(valu.ToString()) == false) + { + dr.Title = valu.ToString(); + dr.EndEdit(); + } + } + + } + } + this.dataSet1.AcceptChanges(); + + } + + + private void toolStripButton1_Click(object sender, EventArgs e) + { + //다시생성한다. + this.dataSet1.ErrorDescription.Clear(); + this.dataSet1.ErrorDescription.AcceptChanges(); + + var db = PUB.mdm.dataSet.ErrorDescription; + + //자료를 업데이트해준다. + var ecodelist = Enum.GetValues(typeof(eECode)); + for (short valueI = 0; valueI < 255; valueI++) + { + eECode valu = (eECode)valueI; + + //변환된 이름과 숫자이름이 같다면 enum 에 정의되지 않은 데이터이다. + if(valu.ToString().Equals(valueI.ToString())) + { + continue; + } + + //같은 이름으로 데이터를 검색 + var drT = db.Where(t => t.Title == valu.ToString()).FirstOrDefault(); + if(drT != null) + { + var newdr = dataSet1.ErrorDescription.NewErrorDescriptionRow(); + newdr.Idx = valueI; + newdr.Title = valu.ToString(); + newdr.Description = drT.Description; + this.dataSet1.ErrorDescription.AddErrorDescriptionRow(newdr); + } + else + { + //같은버호로 찾는다 + var drN = this.dataSet1.ErrorDescription.Where(t => t.Idx == valueI).FirstOrDefault(); + if(drN != null) + { + var newdr = dataSet1.ErrorDescription.NewErrorDescriptionRow(); + newdr.Idx = valueI; + newdr.Title = valu.ToString(); + newdr.Description = drN.Description; + this.dataSet1.ErrorDescription.AddErrorDescriptionRow(newdr); + } + else + { + //번호도 타이틀도 없다 + var newdr = dataSet1.ErrorDescription.NewErrorDescriptionRow(); + newdr.Idx = valueI; + newdr.Title = valu.ToString(); + newdr.EndEdit(); + this.dataSet1.ErrorDescription.AddErrorDescriptionRow(newdr); + } + } + } + this.dataSet1.AcceptChanges(); + + } + + + private void arDatagridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex < 0) return; + if (e.ColumnIndex == 2 || e.ColumnIndex == 3) + { + var dv = sender as DataGridView; + var str = string.Empty; + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + if (cell != null && cell.Value != null) str = cell.Value.ToString(); + var f = new Dialog.fMessageInput(str); + if (f.ShowDialog() == DialogResult.OK) + { + cell.Value = f.value; + } + } + } + + private void toolStripButton2_Click_1(object sender, EventArgs e) + { + this.bsError.EndEdit(); + this.Validate(); + + this.dataSet1.AcceptChanges(); + + PUB.mdm.dataSet.ErrorDescription.Clear(); + PUB.mdm.dataSet.Merge(this.dataSet1.ErrorDescription); + PUB.mdm.dataSet.AcceptChanges(); + PUB.mdm.SaveModelE(); + + UTIL.MsgI("Save completed"); + + //DialogResult = DialogResult.OK; + } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + dv1.AutoResizeColumns(); + } + + private void exportCSVToolStripMenuItem_Click(object sender, EventArgs e) + { + var sd = new SaveFileDialog(); + sd.Filter = "Tab-separated text file(*.txt)|*.txt"; + if (sd.ShowDialog() != DialogResult.OK) return; + + var sb = new System.Text.StringBuilder(); + foreach (var dr in dataSet1.ErrorDescription.Select("","idx")) + { + var desc = dr["Description"].ToString(); + desc = desc.Replace("\r", "").Replace("\n", ""); + sb.AppendLine($"{dr["Idx"].ToString()}\t{dr["Title"].ToString()}\t{desc}"); + } + System.IO.File.WriteAllText(sd.FileName, sb.ToString(), System.Text.Encoding.Default); + } + } +} + diff --git a/Handler/Project/Setting/fSetting_ErrorMessage.resx b/Handler/Project/Setting/fSetting_ErrorMessage.resx new file mode 100644 index 0000000..b1e4f68 --- /dev/null +++ b/Handler/Project/Setting/fSetting_ErrorMessage.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 346, 17 + + + 17, 17 + + + 437, 17 + + + 543, 17 + + + 611, 17 + + + 117, 17 + + + 214, 17 + + + True + + + 685, 17 + + \ No newline at end of file diff --git a/Handler/Project/Setting/fSetting_IOMessage.Designer.cs b/Handler/Project/Setting/fSetting_IOMessage.Designer.cs new file mode 100644 index 0000000..26adc3d --- /dev/null +++ b/Handler/Project/Setting/fSetting_IOMessage.Designer.cs @@ -0,0 +1,653 @@ +namespace Project +{ + partial class fSetting_IOMessage + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSetting_IOMessage)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + this.bsError = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DataSet1(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.inputDescriptionDataGridView = new arCtl.arDatagridView(); + this.bsI = new System.Windows.Forms.BindingSource(this.components); + this.bindingNavigator1 = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.panel3 = new System.Windows.Forms.Panel(); + this.outputDescriptionDataGridView = new arCtl.arDatagridView(); + this.bsO = new System.Windows.Forms.BindingSource(this.components); + this.bindingNavigator2 = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorAddNewItem1 = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorCountItem1 = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorDeleteItem1 = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveFirstItem1 = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem1 = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem1 = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem1 = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem1 = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.TerminalNo = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Invert = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewButtonColumn(); + this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.dataGridViewButtonColumn1 = new System.Windows.Forms.DataGridViewButtonColumn(); + ((System.ComponentModel.ISupportInitialize)(this.bsError)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.inputDescriptionDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsI)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).BeginInit(); + this.bindingNavigator1.SuspendLayout(); + this.panel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.outputDescriptionDataGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsO)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator2)).BeginInit(); + this.bindingNavigator2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).BeginInit(); + this.toolStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // bsError + // + this.bsError.DataMember = "ErrorDescription"; + this.bsError.DataSource = this.dataSet1; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1084, 822); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.AutoScroll = true; + this.panel2.Controls.Add(this.inputDescriptionDataGridView); + this.panel2.Controls.Add(this.bindingNavigator1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1078, 405); + this.panel2.TabIndex = 0; + // + // inputDescriptionDataGridView + // + this.inputDescriptionDataGridView.A_DelCurrentCell = true; + this.inputDescriptionDataGridView.A_EnterToTab = true; + this.inputDescriptionDataGridView.A_KoreanField = null; + this.inputDescriptionDataGridView.A_UpperField = null; + this.inputDescriptionDataGridView.A_ViewRownumOnHeader = false; + this.inputDescriptionDataGridView.AllowUserToAddRows = false; + this.inputDescriptionDataGridView.AutoGenerateColumns = false; + this.inputDescriptionDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.inputDescriptionDataGridView.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.inputDescriptionDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.inputDescriptionDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn1, + this.dataGridViewTextBoxColumn2, + this.TerminalNo, + this.Invert, + this.dataGridViewTextBoxColumn3}); + this.inputDescriptionDataGridView.DataSource = this.bsI; + this.inputDescriptionDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.inputDescriptionDataGridView.Location = new System.Drawing.Point(0, 0); + this.inputDescriptionDataGridView.Name = "inputDescriptionDataGridView"; + this.inputDescriptionDataGridView.RowTemplate.Height = 23; + this.inputDescriptionDataGridView.Size = new System.Drawing.Size(1078, 380); + this.inputDescriptionDataGridView.TabIndex = 0; + this.inputDescriptionDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.inputDescriptionDataGridView_CellContentClick); + // + // bsI + // + this.bsI.DataMember = "InputDescription"; + this.bsI.DataSource = this.dataSet1; + // + // bindingNavigator1 + // + this.bindingNavigator1.AddNewItem = this.bindingNavigatorAddNewItem; + this.bindingNavigator1.BindingSource = this.bsI; + this.bindingNavigator1.CountItem = this.bindingNavigatorCountItem; + this.bindingNavigator1.DeleteItem = this.bindingNavigatorDeleteItem; + this.bindingNavigator1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bindingNavigator1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.bindingNavigatorAddNewItem, + this.bindingNavigatorDeleteItem}); + this.bindingNavigator1.Location = new System.Drawing.Point(0, 380); + this.bindingNavigator1.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bindingNavigator1.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bindingNavigator1.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bindingNavigator1.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bindingNavigator1.Name = "bindingNavigator1"; + this.bindingNavigator1.PositionItem = this.bindingNavigatorPositionItem; + this.bindingNavigator1.Size = new System.Drawing.Size(1078, 25); + this.bindingNavigator1.TabIndex = 1; + this.bindingNavigator1.Text = "bindingNavigator1"; + // + // bindingNavigatorAddNewItem + // + this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image"))); + this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"; + this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorAddNewItem.Text = "Add New"; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total item count"; + // + // bindingNavigatorDeleteItem + // + this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image"))); + this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"; + this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorDeleteItem.Text = "Delete"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F); + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // panel3 + // + this.panel3.AutoScroll = true; + this.panel3.Controls.Add(this.outputDescriptionDataGridView); + this.panel3.Controls.Add(this.bindingNavigator2); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(3, 414); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1078, 405); + this.panel3.TabIndex = 0; + // + // outputDescriptionDataGridView + // + this.outputDescriptionDataGridView.A_DelCurrentCell = true; + this.outputDescriptionDataGridView.A_EnterToTab = true; + this.outputDescriptionDataGridView.A_KoreanField = null; + this.outputDescriptionDataGridView.A_UpperField = null; + this.outputDescriptionDataGridView.A_ViewRownumOnHeader = false; + this.outputDescriptionDataGridView.AllowUserToAddRows = false; + this.outputDescriptionDataGridView.AutoGenerateColumns = false; + this.outputDescriptionDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.outputDescriptionDataGridView.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(128))))); + this.outputDescriptionDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.outputDescriptionDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn4, + this.dataGridViewTextBoxColumn5, + this.dataGridViewTextBoxColumn6, + this.dataGridViewCheckBoxColumn1, + this.dataGridViewButtonColumn1}); + this.outputDescriptionDataGridView.DataSource = this.bsO; + this.outputDescriptionDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.outputDescriptionDataGridView.Location = new System.Drawing.Point(0, 0); + this.outputDescriptionDataGridView.Name = "outputDescriptionDataGridView"; + this.outputDescriptionDataGridView.RowTemplate.Height = 23; + this.outputDescriptionDataGridView.Size = new System.Drawing.Size(1078, 380); + this.outputDescriptionDataGridView.TabIndex = 0; + this.outputDescriptionDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.inputDescriptionDataGridView_CellContentClick); + // + // bsO + // + this.bsO.DataMember = "OutputDescription"; + this.bsO.DataSource = this.dataSet1; + // + // bindingNavigator2 + // + this.bindingNavigator2.AddNewItem = this.bindingNavigatorAddNewItem1; + this.bindingNavigator2.BindingSource = this.bsO; + this.bindingNavigator2.CountItem = this.bindingNavigatorCountItem1; + this.bindingNavigator2.DeleteItem = this.bindingNavigatorDeleteItem1; + this.bindingNavigator2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bindingNavigator2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem1, + this.bindingNavigatorMovePreviousItem1, + this.bindingNavigatorSeparator3, + this.bindingNavigatorPositionItem1, + this.bindingNavigatorCountItem1, + this.bindingNavigatorSeparator4, + this.bindingNavigatorMoveNextItem1, + this.bindingNavigatorMoveLastItem1, + this.bindingNavigatorSeparator5, + this.bindingNavigatorAddNewItem1, + this.bindingNavigatorDeleteItem1}); + this.bindingNavigator2.Location = new System.Drawing.Point(0, 380); + this.bindingNavigator2.MoveFirstItem = this.bindingNavigatorMoveFirstItem1; + this.bindingNavigator2.MoveLastItem = this.bindingNavigatorMoveLastItem1; + this.bindingNavigator2.MoveNextItem = this.bindingNavigatorMoveNextItem1; + this.bindingNavigator2.MovePreviousItem = this.bindingNavigatorMovePreviousItem1; + this.bindingNavigator2.Name = "bindingNavigator2"; + this.bindingNavigator2.PositionItem = this.bindingNavigatorPositionItem1; + this.bindingNavigator2.Size = new System.Drawing.Size(1078, 25); + this.bindingNavigator2.TabIndex = 1; + this.bindingNavigator2.Text = "bindingNavigator2"; + // + // bindingNavigatorAddNewItem1 + // + this.bindingNavigatorAddNewItem1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorAddNewItem1.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem1.Image"))); + this.bindingNavigatorAddNewItem1.Name = "bindingNavigatorAddNewItem1"; + this.bindingNavigatorAddNewItem1.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem1.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorAddNewItem1.Text = "Add New"; + // + // bindingNavigatorCountItem1 + // + this.bindingNavigatorCountItem1.Name = "bindingNavigatorCountItem1"; + this.bindingNavigatorCountItem1.Size = new System.Drawing.Size(27, 22); + this.bindingNavigatorCountItem1.Text = "/{0}"; + this.bindingNavigatorCountItem1.ToolTipText = "Total item count"; + // + // bindingNavigatorDeleteItem1 + // + this.bindingNavigatorDeleteItem1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorDeleteItem1.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem1.Image"))); + this.bindingNavigatorDeleteItem1.Name = "bindingNavigatorDeleteItem1"; + this.bindingNavigatorDeleteItem1.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem1.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorDeleteItem1.Text = "Delete"; + // + // bindingNavigatorMoveFirstItem1 + // + this.bindingNavigatorMoveFirstItem1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem1.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem1.Image"))); + this.bindingNavigatorMoveFirstItem1.Name = "bindingNavigatorMoveFirstItem1"; + this.bindingNavigatorMoveFirstItem1.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem1.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem1.Text = "Move first"; + // + // bindingNavigatorMovePreviousItem1 + // + this.bindingNavigatorMovePreviousItem1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem1.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem1.Image"))); + this.bindingNavigatorMovePreviousItem1.Name = "bindingNavigatorMovePreviousItem1"; + this.bindingNavigatorMovePreviousItem1.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem1.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem1.Text = "Move previous"; + // + // bindingNavigatorSeparator3 + // + this.bindingNavigatorSeparator3.Name = "bindingNavigatorSeparator3"; + this.bindingNavigatorSeparator3.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem1 + // + this.bindingNavigatorPositionItem1.AccessibleName = "Position"; + this.bindingNavigatorPositionItem1.AutoSize = false; + this.bindingNavigatorPositionItem1.Font = new System.Drawing.Font("맑은 고딕", 9F); + this.bindingNavigatorPositionItem1.Name = "bindingNavigatorPositionItem1"; + this.bindingNavigatorPositionItem1.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem1.Text = "0"; + this.bindingNavigatorPositionItem1.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator4 + // + this.bindingNavigatorSeparator4.Name = "bindingNavigatorSeparator4"; + this.bindingNavigatorSeparator4.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem1 + // + this.bindingNavigatorMoveNextItem1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem1.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem1.Image"))); + this.bindingNavigatorMoveNextItem1.Name = "bindingNavigatorMoveNextItem1"; + this.bindingNavigatorMoveNextItem1.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem1.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem1.Text = "Move next"; + // + // bindingNavigatorMoveLastItem1 + // + this.bindingNavigatorMoveLastItem1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem1.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem1.Image"))); + this.bindingNavigatorMoveLastItem1.Name = "bindingNavigatorMoveLastItem1"; + this.bindingNavigatorMoveLastItem1.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem1.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem1.Text = "Move last"; + // + // bindingNavigatorSeparator5 + // + this.bindingNavigatorSeparator5.Name = "bindingNavigatorSeparator5"; + this.bindingNavigatorSeparator5.Size = new System.Drawing.Size(6, 25); + // + // errorProvider1 + // + this.errorProvider1.ContainerControl = this; + // + // toolStrip1 + // + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton1, + this.toolStripButton3}); + this.toolStrip1.Location = new System.Drawing.Point(0, 822); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(1084, 39); + this.toolStrip1.TabIndex = 3; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripButton1 + // + this.toolStripButton1.Image = global::Project.Properties.Resources.icons8_repeat_40; + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(119, 36); + this.toolStripButton1.Text = "Reload"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click_1); + // + // toolStripButton3 + // + this.toolStripButton3.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton3.Image = global::Project.Properties.Resources.icons8_save_close_40; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(82, 36); + this.toolStripButton3.Text = "Save(&S)"; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click_1); + // + // dataGridViewTextBoxColumn1 + // + this.dataGridViewTextBoxColumn1.DataPropertyName = "Idx"; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle1; + this.dataGridViewTextBoxColumn1.HeaderText = "No"; + this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; + this.dataGridViewTextBoxColumn1.Width = 54; + // + // dataGridViewTextBoxColumn2 + // + this.dataGridViewTextBoxColumn2.DataPropertyName = "Title"; + this.dataGridViewTextBoxColumn2.HeaderText = "Pin Name"; + this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; + this.dataGridViewTextBoxColumn2.Width = 84; + // + // TerminalNo + // + this.TerminalNo.DataPropertyName = "TerminalNo"; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.TerminalNo.DefaultCellStyle = dataGridViewCellStyle2; + this.TerminalNo.HeaderText = "Terminal Number"; + this.TerminalNo.Name = "TerminalNo"; + this.TerminalNo.Width = 109; + // + // Invert + // + this.Invert.DataPropertyName = "Invert"; + this.Invert.HeaderText = "Invert"; + this.Invert.Name = "Invert"; + this.Invert.Width = 53; + // + // dataGridViewTextBoxColumn3 + // + this.dataGridViewTextBoxColumn3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn3.DataPropertyName = "Description"; + this.dataGridViewTextBoxColumn3.HeaderText = "Pin Description"; + this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; + this.dataGridViewTextBoxColumn3.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewTextBoxColumn3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // dataGridViewTextBoxColumn4 + // + this.dataGridViewTextBoxColumn4.DataPropertyName = "Idx"; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.dataGridViewTextBoxColumn4.DefaultCellStyle = dataGridViewCellStyle3; + this.dataGridViewTextBoxColumn4.HeaderText = "No"; + this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4"; + this.dataGridViewTextBoxColumn4.Width = 54; + // + // dataGridViewTextBoxColumn5 + // + this.dataGridViewTextBoxColumn5.DataPropertyName = "Title"; + this.dataGridViewTextBoxColumn5.HeaderText = "Pin Name"; + this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5"; + this.dataGridViewTextBoxColumn5.Width = 84; + // + // dataGridViewTextBoxColumn6 + // + this.dataGridViewTextBoxColumn6.DataPropertyName = "TerminalNo"; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.dataGridViewTextBoxColumn6.DefaultCellStyle = dataGridViewCellStyle4; + this.dataGridViewTextBoxColumn6.HeaderText = "Terminal Number"; + this.dataGridViewTextBoxColumn6.Name = "dataGridViewTextBoxColumn6"; + this.dataGridViewTextBoxColumn6.Width = 109; + // + // dataGridViewCheckBoxColumn1 + // + this.dataGridViewCheckBoxColumn1.DataPropertyName = "Invert"; + this.dataGridViewCheckBoxColumn1.HeaderText = "Invert"; + this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1"; + this.dataGridViewCheckBoxColumn1.Width = 53; + // + // dataGridViewButtonColumn1 + // + this.dataGridViewButtonColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewButtonColumn1.DataPropertyName = "Description"; + this.dataGridViewButtonColumn1.HeaderText = "Pin Description"; + this.dataGridViewButtonColumn1.Name = "dataGridViewButtonColumn1"; + this.dataGridViewButtonColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewButtonColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // fSetting_IOMessage + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1084, 861); + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.toolStrip1); + this.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Name = "fSetting_IOMessage"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "I/O Description Definition"; + this.Load += new System.EventHandler(this.@__Load); + ((System.ComponentModel.ISupportInitialize)(this.bsError)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.inputDescriptionDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsI)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).EndInit(); + this.bindingNavigator1.ResumeLayout(false); + this.bindingNavigator1.PerformLayout(); + this.panel3.ResumeLayout(false); + this.panel3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.outputDescriptionDataGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsO)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator2)).EndInit(); + this.bindingNavigator2.ResumeLayout(false); + this.bindingNavigator2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).EndInit(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private DataSet1 dataSet1; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ErrorProvider errorProvider1; + private System.Windows.Forms.BindingSource bsError; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.BindingSource bsI; + private System.Windows.Forms.BindingSource bsO; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private arCtl.arDatagridView inputDescriptionDataGridView; + private System.Windows.Forms.BindingNavigator bindingNavigator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private arCtl.arDatagridView outputDescriptionDataGridView; + private System.Windows.Forms.BindingNavigator bindingNavigator2; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem1; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem1; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem1; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator3; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem1; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator4; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem1; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator5; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn TerminalNo; + private System.Windows.Forms.DataGridViewCheckBoxColumn Invert; + private System.Windows.Forms.DataGridViewButtonColumn dataGridViewTextBoxColumn3; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6; + private System.Windows.Forms.DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1; + private System.Windows.Forms.DataGridViewButtonColumn dataGridViewButtonColumn1; + } +} \ No newline at end of file diff --git a/Handler/Project/Setting/fSetting_IOMessage.cs b/Handler/Project/Setting/fSetting_IOMessage.cs new file mode 100644 index 0000000..4d9b54e --- /dev/null +++ b/Handler/Project/Setting/fSetting_IOMessage.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project +{ + public partial class fSetting_IOMessage : Form + { + AR.CommonSetting dummySetting; //설정을 임시로 저장하고 있다가 완료시에 덮어준다. + + public fSetting_IOMessage() + { + InitializeComponent(); + + //setting + dummySetting = new AR.CommonSetting(); + AR.SETTING.Data.CopyTo(dummySetting); + //COMM.SETTING.Data.CopyTo(dummySetting); + + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) + this.Close(); + if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; + }; + this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; }; + this.FormClosing += FSetting_IOMessage_FormClosing; + this.bsI.Sort = "idx"; + this.bsO.Sort = "idx"; + } + + private void FSetting_IOMessage_FormClosing(object sender, FormClosingEventArgs e) + { + this.bsI.EndEdit(); + this.bsO.EndEdit(); + this.Validate(); + + var chgs1 = this.dataSet1.InputDescription.GetChanges(); + var chgs2 = this.dataSet1.ErrorDescription.GetChanges(); + if ((chgs1 != null && chgs1.Rows.Count > 0) || chgs2 != null && chgs2.Rows.Count > 0) + { + if (UTIL.MsgQ("There are unsaved changes. If you close now, these changes will be lost. Do you want to close the window?") != DialogResult.Yes) + { + e.Cancel = true; + return; + } + } + } + + private void __Load(object sender, EventArgs e) + { + RefreshIn(); + RefreshOut(); + } + + void RefreshIn() + { + this.dataSet1.InputDescription.Clear(); + this.dataSet1.InputDescription.Merge(PUB.mdm.dataSet.InputDescription); + this.dataSet1.InputDescription.AcceptChanges(); + + //자료를 업데이트해준다. + var ecodelist = Enum.GetValues(typeof(eDIPin)); + foreach (var item in ecodelist) + { + var pin = (eDIPin)item; + var idx = (int)pin; + var name = ((eDIName)idx).ToString(); + if (Enum.IsDefined(typeof(eDIName), (byte)idx) == false) + name = string.Empty; + + var title = $"[X{idx:X2}] {name}"; + var dr = this.dataSet1.InputDescription.Where(t => t.Idx == idx).FirstOrDefault(); + if (dr == null) + { + var newdr = dataSet1.InputDescription.NewInputDescriptionRow(); + newdr.Name = pin.ToString(); + newdr.Idx = (short)idx; + newdr.Title = title; + newdr.EndEdit(); + this.dataSet1.InputDescription.AddInputDescriptionRow(newdr); + } + else + { + if (dr.Title.Equals(title) == false) + { + dr.Title = title; + dr.EndEdit(); + } + } + } + this.dataSet1.InputDescription.AcceptChanges(); + } + + void RefreshOut() + { + this.dataSet1.OutputDescription.Clear(); + this.dataSet1.OutputDescription.Merge(PUB.mdm.dataSet.OutputDescription); + this.dataSet1.OutputDescription.AcceptChanges(); + + //자료를 업데이트해준다. + var ecodelist = Enum.GetValues(typeof(eDOPin)); + foreach (var item in ecodelist) + { + var pin = (eDOPin)item; + var idx = (int)pin; + var name = ((eDOName)idx).ToString(); + if (Enum.IsDefined(typeof(eDOName), (byte)idx) == false) + name = string.Empty; + + var title = $"[Y{idx:X2}] {name}"; + + var dr = this.dataSet1.OutputDescription.Where(t => t.Idx == idx).FirstOrDefault(); + if (dr == null) + { + var newdr = dataSet1.OutputDescription.NewOutputDescriptionRow(); + newdr.Name = pin.ToString(); + newdr.Idx = (short)idx; + newdr.Title = title; + newdr.EndEdit(); + this.dataSet1.OutputDescription.AddOutputDescriptionRow(newdr); + } + else + { + if (dr.Title.Equals(title) == false) + { + dr.Title = title; + dr.EndEdit(); + } + } + } + this.dataSet1.OutputDescription.AcceptChanges(); + } + + private void toolStripButton3_Click_1(object sender, EventArgs e) + { + this.bsI.EndEdit(); + this.bsO.EndEdit(); + this.Validate(); + + this.dataSet1.AcceptChanges(); + + PUB.mdm.dataSet.InputDescription.Clear(); + PUB.mdm.dataSet.Merge(this.dataSet1.InputDescription); + PUB.mdm.dataSet.InputDescription.AcceptChanges(); + PUB.mdm.SaveModelI(); + + PUB.mdm.dataSet.OutputDescription.Clear(); + PUB.mdm.dataSet.Merge(this.dataSet1.OutputDescription); + PUB.mdm.dataSet.OutputDescription.AcceptChanges(); + PUB.mdm.SaveModelO(); + + //핀설정적용 230831 + DIO.Pin.SetOutputData(PUB.mdm.dataSet.OutputDescription); + DIO.Pin.SetInputData(PUB.mdm.dataSet.InputDescription); + } + + private void toolStripButton1_Click_1(object sender, EventArgs e) + { + RefreshIn(); + RefreshOut(); + } + + private void inputDescriptionDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + if (e.ColumnIndex ==4 ) + { + var dv = sender as DataGridView; + var str = string.Empty; + var cell = dv.Rows[e.RowIndex].Cells[e.ColumnIndex]; + if (cell != null && cell.Value != null) str = cell.Value.ToString(); + var f = new Dialog.fMessageInput(str); + if (f.ShowDialog() == DialogResult.OK) + { + cell.Value = f.value; + } + } + } + } +} + diff --git a/Handler/Project/Setting/fSetting_IOMessage.resx b/Handler/Project/Setting/fSetting_IOMessage.resx new file mode 100644 index 0000000..9bc3bab --- /dev/null +++ b/Handler/Project/Setting/fSetting_IOMessage.resx @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 346, 17 + + + 17, 17 + + + True + + + True + + + 543, 17 + + + 1000, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + True + + + True + + + 767, 17 + + + 17, 56 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + 117, 17 + + + 214, 17 + + + 173, 56 + + \ No newline at end of file diff --git a/Handler/Project/Setting/fSystem_MotParameter.Designer.cs b/Handler/Project/Setting/fSystem_MotParameter.Designer.cs new file mode 100644 index 0000000..7268061 --- /dev/null +++ b/Handler/Project/Setting/fSystem_MotParameter.Designer.cs @@ -0,0 +1,429 @@ +namespace Project.Dialog +{ + partial class fSystem_MotParameter + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSystem_MotParameter)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + this.dv1 = new System.Windows.Forms.DataGridView(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DSSetup(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.bindingNavigator1 = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.dvc_idx = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_title = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.enableDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.useOriginDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.useEStopDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.homeHighDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.homeLowDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.homeAccDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.homeDccDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MaxSpeed = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MaxAcc = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.sWLimitPDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.InpositionAccr = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.btSet = new System.Windows.Forms.DataGridViewButtonColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).BeginInit(); + this.bindingNavigator1.SuspendLayout(); + this.SuspendLayout(); + // + // dv1 + // + this.dv1.AutoGenerateColumns = false; + this.dv1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dv1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dvc_idx, + this.dvc_title, + this.enableDataGridViewCheckBoxColumn, + this.useOriginDataGridViewCheckBoxColumn, + this.useEStopDataGridViewCheckBoxColumn, + this.homeHighDataGridViewTextBoxColumn, + this.homeLowDataGridViewTextBoxColumn, + this.homeAccDataGridViewTextBoxColumn, + this.homeDccDataGridViewTextBoxColumn, + this.MaxSpeed, + this.MaxAcc, + this.sWLimitPDataGridViewTextBoxColumn, + this.InpositionAccr, + this.btSet}); + this.dv1.DataSource = this.bs; + dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle8.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv1.DefaultCellStyle = dataGridViewCellStyle8; + this.dv1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv1.Location = new System.Drawing.Point(0, 0); + this.dv1.Name = "dv1"; + this.dv1.RowTemplate.Height = 23; + this.dv1.Size = new System.Drawing.Size(1039, 584); + this.dv1.TabIndex = 2; + this.dv1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.motionParamDataGridView_CellContentClick); + this.dv1.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.motionParamDataGridView_DataError); + // + // bs + // + this.bs.DataMember = "MotionParam"; + this.bs.DataSource = this.dataSet1; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(61, 4); + // + // bindingNavigator1 + // + this.bindingNavigator1.AddNewItem = this.bindingNavigatorAddNewItem; + this.bindingNavigator1.BindingSource = this.bs; + this.bindingNavigator1.CountItem = this.bindingNavigatorCountItem; + this.bindingNavigator1.DeleteItem = this.bindingNavigatorDeleteItem; + this.bindingNavigator1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bindingNavigator1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.bindingNavigatorAddNewItem, + this.bindingNavigatorDeleteItem, + this.toolStripButton1}); + this.bindingNavigator1.Location = new System.Drawing.Point(0, 559); + this.bindingNavigator1.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bindingNavigator1.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bindingNavigator1.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bindingNavigator1.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bindingNavigator1.Name = "bindingNavigator1"; + this.bindingNavigator1.PositionItem = this.bindingNavigatorPositionItem; + this.bindingNavigator1.Size = new System.Drawing.Size(1039, 25); + this.bindingNavigator1.TabIndex = 4; + this.bindingNavigator1.Text = "bindingNavigator1"; + // + // bindingNavigatorAddNewItem + // + this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image"))); + this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"; + this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorAddNewItem.Text = "Add New"; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(26, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total item count"; + // + // bindingNavigatorDeleteItem + // + this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image"))); + this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"; + this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorDeleteItem.Text = "Delete"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Font = new System.Drawing.Font("맑은 고딕", 9F); + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton1 + // + this.toolStripButton1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(51, 22); + this.toolStripButton1.Text = "Save"; + this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // dvc_idx + // + this.dvc_idx.DataPropertyName = "idx"; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.dvc_idx.DefaultCellStyle = dataGridViewCellStyle1; + this.dvc_idx.HeaderText = "Axis"; + this.dvc_idx.Name = "dvc_idx"; + this.dvc_idx.Width = 55; + // + // dvc_title + // + this.dvc_title.DataPropertyName = "Title"; + this.dvc_title.HeaderText = "Name"; + this.dvc_title.Name = "dvc_title"; + this.dvc_title.Width = 64; + // + // enableDataGridViewCheckBoxColumn + // + this.enableDataGridViewCheckBoxColumn.DataPropertyName = "Enable"; + this.enableDataGridViewCheckBoxColumn.HeaderText = "Enable"; + this.enableDataGridViewCheckBoxColumn.Name = "enableDataGridViewCheckBoxColumn"; + this.enableDataGridViewCheckBoxColumn.Width = 50; + // + // useOriginDataGridViewCheckBoxColumn + // + this.useOriginDataGridViewCheckBoxColumn.DataPropertyName = "UseOrigin"; + this.useOriginDataGridViewCheckBoxColumn.HeaderText = "Origin"; + this.useOriginDataGridViewCheckBoxColumn.Name = "useOriginDataGridViewCheckBoxColumn"; + this.useOriginDataGridViewCheckBoxColumn.Width = 44; + // + // useEStopDataGridViewCheckBoxColumn + // + this.useEStopDataGridViewCheckBoxColumn.DataPropertyName = "UseEStop"; + this.useEStopDataGridViewCheckBoxColumn.HeaderText = "Emg"; + this.useEStopDataGridViewCheckBoxColumn.Name = "useEStopDataGridViewCheckBoxColumn"; + this.useEStopDataGridViewCheckBoxColumn.Width = 37; + // + // homeHighDataGridViewTextBoxColumn + // + this.homeHighDataGridViewTextBoxColumn.DataPropertyName = "HomeHigh"; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.homeHighDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle2; + this.homeHighDataGridViewTextBoxColumn.HeaderText = "Home (Hig)"; + this.homeHighDataGridViewTextBoxColumn.Name = "homeHighDataGridViewTextBoxColumn"; + this.homeHighDataGridViewTextBoxColumn.Width = 95; + // + // homeLowDataGridViewTextBoxColumn + // + this.homeLowDataGridViewTextBoxColumn.DataPropertyName = "HomeLow"; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.homeLowDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle3; + this.homeLowDataGridViewTextBoxColumn.HeaderText = "Home (Low)"; + this.homeLowDataGridViewTextBoxColumn.Name = "homeLowDataGridViewTextBoxColumn"; + this.homeLowDataGridViewTextBoxColumn.Width = 93; + // + // homeAccDataGridViewTextBoxColumn + // + this.homeAccDataGridViewTextBoxColumn.DataPropertyName = "HomeAcc"; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.homeAccDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle4; + this.homeAccDataGridViewTextBoxColumn.HeaderText = "Home (Acc)"; + this.homeAccDataGridViewTextBoxColumn.Name = "homeAccDataGridViewTextBoxColumn"; + this.homeAccDataGridViewTextBoxColumn.Width = 91; + // + // homeDccDataGridViewTextBoxColumn + // + this.homeDccDataGridViewTextBoxColumn.DataPropertyName = "HomeDcc"; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.homeDccDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle5; + this.homeDccDataGridViewTextBoxColumn.HeaderText = "Home (Dec)"; + this.homeDccDataGridViewTextBoxColumn.Name = "homeDccDataGridViewTextBoxColumn"; + this.homeDccDataGridViewTextBoxColumn.Width = 91; + // + // MaxSpeed + // + this.MaxSpeed.DataPropertyName = "MaxSpeed"; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))); + this.MaxSpeed.DefaultCellStyle = dataGridViewCellStyle6; + this.MaxSpeed.HeaderText = "Max Speed"; + this.MaxSpeed.Name = "MaxSpeed"; + this.MaxSpeed.Width = 87; + // + // MaxAcc + // + this.MaxAcc.DataPropertyName = "MaxAcc"; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))); + this.MaxAcc.DefaultCellStyle = dataGridViewCellStyle7; + this.MaxAcc.HeaderText = "Max Acc"; + this.MaxAcc.Name = "MaxAcc"; + this.MaxAcc.Width = 55; + // + // sWLimitPDataGridViewTextBoxColumn + // + this.sWLimitPDataGridViewTextBoxColumn.DataPropertyName = "SWLimitP"; + this.sWLimitPDataGridViewTextBoxColumn.HeaderText = "S/W Limit"; + this.sWLimitPDataGridViewTextBoxColumn.Name = "sWLimitPDataGridViewTextBoxColumn"; + this.sWLimitPDataGridViewTextBoxColumn.Width = 78; + // + // InpositionAccr + // + this.InpositionAccr.DataPropertyName = "InpositionAccr"; + this.InpositionAccr.HeaderText = "Pos accr"; + this.InpositionAccr.Name = "InpositionAccr"; + this.InpositionAccr.Width = 75; + // + // btSet + // + this.btSet.HeaderText = "Set"; + this.btSet.Name = "btSet"; + this.btSet.Width = 29; + // + // fSystem_MotParameter + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1039, 584); + this.Controls.Add(this.bindingNavigator1); + this.Controls.Add(this.dv1); + this.KeyPreview = true; + this.Name = "fSystem_MotParameter"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Motion Parameter"; + this.Load += new System.EventHandler(this.SystemParameter_Load); + ((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingNavigator1)).EndInit(); + this.bindingNavigator1.ResumeLayout(false); + this.bindingNavigator1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private DSSetup dataSet1; + private System.Windows.Forms.BindingSource bs; + private System.Windows.Forms.DataGridView dv1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.BindingNavigator bindingNavigator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_idx; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_title; + private System.Windows.Forms.DataGridViewCheckBoxColumn enableDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn useOriginDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn useEStopDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn homeHighDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn homeLowDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn homeAccDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn homeDccDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn MaxSpeed; + private System.Windows.Forms.DataGridViewTextBoxColumn MaxAcc; + private System.Windows.Forms.DataGridViewTextBoxColumn sWLimitPDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn InpositionAccr; + private System.Windows.Forms.DataGridViewButtonColumn btSet; + } +} \ No newline at end of file diff --git a/Handler/Project/Setting/fSystem_MotParameter.cs b/Handler/Project/Setting/fSystem_MotParameter.cs new file mode 100644 index 0000000..e80ad84 --- /dev/null +++ b/Handler/Project/Setting/fSystem_MotParameter.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fSystem_MotParameter : Form + { + public class cmdevents : EventArgs + { + public string cmd { get; set; } + public string data { get; set; } + public cmdevents(string cmd,string data) + { + this.cmd = cmd; + this.data = data; + } + } + public EventHandler Commands; + public fSystem_MotParameter() + { + InitializeComponent(); + this.KeyDown += SystemParameter_KeyDown; + this.dataSet1.MotionParam.Clear(); + this.dataSet1.MotionParam.Merge(PUB.system_mot.dt); + this.dataSet1.MotionParam.AcceptChanges(); + this.dataSet1.MotionParam.TableNewRow += MotionParam_TableNewRow; + } + + private void MotionParam_TableNewRow(object sender, DataTableNewRowEventArgs e) + { + e.Row["Enable"] = false; + if (this.dataSet1.MotionParam.Rows.Count < 1) e.Row["idx"] = 0; + else e.Row["idx"] = this.dataSet1.MotionParam.Rows.Count; + e.Row["UseOrigin"] = true; + e.Row["UseEStop"] = true; + e.Row["HomeAcc"] = 100; + e.Row["HomeDcc"] = 100; + e.Row["HomeHigh"] = 50; + e.Row["HomeLow"] = 30; + e.Row["SWLimitP"] = 0; + e.Row["InpositionAccr"] = 0.1f; + } + + void SystemParameter_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) this.Close(); + } + + private void SystemParameter_Load(object sender, EventArgs e) + { + this.dv1.AutoResizeColumns(); + } + + private void toolStripButton1_Click(object sender, EventArgs e) + { + this.Validate(); + this.bs.EndEdit(); + + PUB.system_mot.Save(this.dataSet1.MotionParam); + + //소스파일을 변경 해준다. + //var sourcePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Don't change it"); + //var di = new System.IO.DirectoryInfo(sourcePath); + //if (di.Exists) + //{ + // var fiEnum = new System.IO.FileInfo(di.FullName + "\\Class\\EnumData.cs"); + // if (fiEnum.Exists) + // { + // var buffer = System.IO.File.ReadAllText(fiEnum.FullName, System.Text.Encoding.UTF8); + // var axis_start_tag = "public enum eaxis"; + // var axis_sta = buffer.ToLower().IndexOf(axis_start_tag); + // var axis_end = buffer.IndexOf("}", axis_sta); + + // var buffer_axis = buffer.Substring(axis_sta, axis_end - axis_sta); + + // //값을 생성해준다. + // var sb_axis = new System.Text.StringBuilder(); + // sb_axis.AppendLine("public enum eAxis : byte {"); + // foreach (DSSetup.MotionParamRow dr in this.dataSet1.MotionParam) + // { + // if (dr.Enable == false) continue; + // if (string.IsNullOrEmpty(dr.Title)) continue; + // sb_axis.AppendLine($"\t\t{dr.Title} = {dr.idx},"); + // } + // sb_axis.AppendLine("\t}"); + // var buffer_head = buffer.Substring(0, axis_sta); + // var buffer_tail = buffer.Substring(axis_end + 1); + // var newbuffer = buffer_head + sb_axis.ToString() + buffer_tail; + // System.IO.File.WriteAllText(fiEnum.FullName, newbuffer, System.Text.Encoding.UTF8); + // } + //} + + DialogResult = System.Windows.Forms.DialogResult.OK; + this.Close(); + } + + private void motionParamDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + var idx = this.dv1.Rows[e.RowIndex].Cells["dvc_idx"].Value; + if (idx == null) return; + + if (e.ColumnIndex != 13) return; + + var val = short.Parse(idx.ToString()); + + PUB.mot.ShowParameter(val); + } + + private void motionParamDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + } +} diff --git a/Handler/Project/Setting/fSystem_MotParameter.resx b/Handler/Project/Setting/fSystem_MotParameter.resx new file mode 100644 index 0000000..d33a6e1 --- /dev/null +++ b/Handler/Project/Setting/fSystem_MotParameter.resx @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + 117, 17 + + + 17, 17 + + + 181, 17 + + + 339, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE1SURBVDhPY/hPIQAbcOn57//T915BwW1rjoFx/oJz//N6 + VqHgsNxeMA03YN3lp/9vv4YYhAtsuQ6h55/9A8aBidVgPtiADZcegzWDFN1/9///qy8IDOKDcPfu1/9/ + /vn/v3rt/f9TD38BuwJuwIrT9wka0L79BdiAkuW3MA0A+fnog///V12GKAZ5BxcGGQByDYoXYAbA/Aey + AYRBCkE2N256AnY6SDMoUEF8FANAoQ0zAFkzCCNrhhkAor3CczENwGYzuu1JM8+BaQwDQAGITzOyASDs + 4huPMAAkATIA3c/YNIdNPAHGKAaAUhUoBghphhng0rTnv71bGKoBoADE5mR0zVgNACUK9BgAGYbudJBG + GNY0dEYYAMsgMAyKYxAGhTQIg/wLwiBbQRikGSUdkA/+/wcAgXJEf04PwQkAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/Handler/Project/Setting/fSystem_Setting.Designer.cs b/Handler/Project/Setting/fSystem_Setting.Designer.cs new file mode 100644 index 0000000..5f335a1 --- /dev/null +++ b/Handler/Project/Setting/fSystem_Setting.Designer.cs @@ -0,0 +1,77 @@ +namespace Project.Dialog +{ + partial class fSystem_Setting + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(0, 564); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(527, 51); + this.button1.TabIndex = 0; + this.button1.Text = "Save"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // propertyGrid1 + // + this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill; + this.propertyGrid1.Location = new System.Drawing.Point(0, 0); + this.propertyGrid1.Name = "propertyGrid1"; + this.propertyGrid1.Size = new System.Drawing.Size(527, 564); + this.propertyGrid1.TabIndex = 1; + // + // fSystem_Setting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(527, 615); + this.Controls.Add(this.propertyGrid1); + this.Controls.Add(this.button1); + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSystem_Setting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "SystemParameter"; + this.Load += new System.EventHandler(this.SystemParameter_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.PropertyGrid propertyGrid1; + } +} \ No newline at end of file diff --git a/Handler/Project/Setting/fSystem_Setting.cs b/Handler/Project/Setting/fSystem_Setting.cs new file mode 100644 index 0000000..72cfbf0 --- /dev/null +++ b/Handler/Project/Setting/fSystem_Setting.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project.Dialog +{ + public partial class fSystem_Setting : Form + { + public fSystem_Setting() + { + InitializeComponent(); + this.KeyDown += SystemParameter_KeyDown; + } + + void SystemParameter_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) this.Close(); + } + + private void button1_Click(object sender, EventArgs e) + { + this.Invalidate(); + SETTING.System.Save(); + DialogResult = System.Windows.Forms.DialogResult.OK; + } + + private void SystemParameter_Load(object sender, EventArgs e) + { + this.propertyGrid1.SelectedObject = SETTING.System; + this.propertyGrid1.Invalidate(); + } + + private void button2_Click(object sender, EventArgs e) + { + } + + private void button2_Click_1(object sender, EventArgs e) + { + var but = sender as Button; + var idx = short.Parse(but.Tag.ToString()); + PUB.mot.ShowParameter(idx); + } + } +} diff --git a/Handler/Project/Setting/fSystem_Setting.resx b/Handler/Project/Setting/fSystem_Setting.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Project/Setting/fSystem_Setting.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Project/UIControl/CtlBase.Designer.cs b/Handler/Project/UIControl/CtlBase.Designer.cs new file mode 100644 index 0000000..76f03ba --- /dev/null +++ b/Handler/Project/UIControl/CtlBase.Designer.cs @@ -0,0 +1,36 @@ +namespace UIControl +{ + partial class CtlBase + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Project/UIControl/CtlBase.cs b/Handler/Project/UIControl/CtlBase.cs new file mode 100644 index 0000000..709273a --- /dev/null +++ b/Handler/Project/UIControl/CtlBase.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class PinInfo + { + public int PinIndex { get; set; } + public Boolean PinLevel { get; set; } + public Boolean Output { get; set; } + public eValueDirection ValueDirection { get; set; } + public Boolean Value + { + get + { + if (PinLevel == false) return !Raw; + else return Raw; + } + } + + private Boolean _raw = false; + public Boolean Raw + { + get { return _raw; } + set + { + Boolean changed = _raw != value; + _raw = value; + if (changed && ValueChanged != null) + { + ValueChanged(this, new EventArgs()); + } + } + } + public PinInfo(Boolean isOutput = false) + { + _raw = false; + PinIndex = -1; + PinLevel = true; + Output = isOutput; + ValueDirection = eValueDirection.input; + } + + public event EventHandler ValueChanged; + } + + + public enum eValueDirection + { + input = 0, + output, + } + public abstract partial class CtlBase : Control + { + Boolean bRemakeRect ; + + + public List PinList; + public CtlBase() + { + InitializeComponent(); + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.ContainerControl, false); + this.SetStyle(ControlStyles.Selectable, true); + PinList = new List(); + bRemakeRect = true; + this.Resize += Loader_Resize; + } + + public abstract void MakeRect(); + public abstract void UpdateValue(); + protected void SetPinCount(int iCnt) + { + this.PinList = new List(iCnt); + + for (int i = 0; i < iCnt; i++) + PinList.Add(new PinInfo()); + + } + + void Loader_Resize(object sender, EventArgs e) + { + bRemakeRect = true; + } + + protected override void OnPaint(PaintEventArgs pe) + { + if (bRemakeRect) + { + MakeRect(); + bRemakeRect = false; + } + + base.OnPaint(pe); + } + } +} diff --git a/Handler/Project/UIControl/CtlContainer.Designer.cs b/Handler/Project/UIControl/CtlContainer.Designer.cs new file mode 100644 index 0000000..5c4d43f --- /dev/null +++ b/Handler/Project/UIControl/CtlContainer.Designer.cs @@ -0,0 +1,36 @@ +//namespace UIControl +//{ +// partial class CtlContainer +// { +// /// +// /// 필수 디자이너 변수입니다. +// /// +// private System.ComponentModel.IContainer components = null; + +// /// +// /// 사용 중인 모든 리소스를 정리합니다. +// /// +// /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. +// protected override void Dispose(bool disposing) +// { +// if (disposing && (components != null)) +// { +// components.Dispose(); +// } +// base.Dispose(disposing); +// } + +// #region 구성 요소 디자이너에서 생성한 코드 + +// /// +// /// 디자이너 지원에 필요한 메서드입니다. +// /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. +// /// +// private void InitializeComponent() +// { +// components = new System.ComponentModel.Container(); +// } + +// #endregion +// } +//} diff --git a/Handler/Project/UIControl/CtlContainer.cs b/Handler/Project/UIControl/CtlContainer.cs new file mode 100644 index 0000000..c744593 --- /dev/null +++ b/Handler/Project/UIControl/CtlContainer.cs @@ -0,0 +1,86 @@ +//using System; +//using System.Collections.Generic; +//using System.ComponentModel; +//using System.Drawing; +//using System.Data; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; +//using System.Windows.Forms; + +//namespace UIControl +//{ +// public partial class CtlContainer : GroupBox +// { +// arDev.AjinEXTEK.emu.Emulator.CEmuleDIO devIO; +// arDev.AjinEXTEK.Emulator.CEmulMOT devMOT; + +// public CtlContainer() +// { +// InitializeComponent(); +// } +// public void updateControl() +// { +// updateControl(this.Controls); +// } + +// public void setDevice(arDev.AjinEXTEK.Emulator.CEmuleDIO dio, arDev.AjinEXTEK.Emulator.CEmulMOT mot) +// { +// this.devIO = dio; +// this.devMOT = mot; +// } + +// public void updateControl(System.Windows.Forms.Control.ControlCollection ctl) +// { +// if (devIO == null && devMOT == null) throw new Exception("디바이스(IO/MOT)가 설정되지 않았습니다"); +// foreach (Control c in ctl) +// { +// if (c.HasChildren) +// { +// updateControl(c.Controls); +// } +// else if (c is UIControl.CtlBase) +// { +// var cc = c as UIControl.CtlBase; +// foreach (var pin in cc.PinList) +// { +// if (pin.PinIndex != -1) +// { +// if (pin.ValueDirection == UIControl.eValueDirection.input) +// { +// //io의 값을 컨트롤에 적용해줘야한다 +// if (pin.Output) +// { +// pin.Raw = devIO.Output[pin.PinIndex]; +// } +// else +// { +// pin.Raw = devIO.Input[pin.PinIndex]; +// } +// } +// else +// { +// //컨트롤의 값을 io에 적용해줘야 한다 +// if (pin.Output) +// { +// //devIO.Output[pin.PinIndex] = pin.Value; +// devIO.SetOutput(pin.PinIndex, pin.Value); +// } +// else +// { +// // devIO.Input[pin.PinIndex] = pin.Value; +// devIO.SetInput(pin.PinIndex, pin.Value); +// } +// } + +// } +// } +// cc.UpdateValue(); +// cc.Invalidate(); +// } +// } + +// } + +// } +//} diff --git a/Handler/Project/UIControl/CtlCylinder.Designer.cs b/Handler/Project/UIControl/CtlCylinder.Designer.cs new file mode 100644 index 0000000..07a1461 --- /dev/null +++ b/Handler/Project/UIControl/CtlCylinder.Designer.cs @@ -0,0 +1,36 @@ +namespace UIControl +{ + partial class CtlCylinder + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Project/UIControl/CtlCylinder.cs b/Handler/Project/UIControl/CtlCylinder.cs new file mode 100644 index 0000000..40c1f81 --- /dev/null +++ b/Handler/Project/UIControl/CtlCylinder.cs @@ -0,0 +1,261 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class CtlCylinder : CtlBase + { + // string text_; + Font font_ = new Font("Malgun Gothic", 10); + public enum eSensorType + { + SingleAction = 0, + DoubleAction, + } + private eSensorType _arsensortype = eSensorType.SingleAction; + public eSensorType arSensorType + { + get + { + return _arsensortype; + } + set + { + _arsensortype = value; + this.Invalidate(); + } + } + [Browsable(true)] + public new Font Font { get { return font_; } set { font_ = value; this.Invalidate(); } } + + public CtlCylinder() + { + InitializeComponent(); + + SetPinCount(4); //입력2개 출력2개 + + arOutputMax.ValueDirection = eValueDirection.output; + arOutputMin.ValueDirection = eValueDirection.output; + + if (arVel == 0) arVel = 50; + + //실린더 가동핀은 변경되면 시작시간을 업데이트해줘야 한다 + PinList[0].ValueChanged += (s1, e1) => { RunStartTimeMax = DateTime.Now; }; + PinList[1].ValueChanged += (s1, e1) => { RunStartTimeMin = DateTime.Now; }; + } + public override void MakeRect() + { + + } + + public int arLength = 100; + public int arVel { get; set; } + public DateTime RunStartTimeMin = DateTime.Now; + public DateTime RunStartTimeMax = DateTime.Now; + // public TimeSpan arRunSec = new TimeSpan(0); + private double arRunLen = 0; + public double arProgress + { + get + { + var val = (arRunLen / (arLength * 1.0) * 100.0); + if (val > 100.0) val = 100; + return val; + } + } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arOutputMax { get { return PinList[2]; } set { PinList[2] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arOutputMin { get { return PinList[3]; } set { PinList[3] = value; } } + + //Boolean aron1_ = false; + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arInput1 + { + get + { + return PinList[0]; + } + set + { + //if (value != aron1_) RunStartTimeMax = DateTime.Now; + PinList[0] = value; + } + } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arInput2 + { + get + { + return PinList[1]; + } + set + { + // if (value != aron2_) RunStartTimeMin = DateTime.Now; + PinList[1] = value; + this.Invalidate(); + } + } + + + public Rectangle arRectProgress { get; set; } + + public override void UpdateValue() + { + //둘다 켜져잇거나 거져잇다면 작동하지 않는다 + if (arInput1 != arInput2) + { + if (arSensorType == eSensorType.SingleAction) + { + var ts = DateTime.Now - RunStartTimeMax; + //단동은 1번 센서의 on/off 로 처리한다 + if (arInput1.Value) + { + //경과시간만큼 MAX로 이동한다 + arRunLen += ts.TotalSeconds * arVel; + } + else + { + //경과시간만큼 MIN으로 이동한다 + arRunLen -= ts.TotalSeconds * arVel; + } + RunStartTimeMax = DateTime.Now; + } + else + { + //복동은 1번센서는 Max로 2번센서는 Min으로 이동시킨다 + if (arInput1.Value) + { + var ts = DateTime.Now - RunStartTimeMax; + arRunLen += ts.TotalSeconds * arVel; + RunStartTimeMax = DateTime.Now; + } + else if (arInput2.Value) + { + var ts = DateTime.Now - RunStartTimeMin; + arRunLen -= ts.TotalSeconds * arVel; + RunStartTimeMin = DateTime.Now; + } + } + } + + if (arRunLen > arLength) arRunLen = arLength; + if (arRunLen < 1) arRunLen = 0; + + arOutputMax.Raw = arProgress >= 99.9; + arOutputMin.Raw = arProgress <= 0.1; + + // public Boolean arMax { get { return arProgress >= 99.9; } } + //public Boolean arMin { get { return arProgress <= 0.1; } } + } + + protected override void OnPaint(PaintEventArgs pe) + { // base.OnPaint(pe); + + + + pe.Graphics.DrawRectangle(Pens.Gray, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); + + var baseRect = new Rectangle(DisplayRectangle.Left + Padding.Left, + DisplayRectangle.Top + Padding.Top, + DisplayRectangle.Width - Padding.Left - Padding.Right, + DisplayRectangle.Height - Padding.Top - Padding.Bottom); + + + //pe.Graphics.DrawRect(baseRect, Color.Blue, 1); + + + //사각형안에 사각형이 움직이는 걸로 하며 . 기본 H 배치한다 + var rectH = (int)(baseRect.Height * 0.6); + var rectOut = new Rectangle(baseRect.Left, + (int)(baseRect.Top + (baseRect.Height - rectH) / 2.0), + (int)(baseRect.Width), rectH); + + var InOffset = (int)(baseRect.Height * 0.15); + //var rectIn = new Rectangle(rectOut.Right, rectOut.Top + InOffset, + // DisplayRectangle.Width - rectOut.Width - 2, rectOut.Height - (InOffset * 2)); + + + + //진행율(%) + var progress = (arProgress / 100.0) * rectOut.Width; + var PWid = 10; + var rectP = new Rectangle((int)(progress - PWid + baseRect.Left), baseRect.Top, PWid, baseRect.Height); + + pe.Graphics.FillRectangle(Brushes.Gray, rectOut); + pe.Graphics.DrawRect(rectOut, Color.Black, 2); + + //pe.Graphics.DrawRect(rectIn, Color.Black, 2); + + if (this.arOutputMax.Value) + pe.Graphics.FillRectangle(Brushes.Red, rectP); + else if (this.arOutputMin.Value) + pe.Graphics.FillRectangle(Brushes.Blue, rectP); + else + pe.Graphics.FillRectangle(Brushes.Gold, rectP); + + pe.Graphics.DrawRect(rectP, Color.Black, 2); + + + //가동상태를 상단에 표시한다 + var StSize = 10;// baseRect.Height * 0.15f; + var rectp1 = new RectangleF( + this.DisplayRectangle.Right - StSize - 3, + DisplayRectangle.Top + 3, + StSize, StSize + ); + + if (arInput1.Value) + pe.Graphics.FillRectangle(Brushes.Red, rectp1); + else + pe.Graphics.FillRectangle(Brushes.Gray, rectp1); + pe.Graphics.DrawRect(rectp1, Color.White); + + if (arSensorType == eSensorType.DoubleAction) + { + var rectp2 = new RectangleF( + this.DisplayRectangle.Right - StSize - 3, + DisplayRectangle.Bottom - StSize - 3, + StSize, StSize + ); + if (arInput2.Value) + pe.Graphics.FillRectangle(Brushes.Red, rectp2); + else + pe.Graphics.FillRectangle(Brushes.Gray, rectp2); + pe.Graphics.DrawRect(rectp2, Color.White); + } + + // if (arMin) + // { + // pe.Graphics.DrawString("MIN", this.Font, Brushes.Black, rectOut, + // new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + // } + // else if(arMax) + // { + // pe.Graphics.DrawString("MAX", this.Font, Brushes.Black, rectOut, + //new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + // } + // else + // { + // pe.Graphics.DrawString(arProgress.ToString("N0")+"%", this.Font, Brushes.Black, rectOut, + //new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + // } + + + if (string.IsNullOrEmpty(Text) == false) + { + pe.Graphics.DrawString(Text + "\n" + progress.ToString(), + this.Font, + Brushes.Black, + rectOut, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + } + } +} diff --git a/Handler/Project/UIControl/CtlMotor.Designer.cs b/Handler/Project/UIControl/CtlMotor.Designer.cs new file mode 100644 index 0000000..5ded681 --- /dev/null +++ b/Handler/Project/UIControl/CtlMotor.Designer.cs @@ -0,0 +1,41 @@ +namespace UIControl +{ + partial class CtlMotor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // CtlMotor + // + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/Handler/Project/UIControl/CtlMotor.cs b/Handler/Project/UIControl/CtlMotor.cs new file mode 100644 index 0000000..a548b85 --- /dev/null +++ b/Handler/Project/UIControl/CtlMotor.cs @@ -0,0 +1,181 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class CtlMotor : CtlBase + { + public int Length { get; set; } + //public Boolean Pin_Run { get; set; } + //public Boolean Pin_DirCW { get; set; } + //public Boolean Pin_Max { get; set; } + //public Boolean Pin_Min { get; set; } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo Pin_Run { get { return PinList[0]; } set { this.PinList[0] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo Pin_DirCW { get { return PinList[1]; } set { this.PinList[1] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo Pin_Max { get { return PinList[2]; } set { this.PinList[2] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo Pin_Min { get { return PinList[3]; } set { this.PinList[3] = value; } } + + + public Boolean speed { get; set; } + + Font font_ = new Font("Malgun Gothic", 10); + + + + [Browsable(true)] + public new Font Font { get { return font_; } set { font_ = value; this.Invalidate(); } } + + public CtlMotor() + { + InitializeComponent(); + + SetPinCount(4); + + Length = 100; + this.Size = new Size(80, 80); + this.MaximumSize = new Size(80, 80); + this.MinimumSize = new Size(40, 40); + if (this.Font == null) this.Font = new Font("Malgun Gothic", 10); + if (this.Text == null) this.Text = string.Empty; + } + + + public override void MakeRect() + { + + } + + public override void UpdateValue() + { + + } + + int anim = 0; + protected override void OnPaint(PaintEventArgs pe) + { + + pe.Graphics.DrawRectangle(Pens.Gray, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); + + var rect = new Rectangle(DisplayRectangle.Left + 2, DisplayRectangle.Top + 2, 10, 10); + var rect2 = new Rectangle(DisplayRectangle.Right - 2 - 10, DisplayRectangle.Top + 2, 10, 10); + + + //모터영역을 그린다. + var rectO = new RectangleF( + DisplayRectangle.Left + Padding.Left, + DisplayRectangle.Top + Padding.Top, + DisplayRectangle.Width * 0.6f, + DisplayRectangle.Height - Padding.Top - Padding.Bottom); + + var rectiH = rectO.Height * 0.6f; + var rectI = new RectangleF( + rectO.Left, + rectO.Top + (rectO.Height - rectiH) / 2.0f, + DisplayRectangle.Width - Padding.Left- Padding.Right, + rectiH + ); + + + + if (this.Pin_Run.Value) + { + if (this.Pin_DirCW.Value) + { + if (anim % 2 == 0) + pe.Graphics.FillRectangle(Brushes.Lime, rectI); + else + pe.Graphics.FillRectangle(Brushes.Yellow, rectI); + pe.Graphics.DrawRectangle(Pens.Black, rectI); + } + else + { + if (anim % 2 == 0) + pe.Graphics.FillRectangle(Brushes.Lime, rectI); + else + pe.Graphics.FillRectangle(Brushes.Blue, rectI); + pe.Graphics.DrawRectangle(Pens.Black, rectI); + } + + } + else + { + pe.Graphics.FillRectangle(Brushes.Red, rectI); + pe.Graphics.DrawRectangle(Pens.Black, rectI); + } + pe.Graphics.DrawRect(rectI, Color.Black, 2); + pe.Graphics.FillRectangle(Brushes.Gray, rectO); + pe.Graphics.DrawRect(rectO, Color.Black, 2); + + + + //기어를 그린다. + Point SPT = new Point(30, 10); + int GearSize = 20; + List pts = new List(); + pts.Add(new PointF(SPT.X, SPT.Y)); + pts.Add(new PointF(SPT.X + GearSize, SPT.Y)); + pts.Add(new PointF(SPT.X + GearSize, SPT.Y + GearSize)); + pts.Add(new PointF(SPT.X, SPT.Y + GearSize)); + pts.Add(pts[0]); + + var CenterPT = new PointF((pts[1].X - pts[0].X) / 2.0f + pts[0].X, (pts[2].Y - pts[0].Y) / 2.0f + pts[0].Y); + + + var anglepts = GetAnglePonit(pts.ToArray(), PointF.Empty, 1); + + var degree = 4; + var rad = degree * (Math.PI / 180); + + // pe.Graphics.DrawPolygon(Pens.Blue, anglepts.ToArray()); + + + //pe.Graphics.DrawLine(Pens.Red, CenterPT.X - 10, CenterPT.Y, CenterPT.X + 10, CenterPT.Y); + //pe.Graphics.DrawLine(Pens.Red, CenterPT.X, CenterPT.Y - 10, CenterPT.X, CenterPT.Y + 10); + + if (string.IsNullOrEmpty(Text) == false) + { + pe.Graphics.DrawString(Text , + this.Font, + Brushes.Black, + rectO, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + anim += 1; + } + + List GetAnglePonit(PointF[] array, PointF cpt, double degree) + { + if (degree > 360) + { + var mok = (int)(degree / 360.0); + degree = degree - (360 * mok); + if (degree > 180) degree *= -1; + } + var rad = degree * (Math.PI / 180); + var retval = new List(); + + var x = array[0].X;// (Math.Cos(rad) * (CPT.X - array[0].X)) + (-Math.Sin(rad) * (CPT.Y - array[0].Y)); + var y = array[0].Y;// (Math.Sin(rad) * (CPT.X - array[0].X)) + (Math.Cos(rad) * (CPT.Y - array[0].Y)); + + + foreach (var p in array) + { + //변환해서 넣어줘야함 + var x1 = (p.X - cpt.X) * Math.Cos(rad) - (p.Y - cpt.Y) * Math.Sign(rad) + cpt.X; + var y1 = (p.X - cpt.X) * Math.Sign(rad) + (p.Y - cpt.Y) * Math.Cos(rad) + cpt.Y; + retval.Add(new PointF((float)(x1), (float)(y1))); + } + return retval; + } + } +} diff --git a/Handler/Project/UIControl/CtlMotor.resx b/Handler/Project/UIControl/CtlMotor.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/Handler/Project/UIControl/CtlMotor.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/Handler/Project/UIControl/CtlSensor.Designer.cs b/Handler/Project/UIControl/CtlSensor.Designer.cs new file mode 100644 index 0000000..cf922a1 --- /dev/null +++ b/Handler/Project/UIControl/CtlSensor.Designer.cs @@ -0,0 +1,36 @@ +namespace UIControl +{ + partial class CtlSensor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Project/UIControl/CtlSensor.cs b/Handler/Project/UIControl/CtlSensor.cs new file mode 100644 index 0000000..2d53e8a --- /dev/null +++ b/Handler/Project/UIControl/CtlSensor.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class CtlSensor : CtlBase + { + + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arPin { get { return PinList[0]; } set { PinList[0] = value; } } + + Font font_ = new Font("Malgun Gothic", 10); + + [Browsable(true)] + public new Font Font { get { return font_; } set { font_ = value; this.Invalidate(); } } + + public Boolean RectShape { get; set; } + public Color ColorOn { get; set; } + public Color ColorOff { get; set; } + + public CtlSensor() + { + InitializeComponent(); + + SetPinCount(1); + + //this.MaximumSize = new Size(80, 80); + this.MinimumSize = new Size(4, 4); + this.ColorOn = Color.Lime; + this.ColorOff = Color.DimGray; + //if (this.Font == null) this.Font = new Font("Malgun Gothic", 10); + //if (this.Text == null) this.Text = string.Empty; + + } + + public override void MakeRect() + { + + } + public override void UpdateValue() + { + + } + protected override void OnPaint(PaintEventArgs pe) + { + base.OnPaint(pe); + pe.Graphics.DrawRectangle(Pens.Gray, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); + + + var baseRect = new Rectangle(DisplayRectangle.Left + Padding.Left, + DisplayRectangle.Top + Padding.Top, + DisplayRectangle.Width - Padding.Left - Padding.Right, + DisplayRectangle.Height - Padding.Top - Padding.Bottom); + + + var rect = new Rectangle(baseRect.Left + 1, baseRect.Top + 1, baseRect.Width - 2, baseRect.Height - 2); + + if (RectShape) + { + if (arPin.Value) pe.Graphics.FillRectangle(new SolidBrush(ColorOn), rect); + else pe.Graphics.FillRectangle(new SolidBrush(ColorOff), rect); + pe.Graphics.DrawRectangle(Pens.Black, rect); + } + else + { + if (arPin.Value) pe.Graphics.FillEllipse(new SolidBrush(ColorOn), rect); + else pe.Graphics.FillEllipse(new SolidBrush(ColorOff), rect); + pe.Graphics.DrawEllipse(Pens.Black, rect); + } + + + if (string.IsNullOrEmpty(Text) == false) + { + pe.Graphics.DrawString(Text, + this.Font, + Brushes.Black, + baseRect, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + } + } +} diff --git a/Handler/Project/UIControl/CtlTowerLamp.Designer.cs b/Handler/Project/UIControl/CtlTowerLamp.Designer.cs new file mode 100644 index 0000000..28bafcd --- /dev/null +++ b/Handler/Project/UIControl/CtlTowerLamp.Designer.cs @@ -0,0 +1,36 @@ +namespace UIControl +{ + partial class CtlTowerLamp + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Project/UIControl/CtlTowerLamp.cs b/Handler/Project/UIControl/CtlTowerLamp.cs new file mode 100644 index 0000000..5743cb3 --- /dev/null +++ b/Handler/Project/UIControl/CtlTowerLamp.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class CtlTowerLamp : CtlBase + { + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arPinRed { get { return PinList[0]; } set { PinList[0] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arPinYel { get { return PinList[1]; } set { PinList[1] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arPinGrn { get { return PinList[2]; } set { PinList[2] = value; } } + [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] + public PinInfo arPinBuz { get { return PinList[3]; } set { PinList[3] = value; } } + + + + public CtlTowerLamp() + { + InitializeComponent(); + + SetPinCount(4); + this.MinimumSize = new Size(4, 4); + } + + public override void MakeRect() + { + + } + public override void UpdateValue() + { + + } + protected override void OnPaint(PaintEventArgs pe) + { + base.OnPaint(pe); + pe.Graphics.DrawRectangle(Pens.Gray, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); + + var baseRect = new Rectangle(DisplayRectangle.Left + Padding.Left, + DisplayRectangle.Top + Padding.Top, + DisplayRectangle.Width - Padding.Left - Padding.Right, + DisplayRectangle.Height - Padding.Top - Padding.Bottom); + + + //상위 80% 영역을 표시영역으로 사용한ㄷ + var term = 3; + var DispRect = new Rectangle(baseRect.Left, baseRect.Top, baseRect.Width, (int)(baseRect.Height * 0.8f)); + var LampHeight = arPinBuz.PinIndex == -1 ? (DispRect.Height - 3 * term) / 3.0f : (DispRect.Height - 4 * term) / 4.0f; + + var rectR = new RectangleF(DispRect.Left, DispRect.Top + term, DispRect.Width, LampHeight); + var rectY = new RectangleF(DispRect.Left, rectR.Bottom + term, DispRect.Width, LampHeight); + var rectG = new RectangleF(DispRect.Left, rectY.Bottom + term, DispRect.Width, LampHeight); + var rectB = RectangleF.Empty; + if (arPinBuz.PinIndex != -1) + { + rectB = new RectangleF(DispRect.Left, rectG.Bottom + term, DispRect.Width, LampHeight); + } + + var rectCT = new RectangleF(DispRect.Left + (DispRect.Width - 20) / 2.0f, DispRect.Top, 20, baseRect.Height); + pe.Graphics.FillRectangle(Brushes.DimGray, rectCT); + pe.Graphics.DrawRectangle(Pens.Black, rectCT); + + if(this.PinList[0].Value) + pe.Graphics.FillRectangle(Brushes.Red, rectR); + else + pe.Graphics.FillRectangle(Brushes.Gray, rectR); + + if (this.PinList[1].Value) + pe.Graphics.FillRectangle(Brushes.Gold, rectY); + else + pe.Graphics.FillRectangle(Brushes.Gray, rectY); + + if (this.PinList[2].Value) + pe.Graphics.FillRectangle(Brushes.Green, rectG); + else + pe.Graphics.FillRectangle(Brushes.Gray, rectG); + + pe.Graphics.DrawRectangle(Pens.Black, rectR); + pe.Graphics.DrawRectangle(Pens.Black, rectY); + pe.Graphics.DrawRectangle(Pens.Black, rectG); + + pe.Graphics.DrawString("RED", + this.Font, + Brushes.Black, + rectR, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + pe.Graphics.DrawString("YEL", + this.Font, + Brushes.Black, + rectY, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + pe.Graphics.DrawString("GRN", + this.Font, + Brushes.Black, + rectG, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + if (rectB.IsEmpty == false) + { + if (this.PinList[3].Value) + pe.Graphics.FillRectangle(Brushes.Magenta, rectB); + else + pe.Graphics.FillRectangle(Brushes.Gray, rectB); + + pe.Graphics.DrawRectangle(Pens.Black, rectB); + + pe.Graphics.DrawString("BUZ", + this.Font, + Brushes.Black, + rectB, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + } + } +} diff --git a/Handler/Project/Util/BarcodeDataProcessing.cs b/Handler/Project/Util/BarcodeDataProcessing.cs new file mode 100644 index 0000000..fffac2b --- /dev/null +++ b/Handler/Project/Util/BarcodeDataProcessing.cs @@ -0,0 +1,666 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using AR; +using Project.Class; + +namespace Project +{ + public partial class FMain + { + + EResultKeyence BCDProcess_ALL(Class.JobData itemC, string Src, bool CompleteCheck) + { + var mainJob = Src.Equals("SPS") == false; + + //assign customer code - fixed data + if (itemC.VisionData.CUSTCODE.isEmpty() && VAR.STR[eVarString.JOB_CUSTOMER_CODE].isEmpty() == false) + { + itemC.VisionData.CUSTCODE = VAR.STR[eVarString.JOB_CUSTOMER_CODE]; + PUB.log.Add($"Cutomer Code Fixed Value : {itemC.VisionData.CUSTCODE}"); + } + + + + //커스터머 이름 확인 + if (mainJob && PUB.OPT_BYPASS() == false) + BCDProcess_GetCustomerName(itemC); + + //Ignore Value + BCDProcess_IgnoreValue(itemC); + + //기본 벤더이름 + BCDProcess_DefVenderName(itemC); + + //기본 MFG + BCDProcess_DefMFGDate(itemC); + + //바코드가 변경된 경우이다, 자동채우기 기능이 있다면 사용한다 + bool NewBarcodeUpdated = false; + + //[WMS] SID정보테이블에서 정보 추출(프린트정보는 없음) + //[WMS] 에서 중복검색되면 팝업을 해야하므로 이것을 먼저 처리한다. + if (VAR.BOOL[eVarBool.Opt_ApplyWMSInfo] && (CompleteCheck || itemC.VisionData.BarcodeTouched == true)) + { + var rlt_FindWMD = BCDProcess_FindWMSInfo(itemC); + if (rlt_FindWMD.NewBarcodeUpdated) NewBarcodeUpdated = true; + if (rlt_FindWMD.retval == EResultKeyence.MultiSID) return rlt_FindWMD.retval; + } + + //SID정보테이블에서 정보 추출 + if (VAR.BOOL[eVarBool.Opt_ApplySIDInfo] && (CompleteCheck || itemC.VisionData.BarcodeTouched == true)) + { + if (BCDProcess_FindSIDInfo(itemC) == true) NewBarcodeUpdated = true; + } + + //시드변환정보에서 정보 추출 + if (VAR.BOOL[eVarBool.Opt_ApplySIDConv] && (CompleteCheck || itemC.VisionData.BarcodeTouched == true)) + { + if (BCDProcess_FindSIDConv(itemC) == true) NewBarcodeUpdated = true; + } + + //기존 작업에서 데이터를 찾아서 쓴다 + if (VAR.BOOL[eVarBool.Opt_ApplyJobInfo] && (CompleteCheck || itemC.VisionData.BarcodeTouched == true)) + { + if (BCDProcess_FindJobData(itemC) == true) NewBarcodeUpdated = true; + } + + //릴ID 신규발행 + if (PUB.OPT_BYPASS() == false && VAR.BOOL[eVarBool.Opt_NewReelID]) + BCDProcess_MakeReelID(itemC); + + //SiD CONVERT + if (PUB.OPT_BYPASS() == false && + VAR.BOOL[eVarBool.Opt_SIDConvert] && + PUB.flag.get(eVarBool.FG_WAIT_LOADERINFO) == false && + VAR.BOOL[eVarBool.JOB_Empty_SIDConvertInfo] == false) + { + //원본시드(sid0)가 비어있는데 sid과 확정되었다면 변환작업을 진행한다 + BCDProcess_SIDConvert(itemC); + } + + //Print Position + BCDProcess_BCDPrint(itemC); + + + + //해당 바코드작업이 완료되었는지 확인한다. 신규 바코드값이 업데이트되면 한번더 동작하도록 한다 + if (itemC.VisionData.BarcodeTouched == true && NewBarcodeUpdated == false) + { + itemC.VisionData.BarcodeTouched = false; + } + + bool BatchValueOK = false; + if (PUB.Result.vModel.IgnoreBatch) BatchValueOK = true; + else BatchValueOK = itemC.VisionData.BATCH.isEmpty() == false; + + bool partnoValueOK = false; + if (PUB.Result.vModel.IgnorePartNo) partnoValueOK = true; + else partnoValueOK = itemC.VisionData.PARTNO.isEmpty() == false; + + + //수량임의 입력의 경우 + bool vQtyOK = false; + if (VAR.BOOL[eVarBool.Opt_UserQtyRQ]) + { + if (itemC.VisionData.QTYRQ) vQtyOK = true; ////RQ의 값이 들어있으면 성공 + else vQtyOK = false; //수량임의모드인데 RQ값이 들어있지않으면 자동진행하지 않는다 + } + else + { + //자동에서는 수량값이 들어있으면 바로 넘어가게한다. + vQtyOK = itemC.VisionData.QTY.isEmpty() == false; + } + + //데이터확정 및 완료처리 + if (CompleteCheck) + { + + if (itemC.VisionData.Confirm) + { + //이미 완료된 데이터 + if (mainJob) + { + if (itemC.VisionData.ConfirmAuto) + PUB.log.AddI($"Proceeding due to data confirmation completion (automatic)"); + else if (itemC.VisionData.ConfirmUser) + PUB.log.AddI($"Proceeding due to data confirmation completion (manual)"); + else + PUB.log.AddI($"Proceeding due to data confirmation completion (BYPASS)"); + } + } + else if (vQtyOK && + (itemC.VisionData.VNAME.isEmpty() == false) && + itemC.VisionData.VLOT.isEmpty() == false && + itemC.VisionData.SID.Length == 9 && + itemC.VisionData.MFGDATE.isEmpty() == false && + partnoValueOK && + BatchValueOK && + itemC.VisionData.RID.isEmpty() == false) + { + //모든값이 입력되어 있다면 조건 체크후 진행할 수 있도록 한다 + //2206211400 + CheckDataComplte(itemC, Src, mainJob); + return EResultKeyence.Wait; + } + else + { + //아직데이터가 완료되지 않았다면 + //대기시간이 지나면 사용자 확인창을 띄운다 + return EResultKeyence.Wait; + } + } + + + return EResultKeyence.Nothing; + } + + //커스터머 이름 확인 + void BCDProcess_GetCustomerName(Class.JobData itemC) + { + if (itemC.VisionData.CUSTNAME.isEmpty() && itemC.VisionData.CUSTCODE.isEmpty() == false) + { + var qta = new DataSet1TableAdapters.QueriesTableAdapter(); + var custname = qta.GetCustName(itemC.VisionData.CUSTCODE); + if ((custname ?? string.Empty).isEmpty() == false) + { + PUB.log.Add($"New CustName => {custname}"); + itemC.VisionData.CUSTNAME = custname; + } + } + } + + bool BCDProcess_BCDPrint(Class.JobData itemC) + { + var OPT_BYPASS = PUB.OPT_BYPASS(); + bool NeedConfirm = false; + if (itemC.VisionData.PrintPositionData.isEmpty() == true || itemC.VisionData.PrintPositionCheck == false) + { + if (OPT_BYPASS) + { + //바이패스해야하는 경우라면 프린트위치를 임의로 한다 + itemC.VisionData.PrintPositionData = "1"; + itemC.VisionData.PrintPositionCheck = true; + PUB.log.AddI($"Print position arbitrarily set due to bypass SID ({itemC.VisionData.SID})"); + } + else if (itemC.VisionData.SID.isEmpty()) + { + //no sid need confirm + //PUB.log.AddAT($"Print Position Errr (No SID)"); + NeedConfirm = true; + } + else + { + //기록된 현재작업의 인쇄위치 정보에서 찾는다 231005 + if (PUB.Result.PrintPostionList.ContainsKey(itemC.VisionData.SID)) + { + var preprnpos = PUB.Result.PrintPostionList[itemC.VisionData.SID]; + itemC.VisionData.PrintPositionData = preprnpos; + itemC.VisionData.PrintPositionCheck = true; + PUB.log.AddI($"Print position found in current job info SID:{itemC.VisionData.SID}, Value={preprnpos}"); + } + else if (NeedConfirm == false) + { + NeedConfirm = true; + } + } + } + return NeedConfirm; + } + + void BCDProcess_IgnoreValue(Class.JobData itemC) + { + if (PUB.Result.vModel.IgnorePartNo == true && itemC.VisionData.PARTNO_Trust == false) + { + PUB.log.Add("PartNo Trust by Ignore PartNo Setting(opmodel)"); + itemC.VisionData.PARTNO_Trust = true; + } + + //ignore batch value + if (PUB.Result.vModel.IgnoreBatch == true) + { + + } + + } + + //기본 벤더이름 + void BCDProcess_DefVenderName(Class.JobData itemC) + { + //기본 벤더이름 + var defname = PUB.Result.vModel.Def_Vname ?? string.Empty; + if (PUB.Result.isSetvModel && defname.isEmpty() == false) + { + if (itemC.VisionData.VNAME.Equals(defname) == false) + { + itemC.VisionData.VNAME = defname.Trim(); + itemC.VisionData.VNAME_Trust = true; + PUB.log.Add($"Defaul V.Name Set to {defname}"); + } + } + else if (PUB.OPT_BYPASS() == true) + { + if (itemC.VisionData.VNAME_Trust == false) + { + itemC.VisionData.VNAME = "BYPASS"; + itemC.VisionData.VNAME_Trust = true; + } + } + } + + //기본 MFG + void BCDProcess_DefMFGDate(Class.JobData itemC) + { + var defname = PUB.Result.vModel.Def_MFG ?? string.Empty; + if (PUB.Result.isSetvModel && defname.isEmpty() == false && itemC.VisionData.MFGDATE.Equals(defname) == false) + { + itemC.VisionData.MFGDATE = defname.Trim(); + itemC.VisionData.MFGDATE_Trust = true; + PUB.log.Add($"Defaul MFGDATE Set to {defname}"); + } + } + + //[WMS] SID정보테이블에서 정보 추출(프린트정보는 없음) + //[WMS] 에서 중복검색되면 팝업을 해야하므로 이것을 먼저 처리한다. + (bool NewBarcodeUpdated, EResultKeyence retval) BCDProcess_FindWMSInfo(Class.JobData itemC) + { + Boolean Apply = true; + var vdata = itemC.VisionData; + bool NewBarcodeUpdated = false; + EResultKeyence rlt = EResultKeyence.Wait; + + //select columns + List fields = new List(); + if (VAR.BOOL[eVarBool.Opt_WMS_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CUST_CODE"); + if (VAR.BOOL[eVarBool.Opt_WMS_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PART_NO"); + if (VAR.BOOL[eVarBool.Opt_WMS_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VENDOR_NM"); + if (VAR.BOOL[eVarBool.Opt_WMS_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID"); + if (VAR.BOOL[eVarBool.Opt_WMS_Apply_batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("BATCH_NO"); //220921 + if (VAR.BOOL[eVarBool.Opt_WMS_Apply_MFG] && (vdata.MFGDATE_Trust == false || vdata.MFGDATE.isEmpty())) fields.Add("MFG_DATE"); + + //where coluns + List wheres = new List(); + if (Apply && VAR.BOOL[eVarBool.Opt_WMS_Where_CustCode]) + { + if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUST_CODE='{vdata.CUSTCODE.PadLeft(10, '0')}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_WMS_Where_PartNo]) + { + if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PART_NO='{vdata.PARTNO}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_WMS_Where_SID]) + { + if (VAR.BOOL[eVarBool.Opt_SIDConvert]) //if sid convert logic + { + if (vdata.SID_Trust && vdata.SID0.isEmpty() == false && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'"); + else Apply = false; + } + else + { + if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'"); + else Apply = false; + } + } + if (Apply && VAR.BOOL[eVarBool.Opt_WMS_Where_VLOT]) //221013 + { + if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) wheres.Add($"VENDOR_LOT = '{vdata.VLOT}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_WMS_Where_MFG]) //221013 + { + if (vdata.MFGDATE_Trust && vdata.MFGDATE.isEmpty() == false) wheres.Add($"MFG_DATE = '{vdata.MFGDATE}'"); + else Apply = false; + } + + //데이터가 완성되었다면 처리하지 않는다. + bool DataOK = true; + foreach (var data in fields) + { + var column = data.ToLower(); + if (DataOK && column.Equals("sid") && (vdata.SID.isEmpty() || vdata.SID_Trust == false)) DataOK = false; + else if (DataOK && column.Equals("part_no") && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust)) DataOK = false; + else if (DataOK && column.Equals("mfg_data") && (vdata.MFGDATE.isEmpty() || vdata.MFGDATE_Trust)) DataOK = false; + else if (DataOK && column.Equals("vendor_nm") && (vdata.VNAME.isEmpty() || vdata.VNAME_Trust)) DataOK = false; + else if (DataOK && column.Equals("batch_no") && (vdata.BATCH.isEmpty())) DataOK = false; + else if (DataOK && column.Equals("qty") && (vdata.QTY.isEmpty() || vdata.QTY_Trust)) DataOK = false; + else if (DataOK && column.Equals("cust_code") && (vdata.CUSTCODE.isEmpty())) DataOK = false; + else if (DataOK && column.Equals("vendor_lot") && (vdata.VLOT.isEmpty() || vdata.VLOT_Trust)) DataOK = false; + if (DataOK == false) break; + } + + //if query data . no error + if (DataOK == false && Apply && fields.Count > 0 && wheres.Count > 0) + { + var TableName = "VW_GET_MAX_QTY_VENDOR_LOT"; + var whereState = " where " + string.Join(" and ", wheres); + var selectFields = string.Join(",", fields); + + var SQL = $"select top 1 {selectFields} from {TableName} WITH(NOLOCK) {whereState}"; + var SQLC = $"select count(*) from {TableName} WITH(NOLOCK) {whereState}"; + + //정보가 여러개 존재하면 선택화면으로 처리해야한다 + var cntvalue = (DBHelper.ExecuteScalar(SQLC)?.ToString() ?? "0").toInt(); + if (cntvalue > 1) + { + VAR.STR[eVarString.MULTISID_QUERY] = $"select * from {TableName} WITH(NOLOCK) {whereState}"; + VAR.STR[eVarString.MULTISID_FIELDS] = selectFields; + rlt = EResultKeyence.MultiSID; + } + + if (PUB.Result.ItemDataC.VisionData.LastQueryStringWMS.Equals(SQL) == false) //같은 쿼리는 처리하지 않는다 + { + if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, SQLC)) + NewBarcodeUpdated = true; + + PUB.Result.ItemDataC.VisionData.LastQueryStringWMS = SQL; + } + + } + return (NewBarcodeUpdated, rlt); + } + + //SID정보테이블에서 정보 추출 + bool BCDProcess_FindSIDInfo(Class.JobData itemC) + { + Boolean Apply = true; + bool NewBarcodeUpdated = false; + var vdata = itemC.VisionData; + + //select columns + List fields = new List(); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CustCode"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PartNo"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("PrintPosition"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VenderName"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("batch"); //220921 + if (VAR.BOOL[eVarBool.Opt_SID_Apply_qty] && (vdata.SID_Trust == false || vdata.QTYMAX.isEmpty())) fields.Add("qtymax"); //220921 + fields.Add("attach"); //231026 + + //where coluns + List wheres = new List(); + //wheres.Add($"MC='{COMM.SETTING.Data.McName}"); + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_CustCode]) + { + if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CustCode='{vdata.CUSTCODE.PadLeft(10, '0')}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_PartNo]) + { + if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PartNo='{vdata.PARTNO}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_SID]) + { + if (VAR.BOOL[eVarBool.Opt_SIDConvert]) //if sid convert logic + { + if (vdata.SID_Trust && vdata.SID0.isEmpty() == false && vdata.SID.isEmpty() == false) + wheres.Add($"SID='{vdata.SID}'"); + else Apply = false; + } + else + { + if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'"); + else Apply = false; + } + } + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) //221013 + { + if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) + wheres.Add($"(VenderLot like '{vdata.VLOT}' or VenderLot like '%,{vdata.VLOT}' or VenderLot like '{vdata.VLOT},%' or VenderLot like '%,{vdata.VLOT},%')"); + else Apply = false; + } + + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_MC]) //231006 + { + if (AR.SETTING.Data.McName.isEmpty() == false) + wheres.Add($"attach='{AR.SETTING.Data.McName}'"); + else Apply = false; + } + + //if query data . no error + if (Apply && fields.Count > 0 && wheres.Count > 0) + { + + var mcname = SETTING.Data.McName; + if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode; + + var SQL = "select top 1 " + string.Join(",", fields) + + " from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" + + " where mc='" + mcname + "' and " + string.Join(" and ", wheres) + + " order by wdate desc"; + + var SQLC = "select count(*)" + + " from K4EE_Component_Reel_SID_Information WITH(NOLOCK)" + + " where mc='" + mcname + "' and " + string.Join(" and ", wheres); + + if (PUB.Result.ItemDataC.VisionData.LastQueryStringSID.Equals(SQL) == false) + { + if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, SQLC) == true) + NewBarcodeUpdated = true; + + PUB.Result.ItemDataC.VisionData.LastQueryStringSID = SQL; + } + } + return NewBarcodeUpdated; + } + + //시드변환정보에서 정보 추출 + bool BCDProcess_FindSIDConv(Class.JobData itemC) + { + Boolean Apply = true; + bool NewBarcodeUpdated = false; + var vdata = itemC.VisionData; + + //select columns + List fields = new List(); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CustCode"); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PartNo"); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("PrintPosition"); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VenderName"); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID"); + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_Batch] && (vdata.SID_Trust == false || vdata.BATCH.isEmpty())) fields.Add("batch"); //220921 + if (VAR.BOOL[eVarBool.Opt_Conv_Apply_QtyMax] && (vdata.SID_Trust == false || vdata.QTYMAX.isEmpty())) fields.Add("qtymax"); //220921 + + + //where coluns + List wheres = new List(); + //wheres.Add($"MC='{COMM.SETTING.Data.McName}"); + if (Apply && VAR.BOOL[eVarBool.Opt_Conv_Where_CustCode]) + { + if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CustCode='{vdata.CUSTCODE.PadLeft(10, '0')}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_Conv_Where_PartNo]) + { + if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PartNo='{vdata.PARTNO}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_Conv_Where_SID]) + { + if (VAR.BOOL[eVarBool.Opt_SIDConvert]) //if sid convert logic + { + if (vdata.SID_Trust && vdata.SID0.isEmpty() == false && vdata.SID.isEmpty() == false) + wheres.Add($"SIDTo='{vdata.SID}'"); + else Apply = false; + } + else + { + if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SIDTo='{vdata.SID}'"); + else Apply = false; + } + } + if (VAR.BOOL[eVarBool.Opt_Conv_Where_VLOT]) //221013 + { + if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) + wheres.Add($"(VenderLot like '{vdata.VLOT}' or VenderLot like '%,{vdata.VLOT}' or VenderLot like '{vdata.VLOT},%' or VenderLot like '%,{vdata.VLOT},%')"); + else Apply = false; + } + + + //if query data . no error + if (Apply && fields.Count > 0 && wheres.Count > 0) + { + + var mcname = SETTING.Data.McName; + if (VAR.BOOL[eVarBool.Use_Conveyor]) mcname = PUB.MCCode; + + var SQL = "select top 1 " + string.Join(",", fields) + + " from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" + + " where " + string.Join(" and ", wheres) + + " order by wdate desc"; + + var SQLC = "select count(*)" + + " from K4EE_Component_Reel_SID_Convert WITH(NOLOCK)" + + " where " + string.Join(" and ", wheres); + + if (PUB.Result.ItemDataC.VisionData.LastQueryStringCNV.Equals(SQL) == false) + { + if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, SQLC) == true) + NewBarcodeUpdated = true; + + PUB.Result.ItemDataC.VisionData.LastQueryStringCNV = SQL; + } + } + return NewBarcodeUpdated; + } + + //기존 작업에서 데이터를 찾아서 쓴다 + bool BCDProcess_FindJobData(Class.JobData itemC) + { + bool NewBarcodeUpdated = false; + Boolean Apply = true; + var vdata = itemC.VisionData; + + //select columns + List fields = new List(); + + if (VAR.BOOL[eVarBool.Opt_Job_Apply_CustCode] && vdata.CUSTCODE.isEmpty()) fields.Add("CUSTCODE"); + if (VAR.BOOL[eVarBool.Opt_Job_Apply_PartNo] && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust == false)) fields.Add("PARTNO"); + if (VAR.BOOL[eVarBool.Opt_Job_Apply_PrintPos] && vdata.PrintPositionData.isEmpty()) fields.Add("POS"); + if (VAR.BOOL[eVarBool.Opt_Job_Apply_VenderName] && (vdata.VNAME_Trust == false || vdata.VNAME.isEmpty())) fields.Add("VNAME"); + if (VAR.BOOL[eVarBool.Opt_Job_Apply_SID] && (vdata.SID_Trust == false || vdata.SID.isEmpty())) fields.Add("SID"); + + //where coluns + List wheres = new List(); + if (VAR.BOOL[eVarBool.Opt_Job_Where_CustCode]) + { + if (vdata.CUSTCODE.isEmpty() == false) wheres.Add($"CUSTCODE='{vdata.CUSTCODE.PadLeft(10, '0')}'"); + else Apply = false; + } + if (VAR.BOOL[eVarBool.Opt_Job_Where_PartNo]) + { + if (vdata.PARTNO_Trust && vdata.PARTNO.isEmpty() == false) wheres.Add($"PARTNO='{vdata.PARTNO}'"); + else Apply = false; + } + if (VAR.BOOL[eVarBool.Opt_Job_Where_SID]) + { + if (vdata.SID_Trust && vdata.SID.isEmpty() == false) wheres.Add($"SID='{vdata.SID}'"); + else Apply = false; + } + if (VAR.BOOL[eVarBool.Opt_Job_Where_VLOT]) + { + if (vdata.VLOT_Trust && vdata.VLOT.isEmpty() == false) wheres.Add($"VenderLot='{vdata.VLOT}'"); + else Apply = false; + } + + //if query data . no error + if (Apply && fields.Count > 0 && wheres.Count > 0) + { + PUB.log.Add($"DATABAES : RESULT QUERY"); + + var SQL = "select top 1 " + string.Join(",", fields) + + " from K4EE_Component_Reel_Result WITH(NOLOCK) " + + $" where mc = '{AR.SETTING.Data.McName}'" + + $" and prnattach = 1 and stime >= '{DateTime.Now.AddHours(-3).ToString("yyyy-MM-dd HH:mm:ss")}'" + + $" and " + string.Join(" and ", wheres) + + $" order by wdate desc"; + + if (PUB.Result.ItemDataC.VisionData.LastQueryStringJOB.Equals(SQL) == false) + { + if (PUB.GetSIDInfo_And_SetData(fields, ref vdata, SQL, "")) + NewBarcodeUpdated = true; + + PUB.Result.ItemDataC.VisionData.LastQueryStringJOB = SQL; + } + } + return NewBarcodeUpdated; + } + + void BCDProcess_SIDConvert(Class.JobData itemC) + { + var vdata = itemC.VisionData; + //원본시드(sid0)가 비어있는데 sid과 확정되었다면 변환작업을 진행한다 + if (vdata.SID0.isEmpty() && vdata.SID.isEmpty() == false && vdata.SID_Trust) + { + //이 sid가 존재여부확인 후 없는 sid라면 더이상 처리하지 않는다 230510 + if (PUB.Result.DTSidConvertEmptyList.Contains(vdata.SID)) + { + //존재하지 않는 SID로 이미 확인되었다 + } + else if (PUB.Result.DTSidConvertMultiList.Contains(vdata.SID)) + { + //다중sid로 인해 처리하지 않는다 + } + else + { + var newsid = PUB.SIDCovert(vdata.SID, "SPS_BarcodeProcess", out bool converr); + if (converr) + { + if (PUB.sm.Step == eSMStep.RUN) + PUB.log.AddE(newsid); + } + else + { + vdata.SID0 = vdata.SID; + vdata.SID = newsid; + } + } + } + } + //Generate Reel ID + void BCDProcess_MakeReelID(Class.JobData itemC) + { + if (itemC.VisionData.RIDNew == false && itemC.VisionData.SID.isEmpty() == false) + { + var newid = PUB.MakeNewREELID(itemC.VisionData.SID);// Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(itemC.VisionData.CUSTCODE, "4", "A", out string errmsg); + if (newid.success == true) + { + //backup origin reel id + itemC.VisionData.RID0 = itemC.VisionData.RID; + + //set new reel id + PUB.log.Add("new reelid bacodeprecess"); + itemC.VisionData.SetRID(newid.newid, "SPS:CHKDATACOMPLETE");// = newid; + itemC.VisionData.RIDNew = true; //applied new reel id + + //서버의수량업데이트기능이 켜져있다면 해당 값을 제거해준다. (다시 조회되도록 함) + if (VAR.BOOL[eVarBool.Opt_ServerQty]) + { + //이미 수량업데이트된 경우이므로 복원시켜준다 + if (itemC.VisionData.QTY0.isEmpty() == false) + { + PUB.log.AddAT($"릴아이디 변경으로 인해 수량을 복원합니다({itemC.VisionData.QTY}->{itemC.VisionData.QTY0})"); + itemC.VisionData.QTY = itemC.VisionData.QTY0; + itemC.VisionData.QTY0 = string.Empty; + } + } + } + else + { + var logtime = VAR.TIME.RUN((int)eVarTime.LOG_NEWIDERROR); + if (logtime.TotalSeconds >= 3000) + { + PUB.log.AddAT($"Reel_ID 생성실패 : {newid.message}"); + VAR.TIME.Update(eVarTime.LOG_NEWIDERROR); + } + } + } + } + } +} \ No newline at end of file diff --git a/Handler/Project/Util/Util_DO.cs b/Handler/Project/Util/Util_DO.cs new file mode 100644 index 0000000..be1275f --- /dev/null +++ b/Handler/Project/Util/Util_DO.cs @@ -0,0 +1,914 @@ +using System; +using System.Collections; +using System.Data; +using System.Linq; +using AR; + +namespace Project +{ + public class PindefineI + { + public int idx { get; set; } + public string description { get; set; } + public int terminalno { get; set; } + public string Title { get; set; } + public bool Invert { get; set; } + public PindefineI(eDIName pin) + { + idx = (int)pin; + Title = pin.ToString(); + terminalno = (int)pin; + Invert = false; + } + public string name { get { return $"X{idx:X2}"; } } + } + public class PindefineO + { + public int idx { get; set; } + public string description { get; set; } + public int terminalno { get; set; } + public string Title { get; set; } + public PindefineO(eDOName pin) + { + idx = (int)pin; + Title = pin.ToString(); + terminalno = (int)pin; + } + public string name { get { return $"Y{idx:X2}"; } } + } + public class PinList + { + public PindefineI[] input { get; set; } + public PindefineO[] output { get; set; } + + /// + /// 입력포트 목록을 반환합니다. + /// 실제 터미널 번호에 매칭되는 이름으로 반환합니다. + /// + public string[] GetDIName + { + get + { + return input.OrderBy(t => t.terminalno).ToList().Select(t => t.Title).ToArray(); + } + } + + public string[] GetDIPinName + { + get + { + return input.OrderBy(t => t.idx).ToList().Select(t => t.name).ToArray(); + } + } + + /// + /// 입력포트 목록을 반환합니다. + /// 실제 터미널 번호에 매칭되는 이름으로 반환합니다. + /// + public string[] GetDOName + { + get + { + return output.OrderBy(t => t.terminalno).ToList().Select(t => t.Title).ToArray(); + } + } + public string[] GetDOPinName + { + get + { + return output.OrderBy(t => t.idx).ToList().Select(t => t.name).ToArray(); + } + } + public PindefineI this[eDIName pin] + { + get + { + return input[(int)pin]; + } + } + public PindefineO this[eDOName pin] + { + get + { + return output[(int)pin]; + } + } + public Boolean SetInputData(DataSet1.InputDescriptionDataTable dt) + { + bool retval = true; + var names = Enum.GetNames(typeof(eDIPin)); + if (this.input == null) //초기데이터생성 + { + this.input = new PindefineI[names.Length]; + for (int i = 0; i < input.Length; i++) + input[i] = new PindefineI((eDIName)i); + } + + if (dt.Any()) + { + foreach (DataSet1.InputDescriptionRow dr in dt) + { + if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Detached) continue; + var item = this.input[dr.Idx]; + if (dr.IsDescriptionNull() == false) item.description = dr.Description; + if (dr.IsTerminalNoNull() == false && dr.TerminalNo >= 0) item.terminalno = dr.TerminalNo; + } + } + return retval; + + } + + public Boolean SetOutputData(DataSet1.OutputDescriptionDataTable dt) + { + bool retval = true; + var names = Enum.GetNames(typeof(eDOPin)); + if (this.output == null) //초기데이터새엇ㅇ + { + this.output = new PindefineO[names.Length]; + for (int i = 0; i < output.Length; i++) + output[i] = new PindefineO((eDOName)i); + } + if (dt.Any()) + { + foreach (DataSet1.OutputDescriptionRow dr in dt) + { + if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Detached) continue; + var item = this.output[dr.Idx]; + if (dr.IsDescriptionNull() == false) item.description = dr.Description; + if (dr.IsTerminalNoNull() == false && dr.TerminalNo >= 0) item.terminalno = dr.TerminalNo; + } + } + return retval; + } + + public bool CheckData() + { + return false; + } + } + + + public static partial class DIO + { + public static PinList Pin { get; set; } + static int GetPinTerminal(eDIName pin) + { + var pindef = Pin[pin]; + return pindef.terminalno; + } + static int GetPinTerminal(eDOName pin) + { + var pindef = Pin[pin]; + return pindef.terminalno; + } + + public static void InitDIOSensitive() + { + //인식 딜레이를 건다 + PUB.dio.SetInputSensitivity(0, 0); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.PORTL_DET_UP), AR.SETTING.Data.PortDetectFall, AR.SETTING.Data.PortDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.PORTC_DET_UP), AR.SETTING.Data.PortDetectFall, AR.SETTING.Data.PortDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.PORTR_DET_UP), AR.SETTING.Data.PortDetectFall, AR.SETTING.Data.PortDetectRise); + + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.BUT_AIRF), AR.SETTING.Data.AirChange, AR.SETTING.Data.AirChange); + + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.DOORF1), AR.SETTING.Data.SaftyDetectFall, AR.SETTING.Data.SaftyDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.DOORF2), AR.SETTING.Data.SaftyDetectFall, AR.SETTING.Data.SaftyDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.DOORF3), AR.SETTING.Data.SaftyDetectFall, AR.SETTING.Data.SaftyDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.DOORR1), AR.SETTING.Data.SaftyDetectFall, AR.SETTING.Data.SaftyDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.DOORR2), AR.SETTING.Data.SaftyDetectFall, AR.SETTING.Data.SaftyDetectRise); + PUB.dio.SetInputSensitivity(GetPinTerminal(eDIName.DOORR3), AR.SETTING.Data.SaftyDetectFall, AR.SETTING.Data.SaftyDetectRise); + + PUB.log.AddAT("DIO Sensor Sensitivity Setting"); + } + + + + /// + /// 지정한 출력핀의 상태를 변경하고 최대 10초간 상태를 모니터링 합니다. + /// + /// + /// + /// + /// + /// + /// + /// + public static eNormalResult checkDigitalO(eDOName doPin, TimeSpan stepTime, Boolean checkValue, int sendIntervalMs = 1000, int timeoutSec = 0, bool raiseerror = true) + { + + //eIOCheckResult result = eIOCheckResult.Complete; + eNormalResult retval = eNormalResult.False; + if (timeoutSec == 0) timeoutSec = AR.SETTING.Data.Timeout_DIOCommand; + + + //지정한 출력핀이 조건에 맞지 않을 경우ㅍ + var curValue = DIO.GetIOOutput(doPin); + if (curValue != checkValue) + { + //Offt신호는 1초에 1번씩 전송하게 한다. + var ts = DateTime.Now - PUB.Result.doCheckTime[(int)doPin]; + if (ts.TotalMilliseconds >= sendIntervalMs) + { + SetOutput(doPin, checkValue); + PUB.Result.doCheckTime[(int)doPin] = DateTime.Now; + } + + //전체 시간이 10초를 넘어가면 오류로 처리함 + if (stepTime.TotalSeconds >= timeoutSec) + { + if (raiseerror) + PUB.Result.SetResultTimeOutMessage(doPin, checkValue, eNextStep.PAUSE); + + retval = eNormalResult.Error; + } + } + else retval = eNormalResult.True; + return retval; + } + + public static eNormalResult checkDigitalO(eDIName doPin, TimeSpan stepTime, Boolean checkValue, int timeoutSec = 0, bool raiseerror = true, eECode timeoutcode = eECode.NOTSET + ) + { + //eIOCheckResult result = eIOCheckResult.Complete; + var retval = eNormalResult.False; + if (timeoutSec == 0) timeoutSec = (int)AR.SETTING.Data.Timeout_DIOCommand; + + //지정한 출력핀이 조건에 맞지 않을 경우ㅍ + var curValue = DIO.GetIOInput(doPin); + if (curValue != checkValue) + { + //전체 시간이 10초를 넘어가면 오류로 처리함 + //var diRunTime = DateTime.Now - Pub.Result.diCheckTime[shutIdx, (int)doPin]; + if (stepTime.TotalSeconds >= timeoutSec) + { + if (raiseerror) + { + if (timeoutcode == eECode.NOTSET) + PUB.Result.SetResultTimeOutMessage(doPin, checkValue, eNextStep.PAUSE); + else + PUB.Result.SetResultMessage(eResult.SENSOR, timeoutcode, eNextStep.PAUSE, doPin); + } + retval = eNormalResult.Error; + } + } + else retval = eNormalResult.True; + return retval; + } + + + public static Boolean IsEmergencyOn() + { + //둘중 하나라도 켜져있드면 비상 상태이다 + var b1 = GetIOInput(eDIName.BUT_EMGF); + return b1; + } + + /// + /// 감지센서확인 + /// + /// + public static int isVacOKL() + { + var cnt = 0; + if (GetIOOutput(eDOName.PICK_VAC1)) cnt += 1; + if (GetIOOutput(eDOName.PICK_VAC2)) cnt += 1; + if (GetIOOutput(eDOName.PICK_VAC3)) cnt += 1; + if (GetIOOutput(eDOName.PICK_VAC4)) cnt += 1; + return cnt; + } + + /// + /// 포트에 장작된 카트의 크기를 반환합니다. 없는경우 0, 7,13 입니다. + /// + /// Port Index(left=0, Center=1, Right=2) + /// + public static eCartSize getCartSize(int idx) + { + var s07 = false; + var s13 = false; + + + //컨베어모드에서는 무조건 중앙크기와 동일하게 한다 (오류나지않게) + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + s07 = DIO.GetIOInput(eDIName.PORT1_SIZE_07); + s13 = DIO.GetIOInput(eDIName.PORT1_SIZE_13); + } + else + { + if (idx == 0) + { + + s07 = DIO.GetIOInput(eDIName.PORT0_SIZE_07); + s13 = DIO.GetIOInput(eDIName.PORT0_SIZE_13); + } + else if (idx == 1) + { + s07 = DIO.GetIOInput(eDIName.PORT1_SIZE_07); + s13 = DIO.GetIOInput(eDIName.PORT1_SIZE_13); + } + else + { + s07 = DIO.GetIOInput(eDIName.PORT2_SIZE_07); + s13 = DIO.GetIOInput(eDIName.PORT2_SIZE_13); + } + } + + + if (s07 == false && s13 == false) return eCartSize.None; + else if (s13 == true) return eCartSize.Inch13; + else return eCartSize.Inch7; + } + + + /// + /// * 입력값을 확인합니다 + /// + /// + /// + public static Boolean GetIOInput(eDIName pin) + { + var pindef = Pin[pin]; + var curValue = PUB.dio.GetDIValue(pindef.terminalno); + + //B접점으로 쓸 것들만 반전 시킨다. + if (pindef.Invert) + { + curValue = !curValue; + } + else if (pin == eDIName.BUT_EMGF) + { + if (SETTING.System.ReverseSIG_Emgergency) curValue = !curValue; + } + else if (pin == eDIName.PICKER_SAFE) + { + if (SETTING.System.ReverseSIG_PickerSafe) curValue = !curValue; + } + else if (pin == eDIName.BUT_AIRF) + { + if (SETTING.System.ReverseSIG_ButtonAir) curValue = !curValue; + } + else if (pin == eDIName.DOORF1 || pin == eDIName.DOORF2 || pin == eDIName.DOORF3) + { + if (SETTING.System.ReverseSIG_DoorF) curValue = !curValue; + } + else if (pin == eDIName.DOORR1 || pin == eDIName.DOORR2 || pin == eDIName.DOORR3) + { + if (SETTING.System.ReverseSIG_DoorR) curValue = !curValue; + } + else if (pin == eDIName.AIR_DETECT) + { + if (SETTING.System.ReverseSIG_AirCheck) curValue = !curValue; + } + else if (pin == eDIName.PORTL_LIM_UP || pin == eDIName.PORTC_LIM_UP || pin == eDIName.PORTR_LIM_UP) + { + if (SETTING.System.ReverseSIG_PortLimitUp) curValue = !curValue; + } + else if (pin == eDIName.PORTL_LIM_DN || pin == eDIName.PORTC_LIM_DN || pin == eDIName.PORTR_LIM_DN) + { + if (SETTING.System.ReverseSIG_PortLimitDn) curValue = !curValue; + } + else if (pin == eDIName.PORTL_DET_UP) + { + if (SETTING.System.ReverseSIG_PortDetect0Up) curValue = !curValue; + } + else if (pin == eDIName.PORTC_DET_UP) + { + if (SETTING.System.ReverseSIG_PortDetect1Up) curValue = !curValue; + } + else if (pin == eDIName.PORTR_DET_UP) + { + if (SETTING.System.ReverseSIG_PortDetect2Up) curValue = !curValue; + } + else if (pin == eDIName.L_CONV1 || pin == eDIName.L_CONV4) + curValue = !curValue; + else if (pin == eDIName.R_CONV1 || pin == eDIName.R_CONV4) + curValue = !curValue; + return curValue; + } + + /// + /// * 출력값을 확인합니다. + /// + /// + /// + public static Boolean GetIOOutput(eDOName pin) + { + var pindef = Pin[pin]; + return PUB.dio.GetDOValue(pindef.terminalno); + } + + /// + /// 포트내의 안전센서 여부 + /// + /// + public static Boolean isSaftyDoorF(Boolean RealSensor = false) + { + //모든 포트가 안전해야 전체가 안전한것이다 + return isSaftyDoorF(0, RealSensor) && isSaftyDoorF(1, RealSensor) && isSaftyDoorF(2, RealSensor); + } + public static Boolean isSaftyDoorR(Boolean RealSensor = false) + { + //모든 포트가 안전해야 전체가 안전한것이다 + return isSaftyDoorR(0, RealSensor) && isSaftyDoorR(1, RealSensor) && isSaftyDoorR(2, RealSensor); + } + + + public static Boolean isSaftyDoorF(int idx, Boolean RealSensor) + { + //비활성화한경우 참 반환 + if (RealSensor) + { + if (idx == 0) return DIO.GetIOInput(eDIName.DOORF1) == false; + else if (idx == 1) return DIO.GetIOInput(eDIName.DOORF2) == false; + else if (idx == 2) return DIO.GetIOInput(eDIName.DOORF3) == false; + } + else + { + if (idx == 0) + { + if (SETTING.System.Disable_safty_F0) return true; + else return DIO.GetIOInput(eDIName.DOORF1) == false; + } + else if (idx == 1) + { + if (AR.SETTING.System.Disable_safty_F1) return true; + else return DIO.GetIOInput(eDIName.DOORF2) == false; + } + else if (idx == 2) + { + if (AR.SETTING.System.Disable_safty_F2) return true; + else return DIO.GetIOInput(eDIName.DOORF3) == false; + } + } + return false; + } + + public static Boolean isSaftyDoorR(int idx, Boolean RealSensor) + { + if (RealSensor == false && idx == 0 && AR.SETTING.System.Disable_safty_R0 == true) return true; + else if (RealSensor == false && idx == 1 && AR.SETTING.System.Disable_safty_R1 == true) return true; + else if (RealSensor == false && idx == 2 && AR.SETTING.System.Disable_safty_R2 == true) return true; + else if (idx == 0 && DIO.GetIOInput(eDIName.DOORR1) == false) return true; + else if (idx == 1 && DIO.GetIOInput(eDIName.DOORR2) == false) return true; + else if (idx == 2 && DIO.GetIOInput(eDIName.DOORR3) == false) return true; + else return false; + } + + private static DateTime RoomLightControlTime = DateTime.Now; + public static Boolean SetRoomLight(Boolean on, bool force = false) + { + if (on == true && AR.SETTING.Data.Disable_RoomLight == true && force == false) + { + PUB.log.Add("Disabled:ROOM Light"); + SetOutput(eDOName.ROOMLIGHT, false);// PUB.dio.SetOutput(Pin[eDOName.ROOMLIGHT].terminalno, false); + return true; //200708 + } + + //형광등은 너무 빠른 제어는 하지 않는다 + var ts = DateTime.Now - RoomLightControlTime; + if (ts.TotalMilliseconds < 500) return false; + RoomLightControlTime = DateTime.Now; + return SetOutput(eDOName.ROOMLIGHT, on);// PUB.dio.SetOutput(Pin[eDOName.ROOMLIGHT].terminalno, on); + } + public static Boolean SetAIR(Boolean ON) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + return SetOutput(eDOName.SOL_AIR, ON);//return PUB.dio.SetOutput(Pin[eDOName.SOL_AIR].terminalno, ON); + + } + + /// + /// * 출력을 변경 합니다 + /// + /// + /// + /// + public static Boolean SetOutput(eDOName pin, Boolean value) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + var pindef = Pin[pin]; + return PUB.dio.SetOutput(pindef.terminalno, value); + } + + public static bool GetPortMotorRun(int index) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + if (index < 0 || index > 3) throw new Exception("Port number must be entered between (0~2)"); + + Boolean b1 = false; + + eDOName Pin_Dir = eDOName.PORTL_MOT_RUN; + if (index == 1) Pin_Dir = eDOName.PORTC_MOT_RUN; + else if (index == 2) Pin_Dir = eDOName.PORTR_MOT_RUN; + + //direction을 먼저 전송한다 + b1 = DIO.GetIOOutput(Pin_Dir); + return b1; + } + + public static eMotDir GetPortMotorDir(int index) + { + if (PUB.dio == null || !PUB.dio.IsInit) return eMotDir.CW; + if (index < 0 || index > 3) throw new Exception("Port number must be entered between (0~2)"); + + Boolean b1 = false; + + eDOName Pin_Dir = eDOName.PORTL_MOT_DIR; + if (index == 1) Pin_Dir = eDOName.PORTC_MOT_DIR; + else if (index == 2) Pin_Dir = eDOName.PORTR_MOT_DIR; + + //direction을 먼저 전송한다 + b1 = DIO.GetIOOutput(Pin_Dir); + if (b1 == false) return eMotDir.CW; + else return eMotDir.CCW; + } + + public static Boolean SetPortMagnet(int index, Boolean on) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + + //기능적용 2100129 + if (on == true) + { + if (index == 0 && AR.SETTING.Data.Enable_Magnet0 == false) return true; + if (index == 1 && AR.SETTING.Data.Enable_Magnet1 == false) return true; + if (index == 2 && AR.SETTING.Data.Enable_Magnet2 == false) return true; + } + + if (index == 0) return DIO.SetOutput(eDOName.PORTL_MAGNET, on); + else if (index == 1) return DIO.SetOutput(eDOName.PORTC_MAGNET, on); + else return DIO.SetOutput(eDOName.PORTR_MAGNET, on); + } + /// + /// CW = Up, CCW = Dn + /// + /// + /// + /// + /// + public static Boolean SetPortMotor(int index, eMotDir Dir, Boolean run, string remark, Boolean smalldown = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + + //Pub.log.AddI($"포트모터({index}) {(Dir == eMotDir.CW ? "(정)" : "(역)")}방향 : {(run ? "O" : "X")} => {remark}"); + + + Boolean b1, b2; b1 = b2 = false; + + eDOName Pin_Dir, Pin_Run; + eDIName pin_limp, pin_limn; + + if (index == 0) Pin_Dir = eDOName.PORTL_MOT_DIR; + else if (index == 1) Pin_Dir = eDOName.PORTC_MOT_DIR; + else Pin_Dir = eDOName.PORTR_MOT_DIR; + + if (index == 0) Pin_Run = eDOName.PORTL_MOT_RUN; + else if (index == 1) Pin_Run = eDOName.PORTC_MOT_RUN; + else Pin_Run = eDOName.PORTR_MOT_RUN; + + if (index == 0) pin_limp = eDIName.PORTL_LIM_UP; + else if (index == 1) pin_limp = eDIName.PORTC_LIM_UP; + else pin_limp = eDIName.PORTR_LIM_UP; + + if (index == 0) pin_limn = eDIName.PORTL_LIM_DN; + else if (index == 1) pin_limn = eDIName.PORTC_LIM_DN; + else pin_limn = eDIName.PORTR_LIM_DN; + + //direction을 먼저 전송한다 + if (run) + { + + //b2 = Pub.dio.SetOutput(Pin_Dir, Dir != eMotDir.CW); + //System.Threading.Thread.Sleep(5); + + //켜야하는 상황인데.. 리밋이 걸렸다면 처리하지 않는다 + if (Dir == eMotDir.CW && DIO.GetIOInput(pin_limp) == true) + { + PUB.log.AddI(string.Format("Ignoring output for port({0}) (LIMIT_UP) direction:{1}", index, Dir)); + b1 = true; + } + else if (Dir == eMotDir.CCW && DIO.GetIOInput(pin_limn) == true) + { + PUB.log.AddI(string.Format("Ignoring output for port({0}) (LIMIT_DN) direction:{1}", index, Dir)); + b1 = true; + } + else + { + if (smalldown) + { + if (index == 0) + { + PUB.flag.set(eVarBool.FG_PORT0_ENDDOWN, true, remark + ":SETPORT"); + VAR.TIME.Update(eVarTime.PORT0); //내린시간 + } + if (index == 1) + { + PUB.flag.set(eVarBool.FG_PORT1_ENDDOWN, true, remark + ":SETPORT"); + VAR.TIME.Update(eVarTime.PORT1); //내린시간 + } + if (index == 2) + { + PUB.flag.set(eVarBool.FG_PORT2_ENDDOWN, true, remark + ":SETPORT"); + VAR.TIME.Update(eVarTime.PORT2); //내린시간 + } + PUB.log.AddAT(string.Format("P{0} Small Down Active Dir={1}", index, Dir)); + } + else + { + //다른곳에서 이동을 설정해버리면 sdmall down 기능을 없앤다 -- 210405 + if (index == 0 && PUB.flag.get(eVarBool.FG_PORT0_ENDDOWN) == true) + { + PUB.flag.set(eVarBool.FG_PORT0_ENDDOWN, false, remark + ":SETPORT"); + PUB.log.AddAT("P0 Small Down Ignore"); + } + if (index == 1 && PUB.flag.get(eVarBool.FG_PORT1_ENDDOWN) == true) + { + PUB.flag.set(eVarBool.FG_PORT1_ENDDOWN, false, remark + ":SETPORT"); + PUB.log.AddAT("P1 Small Down Ignore"); + } + if (index == 2 && PUB.flag.get(eVarBool.FG_PORT2_ENDDOWN) == true) + { + PUB.flag.set(eVarBool.FG_PORT2_ENDDOWN, false, remark + ":SETPORT"); + PUB.log.AddAT("P2 Small Down Ignore"); + } + } + + //방향전환을 해야한다면 우선 정지 후 500ms 대기한다 + if (DIO.GetPortMotorDir(index) != Dir) + { + //일단 멈춤고 + b1 = SetOutput(Pin_Run, false);// PUB.dio.SetOutput(Pin_Run, false); + System.Threading.Thread.Sleep(20); + + //방향전환 ON + b2 = SetOutput(Pin_Dir, Dir != eMotDir.CW); + System.Threading.Thread.Sleep(20); + + //모터 가동 + b1 = SetOutput(Pin_Run, run); + System.Threading.Thread.Sleep(20); + } + else + { + //방향전환을 하지 않는 경우 + + //모터 가동 + b2 = true; + b1 = SetOutput(Pin_Run, run); + System.Threading.Thread.Sleep(20); + } + + //b1 = Pub.dio.SetOutput(Pin_Run, run); + } + } + else + { + //동작을 먼저 끈다 + b1 = SetOutput(Pin_Run, run); + System.Threading.Thread.Sleep(20); + + //방향핀을 끈다 + b2 = SetOutput(Pin_Dir, false); + System.Threading.Thread.Sleep(20); + } + + + //System.Threading.Thread.Sleep(5); + return b1 && b2; + } + + public static Boolean SetPrintLAir(bool run, bool force = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + if (force == false && AR.SETTING.Data.Disable_PLAir == true) run = false; + return SetOutput(eDOName.PRINTL_AIRON, run); + } + public static Boolean SetPrintRAir(bool run, bool force = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + if (force == false && AR.SETTING.Data.Disable_PRAir == true) run = false; + return SetOutput(eDOName.PRINTR_AIRON, run); + } + + + public static Boolean SetPrintLVac(ePrintVac run, bool force = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + if (force == false && AR.SETTING.Data.Disable_PLVac == true) run = ePrintVac.off; + bool b1, b2; + if (run == ePrintVac.inhalation) + { + //흡기 + b1 = DIO.SetOutput(eDOName.PRINTL_VACO, false); + b2 = DIO.SetOutput(eDOName.PRINTL_VACI, true); + } + else if (run == ePrintVac.exhaust) + { + //배기 + b1 = DIO.SetOutput(eDOName.PRINTL_VACI, false); + b2 = DIO.SetOutput(eDOName.PRINTL_VACO, true); + } + else + { + //끄기 + b1 = DIO.SetOutput(eDOName.PRINTL_VACO, false); + b2 = DIO.SetOutput(eDOName.PRINTL_VACI, false); + } + return b1 && b2; + } + public static Boolean SetPrintRVac(ePrintVac run, bool force = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + if (force == false && AR.SETTING.Data.Disable_PRVac == true) run = ePrintVac.off; + bool b1, b2; + if (run == ePrintVac.inhalation) + { + //흡기 + b1 = DIO.SetOutput(eDOName.PRINTR_VACO, false); + b2 = DIO.SetOutput(eDOName.PRINTR_VACI, true); + } + else if (run == ePrintVac.exhaust) + { + //배기 + b1 = DIO.SetOutput(eDOName.PRINTR_VACI, false); + b2 = DIO.SetOutput(eDOName.PRINTR_VACO, true); + } + else + { + //끄기 + b1 = DIO.SetOutput(eDOName.PRINTR_VACO, false); + b2 = DIO.SetOutput(eDOName.PRINTR_VACI, false); + } + return b1 && b2; + } + public static Boolean SetPickerVac(Boolean run, Boolean force = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + // Pub.log.Add("[F] 진공 : " + run.ToString()); + bool b1, b2, b3, b4; + //if (COMM.SETTING.Data.Disable_vacum) run = false; + if (run) + { + if (force == true || AR.SETTING.Data.Disable_PKVac == false) + { + b1 = SetOutput(eDOName.PICK_VAC1, true); + b2 = SetOutput(eDOName.PICK_VAC2, true); + b3 = SetOutput(eDOName.PICK_VAC3, true); + b4 = SetOutput(eDOName.PICK_VAC4, true); + } + else + { + b1 = b2 = b3 = b4 = true; + } + } + else + { + b1 = SetOutput(eDOName.PICK_VAC1, false); + b2 = SetOutput(eDOName.PICK_VAC2, false); + b3 = SetOutput(eDOName.PICK_VAC3, false); + b4 = SetOutput(eDOName.PICK_VAC4, false); + if (PUB.flag.get(eVarBool.FG_PK_ITEMON) == true) + { + PUB.flag.set(eVarBool.FG_PK_ITEMON, false, "VACOFF"); + PUB.logDbg.AddI("Picker item flag removed"); + } + + + + } + return b1 & b2 & b3 & b4; + } + + + #region "Tower Lamp" + + /// + /// 타워램프버튼 작업 + /// + /// + /// + /// + public static void SetTWLamp(Boolean bFront, Boolean r, Boolean g, Boolean y) + { + if (PUB.dio == null || !PUB.dio.IsInit) return; + + if (DIO.GetIOOutput(eDOName.TWR_GRNF) != g) SetOutput(eDOName.TWR_GRNF, g); + if (DIO.GetIOOutput(eDOName.TWR_REDF) != r) SetOutput(eDOName.TWR_REDF, r); + if (DIO.GetIOOutput(eDOName.TWR_YELF) != y) SetOutput(eDOName.TWR_YELF, y); + + if (PUB.flag.get(eVarBool.FG_MOVE_PICKER) == true) + { + g = true; + r = true; + if (DIO.GetIOOutput(eDOName.BUT_STARTF) != g) SetOutput(eDOName.BUT_STARTF, g); + if (DIO.GetIOOutput(eDOName.BUT_STOPF) != r) SetOutput(eDOName.BUT_STOPF, r); + } + else + { + if (DIO.GetIOOutput(eDOName.BUT_STARTF) != g) SetOutput(eDOName.BUT_STARTF, g); + if (DIO.GetIOOutput(eDOName.BUT_STOPF) != r) SetOutput(eDOName.BUT_STOPF, r); + } + if (DIO.GetIOOutput(eDOName.BUT_RESETF) != y) SetOutput(eDOName.BUT_RESETF, y); + } + + public static Boolean SetTwRed(Boolean ON) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + SetOutput(eDOName.BUT_STOPF, ON); + return SetOutput(eDOName.TWR_REDF, ON); + + } + public static Boolean SetTwYel(Boolean ON) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + SetOutput(eDOName.BUT_RESETF, ON); + return SetOutput(eDOName.TWR_YELF, ON); + + } + public static Boolean SetTwGrn(Boolean ON) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + SetOutput(eDOName.BUT_STARTF, ON); + return SetOutput(eDOName.TWR_GRNF, ON); + } + + #endregion + + public static Boolean SetBuzzer(Boolean ON, bool force = false) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + if (ON) + { + + if (SETTING.Data.Disable_Buzzer == true && force == false) return true; //Not used when buzzer function is OFF + } + + if (ON && SETTING.Data.Disable_Buzzer == true && force == false) + { + PUB.log.AddAT("buzzer Disabled"); + ON = false; + } + + return SetOutput(eDOName.BUZZER, ON); + } + public static Boolean SetMotPowerOn(Boolean ON) + { + if (PUB.dio == null || !PUB.dio.IsInit) return false; + + var c0 = !DIO.GetIOOutput(eDOName.SVR_PWR_0); + var c1 = !DIO.GetIOOutput(eDOName.SVR_PWR_1); + var c2 = !DIO.GetIOOutput(eDOName.SVR_PWR_2); + var c3 = !DIO.GetIOOutput(eDOName.SVR_PWR_3); + var c4 = !DIO.GetIOOutput(eDOName.SVR_PWR_4); + var c5 = !DIO.GetIOOutput(eDOName.SVR_PWR_5); + var c6 = !DIO.GetIOOutput(eDOName.SVR_PWR_6); + + //꺼져잇는 신호가 하나도 없다면 이번에 끄니깐 메세지를 추가하자 + //if (c0 == false && c0 == c1 && c0 == c2 && c0 == c3 && c0 == c4 && c0 == c5 && c0 == c6) + // Console.WriteLine("mot power off"); + + + bool b0, b1, b2, b3, b4, b5, b6; + b0 = b1 = b2 = b3 = b4 = b5 = b6 = true; + + if (c0 != ON) b0 = SetOutput(eDOName.SVR_PWR_0, !ON); + if (c1 != ON) b1 = SetOutput(eDOName.SVR_PWR_1, !ON); + if (c2 != ON) b2 = SetOutput(eDOName.SVR_PWR_2, !ON); + if (c3 != ON) b3 = SetOutput(eDOName.SVR_PWR_3, !ON); + if (c4 != ON) b4 = SetOutput(eDOName.SVR_PWR_4, !ON); + if (c5 != ON) b5 = SetOutput(eDOName.SVR_PWR_5, !ON); + if (c6 != ON) b6 = SetOutput(eDOName.SVR_PWR_6, !ON); + + return b0 && b1 && b2 && b3 && b4 && b5 && b6; + } + public static Boolean SetMotEmergency(Boolean ON) + { + //if (ON == true) Console.WriteLine("mot emg on"); + if (PUB.dio == null || !PUB.dio.IsInit) return false; + return true; + + //var c0 = DIO.GetIOOutput(eDOName.SVR_EMG_0); + //var c1 = DIO.GetIOOutput(eDOName.SVR_EMG_1); + //var c2 = DIO.GetIOOutput(eDOName.SVR_EMG_2); + //var c3 = DIO.GetIOOutput(eDOName.SVR_EMG_3); + //var c4 = DIO.GetIOOutput(eDOName.SVR_EMG_4); + //var c5 = DIO.GetIOOutput(eDOName.SVR_EMG_5); + //var c6 = DIO.GetIOOutput(eDOName.SVR_EMG_6); + + //bool b0, b1, b2, b3, b4, b5, b6; + //b0 = b1 = b2 = b3 = b4 = b5 = b6 = ON; + + //if (c0 != ON) b0 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_0) - 1, ON); + //if (c1 != ON) b1 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_1) - 1, ON); + //if (c2 != ON) b2 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_2) - 1, ON); + //if (c3 != ON) b3 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_3) - 1, ON); + //if (c4 != ON) b4 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_4) - 1, ON); + //if (c5 != ON) b5 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_5) - 1, ON); + //if (c6 != ON) b6 = PUB.dio.SetOutput(Pin[eDOName.SVR_EMG_6) - 1, ON); + //return b0 && b1 && b2 && b3 && b4 && b5 && b6; + } + + } +} diff --git a/Handler/Project/Util/Util_Mot.cs b/Handler/Project/Util/Util_Mot.cs new file mode 100644 index 0000000..4cb649f --- /dev/null +++ b/Handler/Project/Util/Util_Mot.cs @@ -0,0 +1,627 @@ +#pragma warning disable IDE1006 // 명명 스타일 +using arDev.MOT; +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + public static partial class MOT + { + + /// + /// 상대위치로 모터를 이동합니다 + /// + /// + /// + public static void Rotation(double value,string src) + { + //모터회전 + var thpos = MOT.GetPTPos(ePTLoc.READY); //적용할 속도값용 + MOT.Move(eAxis.Z_THETA, value, thpos.Speed, thpos.Acc, true); + PUB.log.AddI($"Theta Rorate:{value},Reason:{src}"); + } + + public static Boolean CheckMotionLimitError() + { + for (short i = 0; i < PUB.mot.DeviceCount; i++) + { + if (PUB.mot.IsUse(i) == false) continue; //미사용축은 제외한다. + //if (SETTING.System.UseAxis(i) == false) continue; + //if (SETTING.System.UseOriginSignal(i) == false) continue; + if (PUB.mot.IsLimit(i)) return true; + } + return false; + + } + + #region "Check Motion Position" + + public static Boolean CheckMotionPos(TimeSpan stepTime, sPositionData posdata, string source, Boolean useInterLocak = true, int timeoutSec = 0) + { + if (posdata.Axis < 0) throw new Exception("CheckMotionPos:Motion number not found"); + //return CheckMotionPos((eAxis)posdata.Axis, stepTime, posdata.Position, posdata.Speed, posdata.Acc, posdata.Dcc, source, useInterLocak, timeoutSec, posdata.inpositionrange); + return CheckMotionPos((eAxis)posdata.Axis, stepTime, posdata.Position, posdata.Speed, posdata.Acc, posdata.Dcc, source, useInterLocak, timeoutSec, posdata.inpositionrange); + } + + + public static Boolean CheckMotionPos(eAxis Motaxis, TimeSpan stepTime, double pos, double speed, double acc, double dcc, string source, Boolean useInterLocak = true, int timeoutSec = 0, float inpaccr = 0f) + { + var axis = (short)Motaxis; + + //타임아웃 적용 191213 + if (timeoutSec == 0) timeoutSec = AR.SETTING.Data.Timeout_MotionCommand; + + //accr 범위가 지정되잇다며 ㄴ그것을 사용한다 + if (inpaccr == 0f) + inpaccr = 0.1f;// SETTING.System.INPAccurary(axis); + + + //X축을 그립위치까지 이동함 + if (PUB.mot.IsInp(axis) && PUB.mot.IsMotion(axis) == false) + { + var offset = Math.Abs(PUB.mot.GetCmdPos(axis) - pos); + var offsetReal = Math.Abs(PUB.mot.GetCmdPos(axis) - PUB.mot.GetActPos(axis)); + + //커맨드위치는 오차가 없어야 한다 + if (offset > 0.001 || offsetReal > inpaccr) //220214 0.01) + { + //모션을 옴겨야하는 상황인데 최대시간을 초과했다면 오류로 처리한다 + if (timeoutSec != -1 && stepTime.TotalSeconds >= timeoutSec) + { + PUB.Result.SetResultTimeOutMessage(Motaxis, eECode.MOT_CMD, eNextStep.PAUSE, source, pos, PUB.mot.ErrorMessage); + return false; + } + + if (MOT.Move(Motaxis, pos, speed, acc, false, true, useInterLocak) == false) + { + Console.WriteLine("move error {0},pos={1} => {2}", Motaxis, pos, PUB.mot.ErrorMessage); + return false; + } + + //모션을 이동시켰으니 False 처리한다 + //return false; + } + } + + //축이 이동중이면 처리하지 않는다. + if (PUB.mot.IsInp(axis) == false || PUB.mot.IsMotion(axis) == true) + { + return false; + } + + //X축실위치값 확인 + if (MOT.getPositionMatch(axis, pos, inpaccr) == false) + { + return false; + } + + + return true; + } + + + #endregion + + + #region "Get Axis Position" + + public static sPositionData GetPXPos(ePXLoc pos) { return GetAxPos(eAxis.PX_PICK, (int)pos); } + public static sPositionData GetPZPos(ePZLoc pos) { return GetAxPos(eAxis.PZ_PICK, (int)pos); } + public static sPositionData GetLMPos(eLMLoc pos) { return GetAxPos(eAxis.PL_MOVE, (int)pos); } + public static sPositionData GetLZPos(eLZLoc pos) { return GetAxPos(eAxis.PL_UPDN, (int)pos); } + public static sPositionData GetRMPos(eRMLoc pos) { return GetAxPos(eAxis.PR_MOVE, (int)pos); } + public static sPositionData GetRZPos(eRZLoc pos) { return GetAxPos(eAxis.PR_UPDN, (int)pos); } + public static sPositionData GetPTPos(ePTLoc pos) { return GetAxPos(eAxis.Z_THETA, (int)pos); } + + + #endregion + + + + /// + /// 지정된 축의 위치값에 속한 이름을 반환합니다. + /// 특정 구간에 속하지 않은 경우 UNKNOWN 을 반환 합니다 + /// + /// + /// + /// + public static String GetPosName(eAxis axis, double Pos = -1, double CheckOffset = 0.1) + { + //홈을 잡지 않았다면 오류로 처리함\ + //eYPPosition retval = eYPPosition.Unknown; + + var motIndex = (short)axis; + + if (PUB.mot.IsInit == false) return "ERROR";// (T)ePickYPosition.ERROR; //200213 + if (PUB.mot.IsHomeSet(motIndex) == false) return "ERROR";//ePickYPosition.ERROR; + if (PUB.Result == null || PUB.Result.isSetmModel == false) return "ERROR";//return ePickYPosition.ERROR; + + if (PUB.mot.IsUse(motIndex) == false) return "DISABLE"; + else if (PUB.mot.IsServAlarm(motIndex)) return "SVALM"; + else if (PUB.mot.IsServOn(motIndex) == false) return "SVOFF"; + else if (PUB.mot.IsLimitN(motIndex)) return "LIMITN"; + else if (PUB.mot.IsLimitP(motIndex)) return "LIMITP"; + else if (PUB.mot.IsLimitSWN(motIndex)) return "LIMITN(SW)"; + else if (PUB.mot.IsLimitSWP(motIndex)) return "LIMITP(SW)"; + else if (PUB.mot.IsOrg(motIndex)) return "HOME"; + else + { + //특정위치에있는지 확인한다. match 명령사용 + if (Pos == -1) Pos = PUB.mot.GetActPos(motIndex); + var PosT = 0.0; + + //해당 모션이 속한 좌표를 모두 가져온다 + var pts = PUB.Result.mModel.Position[motIndex].OrderBy(t => t.value).ToList(); + + //각위치별값을 확인한다. + for (int i = 0; i < pts.Count; i++) + { + var pValue = pts[i]; + if (Math.Abs(pValue.value - Pos) <= CheckOffset) + { + //해당위치에 있다i + if (axis == eAxis.PX_PICK) return ((ePXLoc)i).ToString(); + else if (axis == eAxis.PZ_PICK) return ((ePZLoc)i).ToString(); + else if (axis == eAxis.Z_THETA) return ((ePTLoc)i).ToString(); + + else if (axis == eAxis.PL_MOVE) return ((eLMLoc)i).ToString(); + else if (axis == eAxis.PL_UPDN) return ((eLZLoc)i).ToString(); + + else if (axis == eAxis.PR_MOVE) return ((eRMLoc)i).ToString(); + else if (axis == eAxis.PR_UPDN) return ((eRZLoc)i).ToString(); + + else return $"P#{i}"; + } + } + + //위치를 찾지 못했다 + if (Math.Abs(Pos) <= CheckOffset) return "ZERO"; + else return "UNKNOWN"; + } + } + + + /// + /// Z-L축이 안전위치에있는가?(Ready 보다 위에있으면 안전위치이다) + /// + /// + public static Boolean isAxisSaftyZone(eAxis axis, int allowoffset = 2) + { + //홈을 잡지 않았다면 오류로 처리함 + var motIndex = (short)axis; + if (PUB.mot.IsInit == false) return false; + if (PUB.mot.IsHomeSet(motIndex) == false) return false; + if (PUB.Result == null || PUB.Result.isSetmModel == false) return false; + + sPositionData readypos; + if (axis == eAxis.PX_PICK) + { + //피커는 안전위이가 2개 있다 + readypos = GetPXPos(ePXLoc.PICKON); + //var readypos1 = GetAxPXPos(eAxisPXPos.ReadyR); + //var offset1 = getPositionOffset(axis, readypos.position); + //var offset2 = getPositionOffset(axis, readypos1.position); + //if (offset1 < allowoffset || offset2 < allowoffset ) return true; //오차가 2미만이라면 안전하다 + //return false; + } + else if (axis == eAxis.PZ_PICK) readypos = GetPZPos(ePZLoc.READY); + else if (axis == eAxis.Z_THETA) readypos = GetPTPos(ePTLoc.READY); + else if (axis == eAxis.PL_MOVE) readypos = GetLMPos(eLMLoc.READY); + else if (axis == eAxis.PR_MOVE) readypos = GetRMPos(eRMLoc.READY); + else if (axis == eAxis.PR_UPDN) readypos = GetRZPos(eRZLoc.READY); + else if (axis == eAxis.PL_UPDN) readypos = GetLZPos(eLZLoc.READY); + else return false; + + var offset = getPositionOffset(axis, readypos.Position); + if (offset < allowoffset) return true; //오차가 2미만이라면 안전하다 + return false; + } + + private static Boolean Home_Validation(eAxis axis, out string errorMessage) + { + Boolean retval = true; + // int axis = (int)axis_; + + var CW = false; //홈검색은 항상 뒤로 움직인다. + if (!Move_Validation(axis, CW, out errorMessage)) retval = false; //이동이 불가한 경우 체크 + else if (axis == eAxis.PX_PICK) + { + //Z축 홈이 필요하다 + var zFHome = PUB.mot.IsHomeSet((int)eAxis.PZ_PICK); + var zRHome = PUB.mot.IsHomeSet((int)eAxis.Z_THETA); + if (zFHome == false || zRHome == false) + { + //errorMessage = "Z-PICKER,Z-THETA 축 홈이 필요 합니다"; + //retval = false; + } + } + else if (axis == eAxis.PL_MOVE) //Z축의 경우 Y축이 홈으로 된 상태여야 한다. + { + if (PUB.mot.IsHomeSet((int)eAxis.PL_UPDN) == false) + { + errorMessage = "PRINT-L Z axis home is required"; + retval = false; + } + } + else if (axis == eAxis.PR_MOVE) //Z축의 경우 Y축이 홈으로 된 상태여야 한다. + { + if (PUB.mot.IsHomeSet((int)eAxis.PR_UPDN) == false) + { + errorMessage = "PRINT-R Z axis home is required"; + retval = false; + } + } + return retval; + } + + //private static Boolean Move_Validation(eAxis axis, out string errorMessage) + //{ + // errorMessage = string.Empty; + + // if (DIO.IsEmergencyOn() == true) + // { + // errorMessage = ("비상정지 상태일때에는 움직일 수 없습니다."); + // return false; + // } + + // return true; + //} + private static Boolean Move_Validation(eAxis axis, Boolean MoveCW, out string errorMessage) + { + errorMessage = string.Empty; + + if (DIO.IsEmergencyOn() == true) + { + errorMessage = ("Cannot move when in emergency stop state."); + return false; + } + + //홈이 잡힌상태일때 + if (PUB.mot.IsHomeSet((short)axis)) + { + if (axis == eAxis.PX_PICK) + { + var Pos = MOT.GetPXPos(ePXLoc.PICKON); + var PosOffset = MOT.getPositionOffset(Pos); + + if(AR.SETTING.Data.Log_Debug) + PUB.logDbg.Add($"X-axis jog center offset:{PosOffset:N3}"); + + if (MoveCW==false && PosOffset < -1) //좌측위치로 이동하는 경우 + { + if(PUB.mot.IsHomeSet((int)eAxis.PL_MOVE)) + { + var PosY = MOT.GetLMPos(eLMLoc.READY); + var PosYOffse = MOT.getPositionOffset(PosY); + if(PosYOffse < -1) + { + //프린터 Y축이 더 안쪽으로 들어와있으니 충돌할 수 있다. + errorMessage = "Possible collision with Print(L) axis"; + return false; + } + } + } + else if(MoveCW && PosOffset > 1) //우측으로 이동하는 경우 + { + if (PUB.mot.IsHomeSet((int)eAxis.PR_MOVE)) + { + var PosY = MOT.GetRMPos(eRMLoc.READY); + var PosYOffse = MOT.getPositionOffset(PosY); + if (PosYOffse < -1) + { + //프린터 Y축이 더 안쪽으로 들어와있으니 충돌할 수 있다. + errorMessage = "Possible collision with Print(R) axis"; + return false; + } + } + } + } + } + + return true; + } + + #region "Common Util" + + /// + /// 지정한 축의 모델정보에서 해당 위치값을 찾아 반환 합니다 + /// + /// + /// + /// + private static sPositionData GetAxPos(eAxis axis, int pos) + { + return GetAxpos((short)axis, pos); + } + private static sPositionData GetAxpos(short axis, int pos) + { + var retval = new sPositionData(); + retval.Clear(); + if (PUB.Result.mModel == null || PUB.Result.mModel.isSet == false) + { + retval.Message = "Motion model is not set"; + return retval; + } + + if(axis >= PUB.Result.mModel.Position.Count) + { + retval.Message = $"Motion model (axis) information not found ({axis}/{PUB.Result.mModel.Position.Count})"; + return retval; + } + + if (pos >= PUB.Result.mModel.Position[axis].Length) + { + retval.Message = $"Motion model (position) information not found ({pos}/{PUB.Result.mModel.Position[axis].Length})"; + return retval; + } + + var data = PUB.Result.mModel.Position[axis][pos]; + if (data.index == -1) + { + retval.Message = string.Format("Value for axis:{0} position:{1} does not exist", axis, pos); + return retval; + } + retval.Axis = axis; //220301 + retval.Position = data.value; + retval.Speed = data.speed; + retval.Acc = data.acc; + + + //환경설정에서 저속모드로 설정했다면 지정된 속도로만 처리한다 + if (AR.SETTING.Data.Enable_SpeedLimit == true) + retval.Speed = Math.Min(retval.Speed, AR.SETTING.Data.LimitSpeed); + + ////시스템설정의 속도 체크 220524 + //var maxspeed = SETTING.System.GetMaxSpeed; + //var motidx = (int)axis; + //if (motidx >= 0 && motidx < maxspeed.Length && maxspeed[motidx] > 0) + //{ + // retval.Speed = Math.Min(retval.Speed, maxspeed[motidx]); + //} + + ////시스템설정의 가속도체크 + //var maxAcc = SETTING.System.GetMaxAcc; + //if (motidx >= 0 && motidx < maxAcc.Length && maxAcc[motidx] > 0) + //{ + // retval.Acc = Math.Min(retval.Acc, maxAcc[motidx]); + //} + + if (data.dcc < 1) retval.Dcc = retval.Acc; + else retval.Dcc = data.dcc; + + //retval.isError = false; + retval.Message = string.Empty; + return retval; + } + + /// + /// 지정축의 모션을 중지 합니다. + /// + /// + /// + /// + public static void Stop(eAxis axis, string reason, Boolean estop = false) + { + if (PUB.mot.IsInit == false) return; + if (PUB.mot.IsServAlarm((short)axis)) return; + PUB.mot.MoveStop(reason, (short)axis, estop); + + } + + //지정한 옵셋범위에 들어있는지 체크합니다. + static Boolean MatchPosition(double cpos, double tpos, double diff = 0.1) + { + var offset = Math.Abs(tpos - cpos); + return offset <= diff; + } + public static double getPositionOffset(eAxis axis, double cmdPos) + { + return getPositionOffset((short)axis, cmdPos); + } + + /// + /// 현재위치에서 지정된 위치를 뺀 값입니다. +가 반환되면 현재 위치가 지정위치보다 멀리 있다는 뜻입니다. + /// + /// + /// + public static double getPositionOffset(sPositionData Pos) + { + return getPositionOffset(Pos.Axis, Pos.Position); + } + /// + /// 현재위치에서 지정된 위치를 뺀 값입니다. +가 반환되면 현재 위치가 지정위치보다 멀리 있다는 뜻입니다. + /// + /// + /// + /// + public static double getPositionOffset(short axis, double cmdPos) + { + var coffset = (PUB.mot.GetActPos(axis) - cmdPos); + return coffset;// return coffset < offset; + } + + public static bool getPositionMatch(eAxis axis, double cmdPos, double offset = 0.1) + { + return getPositionMatch((short)axis, cmdPos, offset); + } + + public static bool getPositionMatch(sPositionData pos, double offset = 0.1) + { + return getPositionMatch(pos.Axis, pos.Position, offset); + } + + + public static bool getPositionMatch(short axis, double cmdPos, double offset = 0.1) + { + var actpos = PUB.mot.GetActPos(axis); + var coffset = Math.Abs(actpos - cmdPos); + return coffset <= offset; + } + + public static List GetActiveLockList(eAxis axis, CInterLock Lck) + { + var locklist = new List(); + + if (Lck.IsEmpty() == false) + { + for (int i = 0; i < Lck.Length; i++) + { + if (Lck.get(i)) + { + var vStr = $"[{i}]"; + vStr = ((eILock)i).ToString(); + locklist.Add(vStr); + } + } + } + return locklist; + } + + public static Boolean Home(string reason, eAxis axis_, Boolean useValidcheck = true) + { + string Message; + int axis = (int)axis_; + if (useValidcheck == true && !Home_Validation(axis_, out Message)) + { + PUB.mot.RaiseMessage(string.Format("[{0}-Axis] Move Error : {1}", axis, Message), true); + return false; + } + + var HomespdH = PUB.system_mot.GetHomeSpeedHigh; + var HomespdL = PUB.system_mot.GetHomeSpeedLow; + var homespdA = PUB.system_mot.GetHomeSpeedAcc; + var useOrgSensor = PUB.system_mot.GetUseOrigin; + + //Pub.mot.Home(1, arDev.AzinAxt.eMotionDirection.Negative, arDev.AzinAxt.eSoftLimitStopMode.SStop, COMM.SETTING.Data.HZSpeed, COMM.SETTING.Data.HZAcc); + //Boolean useOrgSensor = !disable_org[axis]; // (axis_ != eAxis.Marking); //A센서는 ORG가 없으므로 NE센서만으로 처리해야 함 + return PUB.mot.Home(reason, (short)axis, MOTION_DIRECTION.Negative, + STOPTYPE.EStop, + HomespdH[axis], + HomespdL[axis], + homespdA[axis], + useOrgSensor[axis]); + } + + + private static DateTime[] MotCmdtime = new DateTime[] { DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now }; + private static double[] MotCmdPos = new double[] { 0, 0, 0, 0, 0, 0, 0, 0 }; + + public static Boolean Move(eAxis axis, sPositionData posdata) + { + return Move(axis, posdata.Position, posdata.Speed, posdata.Acc); + } + + public static Boolean Move(sPositionData posdata) + { + return Move((eAxis)posdata.Axis, posdata); + } + + public static Boolean Move(eAxis axis, double pos_mm, double speed, double acc = 1000, Boolean relative = false, Boolean validchk = true, Boolean UserInterLock = true) + { + + //너무빠른시간 동작하지 못하게 한다 + if (MotCmdPos[(int)axis] == pos_mm) + { + var ts = DateTime.Now - MotCmdtime[(int)axis]; + if (ts.TotalMilliseconds < 1000) + { + //너무 빠르게 재시도하지 않게 한다 210115 + Console.WriteLine("mot command skip : " + axis.ToString() + "pos:" + pos_mm.ToString() + " too short"); + MotCmdtime[(int)axis] = DateTime.Now.AddMilliseconds(-1500); + return true; + } + else + { + MotCmdtime[(int)axis] = DateTime.Now; + MotCmdPos[(int)axis] = pos_mm; + } + } + else + { + MotCmdtime[(int)axis] = DateTime.Now; + MotCmdPos[(int)axis] = pos_mm; + } + + //이동유효성검사 + string Message; + if (validchk == true) + { + //현재위치보다 작으면 ccw + var isCW = pos_mm >= PUB.mot.GetActPos((short)axis); + if (!Move_Validation(axis, isCW, out Message)) + { + PUB.log.AddE(string.Format("[{0}-Axis] Move Error : {1}", axis, Message)); + //Pub.mot.RaiseMessage(, true); + return false; + } + } + + //해당 축 ILOCK체크 + if (UserInterLock) + { + //lock이 걸린경우 lock 걸린 항목을 모두 확인하면 좋다 + var ilock = PUB.iLock[(int)axis]; + if (ilock.IsEmpty() == false) + { + var locklist = MOT.GetActiveLockList(axis, ilock); + PUB.mot.ErrorMessage = $"{ilock.Tag} Interlock(" + string.Join(",", locklist) + ")"; + //PUB.Result.SetResultMessage(eResult.MOTION, eECode.INTERLOCK, eNextStep.PAUSE, PUB.mot.ErrorMessage); + return false; + } + } + + var pos_pulse = pos_mm;// *10; + var result = PUB.mot.Move((short)axis, pos_pulse, speed, acc, acc, relative, false, validchk); + if (!result) PUB.mot.RaiseMessage("Move(X) Error : " + PUB.mot.ErrorMessage, true); + return result; + } + + + public static Boolean JOG(short _Axis, MOTION_DIRECTION Dir, double _Vel, double _Acc, double _Dec, Boolean sCurve = false, Boolean EnableValidCheck = true, Boolean UserInterLock = true) + { + eAxis axis = (eAxis)_Axis; + + //웨이퍼가 감지되는 상태일때 OPEN 되어있다면 이동하지 못하게 한다 + if (EnableValidCheck == true) + { + var curpost = PUB.mot.GetActPos(_Axis); + var IsMoveCW = false; + + IsMoveCW = Dir == MOTION_DIRECTION.Positive; + + if (!Move_Validation(axis, IsMoveCW, out string Message)) + { + PUB.log.AddE(string.Format("[{0}-Axis] JOG Error : {1}", axis, Message)); + return false; + } + } + else PUB.log.AddAT($"Validation check disabled during jog movement (axis:{axis})"); + + //해당 축 ILOCK체크 + if (UserInterLock) + { + //lock이 걸린경우 lock 걸린 항목을 모두 확인하면 좋다 + if (PUB.iLock[_Axis].IsEmpty() == false) + { + var locklist = MOT.GetActiveLockList(axis, PUB.iLock[_Axis]); + PUB.mot.ErrorMessage = $"{axis} Interlock(" + string.Join(",", locklist) + ")"; + return false; + } + } + else PUB.log.AddAT($"Interlock check disabled during jog movement (axis:{axis})"); + + + return PUB.mot.JOG(_Axis, Dir, _Vel, _Acc, sCurve, EnableValidCheck); + } + + + + + #endregion + } +} diff --git a/Handler/Project/Util/Util_Vision.cs b/Handler/Project/Util/Util_Vision.cs new file mode 100644 index 0000000..995b7c0 --- /dev/null +++ b/Handler/Project/Util/Util_Vision.cs @@ -0,0 +1,486 @@ +//using Emgu.CV; +//using Emgu.CV.CvEnum; +//using Emgu.CV.Structure; +//using Euresys.Open_eVision_2_11; +//using System; +//using System.Collections.Generic; +//using System.Drawing; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace Project +//{ +// public static class Util_Vision +// { +// //private static object imageLockObj = new object(); + +// //public struct SCodeData +// //{ +// // public Point[] corner; +// // public string data; +// // public string model; +// // public string version; +// // public string level; +// // public string sid; +// //} + + +// //public static void DisplayQRData(List DataArr, Rectangle roi, arCtl.ImageBox iv) +// //{ +// // iv.ClearShape(); +// // foreach (var item in DataArr) +// // { +// // var p = new PointF[4]; +// // p[0] = new PointF(item.corner[0].X + roi.Left, item.corner[0].Y + roi.Top); +// // p[1] = new PointF(item.corner[1].X + roi.Left, item.corner[1].Y + roi.Top); +// // p[2] = new PointF(item.corner[2].X + roi.Left, item.corner[2].Y + roi.Top); +// // p[3] = new PointF(item.corner[3].X + roi.Left, item.corner[3].Y + roi.Top); + +// // iv.AddShapeLine(p[0], p[1], Color.Gold, false, 5); +// // iv.AddShapeLine(p[1], p[2], Color.Gold, false, 5); +// // iv.AddShapeLine(p[2], p[3], Color.Gold, false, 5); +// // iv.AddShapeLine(p[3], p[0], Color.Gold, false, 5); + +// // if (item.data.isEmpty() == false) +// // { +// // iv.AddShapeText(item.corner[1], item.data, Color.Black, 200); +// // } +// // } +// //} + +// /// +// /// 마스킹이적용된 이미지가 반환됩니다. 마스킹 +// /// +// /// +// /// +// /// +// /// +// /// +// //public static EImageBW8 FindReelOutline(EImageBW8 orgEImage, out string Message, out PointF CenterPX, out float Diameter, arCtl.ImageBox iv = null, eCartSize reelsize = eCartSize.Inch7) +// //{ + +// // EImageBW8 retval = null;// new EImageBW8(orgEImage.Width, orgEImage.Height); //마스킹이적용된 이미지 + +// // Message = string.Empty; +// // CenterPX = PointF.Empty; +// // Diameter = 0; + +// // //EWorldShape EWorldShape1 = new EWorldShape(); // EWorldShape instance +// // ECircleGauge ECircleGauge1 = new ECircleGauge(); // ECircleGauge instance +// // ECircle Circle1 = new ECircle(); // ECircle instance +// // ECircle measuredCircle = null; // ECircle instance +// // iv.ClearShape("OUTLINE"); + +// // try +// // { +// // // EBW8Image1.Load("C:\\temp\\b.bmp"); +// // //ECircleGauge1.Attach(EWorldShape1); +// // ECircleGauge1.Dragable = true; +// // ECircleGauge1.Resizable = true; +// // ECircleGauge1.Rotatable = true; +// // // EWorldShape1.SetSensorSize(3289, 2406); +// // // EWorldShape1.Process(EBW8Image1, true); +// // ECircleGauge1.Thickness = 20; +// // ECircleGauge1.TransitionChoice = ETransitionChoice.NthFromEnd; +// // ECircleGauge1.FilteringThreshold = 3.00f; +// // ECircleGauge1.SetCenterXY(2000f, 1400f); +// // ECircleGauge1.Amplitude = 360f; +// // ECircleGauge1.Tolerance = 500; +// // ECircleGauge1.Diameter = 2200f; +// // ECircleGauge1.Threshold = 20; +// // ECircleGauge1.FilteringThreshold = 3.0f; +// // ECircleGauge1.Measure(orgEImage); +// // measuredCircle = ECircleGauge1.MeasuredCircle; +// // if (measuredCircle.CenterX < 1 && measuredCircle.CenterY < 1) +// // { +// // Message = "outline not found"; +// // if (reelsize != eCartSize.None) +// // { +// // //마스크파일이 존재하면 해당 마스크를 사용한다 +// // var maskfilname = "Mask" + reelsize.ToString() + ".bmp"; +// // var filename = System.IO.Path.Combine(Util.CurrentPath, "Data", maskfilname); +// // if (System.IO.File.Exists(filename)) +// // { +// // var maskimg = new EImageBW8(); // Image(filename); +// // maskimg.Load(filename); +// // retval = new EImageBW8(orgEImage.Width, orgEImage.Height); +// // EasyImage.Oper(EArithmeticLogicOperation.BitwiseAnd, orgEImage, maskimg, retval); +// // } +// // else Pub.log.AddE("마스크파일:" + maskfilname + "이존재하지 않아 사용하지 않습니다"); +// // } +// // } +// // else +// // { +// // retval = new EImageBW8(orgEImage.Width, orgEImage.Height); +// // Diameter = measuredCircle.Diameter; +// // CenterPX = new PointF(measuredCircle.CenterX, measuredCircle.CenterY); + +// // var rect = new RectangleF(CenterPX.X - Diameter / 2.0f, CenterPX.Y - Diameter / 2.0f, Diameter, Diameter); +// // var sh = iv.AddShapePoint(CenterPX.X, CenterPX.Y, 50, Color.Gold); +// // sh.Tag = "OUTLINE"; +// // var shc = iv.AddShapeCircle(rect, Color.Lime, 50); +// // shc.Tag = "OUTLINE"; + +// // //찾은 영역을 제외하고 마스크를 만든다. +// // var dt = DateTime.Now; +// // var maskimg = new Image(orgEImage.Width, orgEImage.Height); +// // maskimg.SetZero(); +// // CvInvoke.Circle(maskimg, new Point((int)measuredCircle.CenterX, (int)measuredCircle.CenterY), (int)(Diameter / 2.0f), new Gray(255).MCvScalar, -1); + +// // //maskimg.Save(@"c:\temp\mask_" + dt.ToString("HHmmss") + ".bmp"); + +// // //마스크와 결합 +// // var orgImage = new Image(orgEImage.Width, orgEImage.Height, orgEImage.RowPitch, orgEImage.GetImagePtr()); +// // { +// // var retimg = new Image(retval.Width, retval.Height, retval.RowPitch, retval.GetImagePtr()); +// // { +// // CvInvoke.BitwiseAnd(orgImage, maskimg, retimg); +// // } +// // } +// // //orgImage.Save(@"c:\temp\type1_src1_" + dt.ToString("HHmmss") + ".bmp"); +// // //maskimg.Save(@"c:\temp\type1_src2_" + dt.ToString("HHmmss") + ".bmp"); +// // //maskedimg.Save(@"c:\temp\type1_dest_" + dt.ToString("HHmmss") + ".bmp"); +// // //iv.AddShapeBox(rect, Color.Tomato).Tag = "OUTLINE"; +// // } +// // } +// // catch (EException ex) +// // { +// // // Insert exception handling code herem +// // Message = ex.Message; +// // } +// // if (iv != null) iv.Invalidate(); +// // return retval; +// //} + + +// //public static PointF GetGainOffset(int idx) +// //{ +// // if (idx == 0) return new PointF(1.0f, 0.0f); +// // else if (idx == 1) return new PointF(1.3f, 0.0f); +// // else if (idx == 2) return new PointF(0.7f, 0.0f); + +// // else if (idx == 3) return new PointF(1.0f, 50.0f); +// // else if (idx == 4) return new PointF(1.0f, -50.0f); + +// // else if (idx == 5) return new PointF(3.0f, 50.0f); //아주어두운이미지용 +// // else if (idx == 6) return new PointF(0.5f, -20.0f); //아주밝은이미지용 + +// // //else if (idx == 7) return new PointF(1.0f, -150.0f); //밝은이미지용 +// // //else if (idx == 8) return new PointF(1.0f, -170.0f); //밝은이미지용 +// // //else if (idx == 9) return new PointF(1.0f, -190.0f); //밝은이미지용 + +// // else return new PointF(1f, 0f); +// //} + +// //private static List GetGainOffsetList(string gainstr) +// //{ +// // var retval = new List(); +// // var list = gainstr.Split(';'); +// // foreach (var item in list) +// // { +// // var ptitem = item.Split(','); +// // if (ptitem.Length == 2) +// // { +// // retval.Add(new System.Drawing.PointF(float.Parse(ptitem[0]), float.Parse(ptitem[1]))); +// // } +// // } +// // return retval; +// //} + +// //public static System.Collections.Generic.List DetectQR_eVision( +// // EImageBW8 EBW8Image4, +// // arCtl.ImageBox iv1, int idx, +// // out string Message, +// // string erodevaluestr = "3,1", +// // string gainoffsetlist = "2,1", +// // uint blob_area_min = 5000, +// // uint blob_area_max = 50000, +// // float blob_sigmaxy = 500f, +// // float blob_sigmayy = 500f, +// // float blob_sigmaxx = 5000f, +// // string maskfile = "", +// // Image DispImage = null +// // ) +// //{ +// // Message = string.Empty; +// // var pts = new System.Collections.Generic.List(); +// // System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); +// // wat.Restart(); + +// // //바코드리더 +// // EQRCodeReader EQRCode1 = new EQRCodeReader(); // EQRCodeReader instance +// // EQRCode1.DetectionMethod = 15; //모든방법으로 데이터를 찾는다 +// // EQRCode1.TimeOut = 1000 * 1000; //timeout (1초) + +// // //Blob 으로 바코드영역을 찾는다 +// // ECodedImage2 codedImage4 = new ECodedImage2(); // ECodedImage2 instance +// // EImageEncoder codedImage4Encoder = new EImageEncoder(); // EImageEncoder instance +// // EObjectSelection codedImage4ObjectSelection = new EObjectSelection(); // +// // codedImage4ObjectSelection.FeretAngle = 0.00f; +// // using (var psegment = codedImage4Encoder.GrayscaleSingleThresholdSegmenter) //.BlackLayerEncoded = true; +// // { +// // psegment.BlackLayerEncoded = true; +// // psegment.WhiteLayerEncoded = false; +// // psegment.Mode = EGrayscaleSingleThreshold.MaxEntropy; +// // } + +// // //침식해서 바코드영역이 뭉치도록 한다. (바코드는 검은색 영역이 된다) +// // List erodevalues = new List(); +// // var erodebuffer = erodevaluestr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); +// // foreach (var erbuf in erodebuffer) erodevalues.Add(uint.Parse(erbuf)); + +// // //마스크적용 - 210209 +// // if (maskfile.isEmpty() == false && System.IO.File.Exists(maskfile)) +// // { +// // using (var maskmig = new EImageBW8()) +// // { +// // maskmig.Load(maskfile);//이미지불러오지 +// // EasyImage.Oper(EArithmeticLogicOperation.BitwiseAnd, EBW8Image4, maskmig, EBW8Image4); +// // } +// // } + + +// // var GainOffsetList = GetGainOffsetList(gainoffsetlist); +// // uint objectCountT = 0; + +// // for (int maxtype = 0; maxtype < 2; maxtype++) +// // { +// // //침식데이터도 여러개를 사용한다. +// // foreach (var erodevalue in erodevalues) +// // { +// // //인코딩된 이미지가 들어간다 +// // var ErodeImageBW8 = new EImageBW8(EBW8Image4.Width, EBW8Image4.Height); +// // EasyImage.ErodeBox(EBW8Image4, ErodeImageBW8, erodevalue); + + +// // using (var psegment = codedImage4Encoder.GrayscaleSingleThresholdSegmenter) +// // { +// // if (maxtype == 0) +// // psegment.Mode = EGrayscaleSingleThreshold.MinResidue; +// // else if (maxtype == 1) +// // psegment.Mode = EGrayscaleSingleThreshold.MaxEntropy; +// // else if (maxtype == 2) +// // psegment.Mode = EGrayscaleSingleThreshold.IsoData; +// // } + + +// // codedImage4Encoder.Encode(ErodeImageBW8, codedImage4); +// // codedImage4ObjectSelection.Clear(); +// // codedImage4ObjectSelection.AddObjects(codedImage4); +// // codedImage4ObjectSelection.AttachedImage = ErodeImageBW8; + + +// // //너무큰 개체를 제거한다. +// // codedImage4ObjectSelection.RemoveUsingUnsignedIntegerFeature(EFeature.Area, blob_area_min, ESingleThresholdMode.LessEqual); +// // codedImage4ObjectSelection.RemoveUsingUnsignedIntegerFeature(EFeature.Area, blob_area_max, ESingleThresholdMode.GreaterEqual); + +// // //개체제거 +// // codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.SigmaXY, blob_sigmaxy, ESingleThresholdMode.GreaterEqual); +// // codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.SigmaYY, blob_sigmayy, ESingleThresholdMode.LessEqual); +// // codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.SigmaXX, blob_sigmaxx, ESingleThresholdMode.GreaterEqual); + +// // //찾은데이터수량 +// // var objectCount = codedImage4ObjectSelection.ElementCount; +// // objectCountT += objectCount; + +// // //데이터표시 +// // //찾은영역을 표시한다. +// // for (uint i = 0; i < objectCount; i++) +// // { +// // //각 요소를 가져와서 처리한다. +// // var CElement = codedImage4ObjectSelection.GetElement(i); +// // var sigXY = CElement.SigmaXY; +// // var sigYY = CElement.SigmaYY; +// // var rCnt = CElement.RunCount; +// // var rArea = CElement.Area; + +// // var boxW = CElement.BoundingBoxWidth * COMM.SETTING.Data.RosRectScale; +// // var boxH = CElement.BoundingBoxHeight * COMM.SETTING.Data.RosRectScale; //좀더크게간다 210209 +// // var boxCX = CElement.BoundingBoxCenterX; +// // var boxCY = CElement.BoundingBoxCenterY; + +// // var boxRate = (boxW * 1.0) / boxH; + +// // var rect = new RectangleF(boxCX - boxW / 2.0f, boxCY - boxH / 2.0f, boxW, boxH); + +// // //외각상자를 표시한다 +// // iv1.AddShapeBox(rect, Color.Tomato, 10); +// // if (DispImage != null) +// // CvInvoke.Rectangle(DispImage, +// // new Rectangle((int)rect.X, (int)rect.Y, (int)rect.Width, (int)rect.Height), +// // new Bgr(Color.Tomato).MCvScalar, 2); + +// // //해당영역을 ROI로 잡고 이미지를 검색한다 +// // var RoiImage = new EROIBW8(); +// // RoiImage.Attach(EBW8Image4); + +// // //ROI로 사용할 영역의 오류를 체크해야한다 +// // var rLeft = (int)rect.Left; +// // var rTop = (int)rect.Top; +// // var rWid = (int)rect.Width; +// // var rHei = (int)rect.Height; + +// // //roi 오류수정 210621 +// // if (rLeft < 2) rLeft = 1; +// // if (rTop < 2) rTop = 1; +// // if (rWid < 10) rWid = 10; +// // if (rHei < 10) rHei = 10; +// // if (rLeft + rWid > EBW8Image4.Width) rWid = EBW8Image4.Width - rLeft - 1; +// // if (rTop + rHei > EBW8Image4.Height) rHei = EBW8Image4.Height - rTop - 1; + +// // var rourect = new Rectangle(rLeft, rTop, rWid, rHei); +// // RoiImage.SetPlacement(rourect.Left, rourect.Top, rourect.Width, rourect.Height); //ROI적용 + +// // var TargetImage = new EImageBW8(RoiImage.Width, RoiImage.Height); + +// // //밝기를 변경해서 처리해야한다 +// // //int processCount = 9; + +// // foreach (var param in GainOffsetList) //원본, gain +-, offset +- 5가지 색상처리함 +// // { + +// // EasyImage.ScaleRotate(RoiImage, 0, 0, 0, 0, 1.0f, 1.0f, 0f, TargetImage); +// // //EasyImage.Copy(RoiImage, TargetImage); + +// // //밝기를 변경해서 사용할 것이므로 해당 변경된 밝기를 저장할 이미지를 생성한다. 210128 +// // //var roiimg = new EImageBW8(TargetImage); +// // //var param = Util_Vision.GetGainOffset(bright); +// // if (param.X != 1.0f || param.Y != 0.0f) EasyImage.GainOffset(TargetImage, TargetImage, param.X, param.Y); +// // //else RoiImage.CopyTo(TargetImage); ;// TargetImage.CopyTo(roiimg); //변경하지 않고 그대로 사용한다 + +// // //적용파일을 모두 저장해준다. +// // //var roifilename = @"c:\temp\roi_" + i.ToString() + "_g" + param.X.ToString() + "_o" + param.Y.ToString() + ".bmp"; +// // //TargetImage.Save(roifilename); + +// // EQRCode1.SearchField = TargetImage; +// // var EQRCode2Result = EQRCode1.Read(); +// // for (int j = 0; j < EQRCode2Result.Length; j++) +// // { +// // var QrData = EQRCode2Result[j]; +// // if (QrData.IsDecodingReliable) +// // { +// // var geo = QrData.Geometry; +// // var pos = geo.Position; +// // var cornous = pos.Corners; + +// // var resultData = new Util_Vision.SCodeData(); + +// // //테두리좌표 읽기 +// // var resultcorns = new List(); +// // for (int k = 0; k < cornous.Length; k++) +// // { +// // var con = cornous[k]; +// // resultcorns.Add(new Point((int)(con.X + rect.X), (int)(con.Y + rect.Y))); +// // con.Dispose(); +// // } +// // resultData.corner = resultcorns.ToArray(); + +// // //데이터읽기 +// // resultData.model = QrData.Model.ToString(); +// // resultData.version = QrData.Version.ToString(); +// // resultData.level = QrData.Level.ToString(); +// // resultData.sid = string.Empty; + +// // //바코드데이터확인 +// // var decodestr = QrData.DecodedStream; +// // resultData.data = string.Empty; +// // foreach (var item in decodestr.DecodedStreamParts) +// // { +// // resultData.data += System.Text.Encoding.Default.GetString(item.DecodedData); +// // item.Dispose(); +// // } + +// // var c = new StdLabelPrint.CAmkorSTDBarcode(resultData.data); +// // if (c.isValid) resultData.sid = c.SID; +// // else resultData.sid = string.Empty; +// // //if (c.isValid) break; +// // //else resultData.data = string.Empty; + +// // //결과데이터 추가 +// // if (resultData.data.isEmpty() == false) +// // { +// // if (pts.Where(t => t.data == resultData.data).Any() == false) +// // { +// // pts.Add(resultData); + +// // //자료가잇다면 표시한다. +// // var dispvalue = resultData.data; +// // if (c.isValid == false) dispvalue += "\n" + c.Message; +// // else if (c.DateError) dispvalue += "\n** Date Error **"; +// // iv1.AddShapeText(resultcorns[1].X, resultcorns[1].Y, dispvalue, (c.isValid ? Color.Yellow : Color.Red), 50); + +// // if (DispImage != null) +// // CvInvoke.PutText(DispImage, +// // dispvalue, +// // new Point(resultcorns[1].X, resultcorns[1].Y), FontFace.HersheyDuplex, 2, +// // new Bgr(Color.Tomato).MCvScalar, 2); + +// // //찾은테두리를 화면에 표시한다. +// // foreach (var pt in resultcorns) +// // { +// // iv1.AddShapePoint(pt, 20f, Color.Lime); +// // if (DispImage != null) +// // { +// // CvInvoke.Line(DispImage, +// // new Point(pt.X - 10, pt.Y - 10), +// // new Point(pt.X + 10, pt.Y + 10), +// // new Bgr(Color.Lime).MCvScalar, 2); + +// // CvInvoke.Line(DispImage, +// // new Point(pt.X + 10, pt.Y - 10), +// // new Point(pt.X - 10, pt.Y + 10), +// // new Bgr(Color.Lime).MCvScalar, 2); +// // } +// // } +// // } +// // } + +// // decodestr.Dispose(); +// // decodestr = null; + +// // cornous = null; +// // pos.Dispose(); +// // geo.Dispose(); +// // } +// // QrData.Dispose(); +// // } + +// // } +// // TargetImage.Dispose(); +// // TargetImage = null; +// // CElement.Dispose(); +// // } + +// // ErodeImageBW8.Dispose(); //침식된 이미지 +// // } + +// // } + + +// // EQRCode1.Dispose(); +// // codedImage4ObjectSelection.Dispose(); //엔코더결과값소거 +// // codedImage4Encoder.Dispose(); //엔코더소거 +// // codedImage4.Dispose(); //코딩된이미지 + +// // wat.Stop(); +// // //iv1.AddShapeText(50, 50, wat.ElapsedMilliseconds.ToString() + "ms", Color.Lime, 50f); +// // var mm = "[" + objectCountT.ToString() + "] " + wat.ElapsedMilliseconds.ToString() + "ms"; +// // var mmpt = new Point(20, 30 + (idx * 140)); +// // iv1.AddShapeText(mmpt.X, mmpt.Y, mm, Color.Lime, 100f); +// // if (DispImage != null) +// // { +// // mmpt.Offset(0, 150); +// // CvInvoke.PutText(DispImage, mm, mmpt, FontFace.HersheyDuplex, 6, new Bgr(Color.Lime).MCvScalar, 4); +// // mmpt.Offset(1100, 0); +// // CvInvoke.PutText(DispImage, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), mmpt, FontFace.HersheyDuplex, 6, new Bgr(Color.Gold).MCvScalar, 4); +// // } + +// // iv1.Invalidate(); +// // return pts; +// //} + + + +// } +//} diff --git a/Handler/Project/Validation/Mot_Move.cs b/Handler/Project/Validation/Mot_Move.cs new file mode 100644 index 0000000..0ce1738 --- /dev/null +++ b/Handler/Project/Validation/Mot_Move.cs @@ -0,0 +1,79 @@ +using AR; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + + + /// + /// 모션 이동명령(MOVE,HOME,JOG)이 시작전에 축 이동여부를 확인하는 이벤트 임 + /// 이동을 하면 안되는 경우 e.valid 를 false 로 설정하면 모션이 이동하지 않습니다 + /// + /// + /// + void mot_AxisMoveValidateCheck(object sender, arDev.MOT.MoveValidationEventArgs e) + { + //DIO가 움직이지 않으면 체크할 필요는 없다 (DIO가 작동안해도 모터는 움직여야 하므로 플래그는 TRUE로 둔다) + if (PUB.dio.IsInit == false || PUB.mot.IsInit == false) return; + + //모든모션의 홈설정이완료된 상태에만 체크한다 + if (PUB.mot.HasHomeSetOff == true) return; + + //모션모델이 설정된 상태에만 체크한다 + if (PUB.Result.isSetmModel == false) return; + + //홈 검색모드에서는 처리하지 않음 + if (PUB.sm.Step == eSMStep.HOME_FULL) return; + + //일반대기상태에서는 처리하지 않는다 + if (PUB.sm.Step <= eSMStep.IDLE) return; + + //이동하려는 위치와 현재 위치가 동일하면 처리하지 않는다 + if (e.CurrentPosition == e.TargetPosition) return; + + //각 축별 파일에서 처리한다 + var axis = (eAxis)e.m_nAxis; + if (axis == eAxis.PX_PICK) + { + e.invalidMessage = Validation_MotYP(e); + e.isValid = e.invalidMessage.isEmpty(); + } + else if (axis == eAxis.PZ_PICK) + { + e.invalidMessage = Validation_MotYZ(e); + e.isValid = e.invalidMessage.isEmpty(); + } + else if (axis == eAxis.Z_THETA) + { + e.invalidMessage = Validation_MotYT(e); + e.isValid = e.invalidMessage.isEmpty(); + } + else if (axis == eAxis.PL_MOVE) + { + e.invalidMessage = Validation_MotPLM(e); + e.isValid = e.invalidMessage.isEmpty(); + } + else if (axis == eAxis.PR_MOVE) + { + e.invalidMessage = Validation_MotPRM(e); + e.isValid = e.invalidMessage.isEmpty(); + } + else if (axis == eAxis.PL_UPDN) + { + e.invalidMessage = Validation_MotPLZ(e); + e.isValid = e.invalidMessage.isEmpty(); + } + else if (axis == eAxis.PR_UPDN) + { + e.invalidMessage = Validation_MotPRZ(e); + e.isValid = e.invalidMessage.isEmpty(); + } + } + } +} diff --git a/Handler/Project/Validation/Mot_ZL.cs b/Handler/Project/Validation/Mot_ZL.cs new file mode 100644 index 0000000..460b42c --- /dev/null +++ b/Handler/Project/Validation/Mot_ZL.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class FMain + { + string Validation_MotYP(arDev.MOT.MoveValidationEventArgs e) + { + //Z가 내려오는 경우만 체크한다 + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // var valPickOfL = Util_Mot.getPositionMatch(eAxisPYPos.PickOffL, 2.0); + // var valPickOfR = Util_Mot.getPositionMatch(eAxisPYPos.PickOffR, 2.0); + + // if(valPickOn || valPickOfL || valPickOfR) + // { + // //해다 위치에 있을때에는 움직이는것이 가능하다 + // } + // else + // { + // return "Z-LEFT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + + return string.Empty; + } + string Validation_MotYZ(arDev.MOT.MoveValidationEventArgs e) + { + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // // var valPickOf = Util_Mot.getPositionMatch(eAxisYPPos.PickOff, 2.0); + // if (valPickOn == false) + // { + // return "Z-RIGHT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + return string.Empty; + } + + string Validation_MotYT(arDev.MOT.MoveValidationEventArgs e) + { + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // // var valPickOf = Util_Mot.getPositionMatch(eAxisYPPos.PickOff, 2.0); + // if (valPickOn == false) + // { + // return "Z-RIGHT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + return string.Empty; + } + + string Validation_MotPLM(arDev.MOT.MoveValidationEventArgs e) + { + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // // var valPickOf = Util_Mot.getPositionMatch(eAxisYPPos.PickOff, 2.0); + // if (valPickOn == false) + // { + // return "Z-RIGHT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + return string.Empty; + } + + string Validation_MotPRM(arDev.MOT.MoveValidationEventArgs e) + { + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // // var valPickOf = Util_Mot.getPositionMatch(eAxisYPPos.PickOff, 2.0); + // if (valPickOn == false) + // { + // return "Z-RIGHT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + return string.Empty; + } + + string Validation_MotPLZ(arDev.MOT.MoveValidationEventArgs e) + { + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // // var valPickOf = Util_Mot.getPositionMatch(eAxisYPPos.PickOff, 2.0); + // if (valPickOn == false) + // { + // return "Z-RIGHT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + return string.Empty; + } + + string Validation_MotPRZ(arDev.MOT.MoveValidationEventArgs e) + { + //if (e.direction == arDev.AzinAxt.eMotionDirection.Positive && Pub.sm.Step == eSMStep.RUN) + //{ + // var valPickOn = Util_Mot.getPositionMatch(eAxisPYPos.PickOn, 2.0); + // // var valPickOf = Util_Mot.getPositionMatch(eAxisYPPos.PickOff, 2.0); + // if (valPickOn == false) + // { + // return "Z-RIGHT 이동 불가(Y축의 위치가 PICK-ON/OFF 위치가 아닙니다:" + e.CurrentPosition.ToString() + "/" + e.TargetPosition.ToString() + ")"; + // } + //} + return string.Empty; + } + + } +} diff --git a/Handler/Project/app.config b/Handler/Project/app.config new file mode 100644 index 0000000..81c50fe --- /dev/null +++ b/Handler/Project/app.config @@ -0,0 +1,80 @@ + + + + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://k1xip00.amkor.co.kr:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=eCIM_ATK&receiverParty=&receiverService=&interface=ZK_RFID_TRANS_SEQ&interfaceNamespace=urn%3Asap-com%3Adocument%3Asap%3Arfc%3Afunctions + + + + + + + K9OE1zaaQEPD8jE33YK1vDdDS4JBz1DB + + + 101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101; + + + Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9 + + + + + + + + + + + + + + diff --git a/Handler/Project/dsWMS.Designer.cs b/Handler/Project/dsWMS.Designer.cs new file mode 100644 index 0000000..2e8d27e --- /dev/null +++ b/Handler/Project/dsWMS.Designer.cs @@ -0,0 +1,1530 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace Project { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("dsWMS")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class dsWMS : global::System.Data.DataSet { + + private VW_GET_MAX_QTY_VENDOR_LOTDataTable tableVW_GET_MAX_QTY_VENDOR_LOT; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public dsWMS() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected dsWMS(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["VW_GET_MAX_QTY_VENDOR_LOT"] != null)) { + base.Tables.Add(new VW_GET_MAX_QTY_VENDOR_LOTDataTable(ds.Tables["VW_GET_MAX_QTY_VENDOR_LOT"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public VW_GET_MAX_QTY_VENDOR_LOTDataTable VW_GET_MAX_QTY_VENDOR_LOT { + get { + return this.tableVW_GET_MAX_QTY_VENDOR_LOT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + dsWMS cln = ((dsWMS)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["VW_GET_MAX_QTY_VENDOR_LOT"] != null)) { + base.Tables.Add(new VW_GET_MAX_QTY_VENDOR_LOTDataTable(ds.Tables["VW_GET_MAX_QTY_VENDOR_LOT"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableVW_GET_MAX_QTY_VENDOR_LOT = ((VW_GET_MAX_QTY_VENDOR_LOTDataTable)(base.Tables["VW_GET_MAX_QTY_VENDOR_LOT"])); + if ((initTable == true)) { + if ((this.tableVW_GET_MAX_QTY_VENDOR_LOT != null)) { + this.tableVW_GET_MAX_QTY_VENDOR_LOT.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "dsWMS"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/dsWMS.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableVW_GET_MAX_QTY_VENDOR_LOT = new VW_GET_MAX_QTY_VENDOR_LOTDataTable(); + base.Tables.Add(this.tableVW_GET_MAX_QTY_VENDOR_LOT); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeVW_GET_MAX_QTY_VENDOR_LOT() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + dsWMS ds = new dsWMS(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void VW_GET_MAX_QTY_VENDOR_LOTRowChangeEventHandler(object sender, VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class VW_GET_MAX_QTY_VENDOR_LOTDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnPART_NO; + + private global::System.Data.DataColumn columnVENDOR_NM; + + private global::System.Data.DataColumn columnBATCH_NO; + + private global::System.Data.DataColumn columnQTY; + + private global::System.Data.DataColumn columnCUST_CODE; + + private global::System.Data.DataColumn columnVENDOR_LOT; + + private global::System.Data.DataColumn columnSID; + + private global::System.Data.DataColumn columnMFG_DATE; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTDataTable() { + this.TableName = "VW_GET_MAX_QTY_VENDOR_LOT"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VW_GET_MAX_QTY_VENDOR_LOTDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected VW_GET_MAX_QTY_VENDOR_LOTDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn PART_NOColumn { + get { + return this.columnPART_NO; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VENDOR_NMColumn { + get { + return this.columnVENDOR_NM; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn BATCH_NOColumn { + get { + return this.columnBATCH_NO; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn QTYColumn { + get { + return this.columnQTY; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn CUST_CODEColumn { + get { + return this.columnCUST_CODE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VENDOR_LOTColumn { + get { + return this.columnVENDOR_LOT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn MFG_DATEColumn { + get { + return this.columnMFG_DATE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTRow this[int index] { + get { + return ((VW_GET_MAX_QTY_VENDOR_LOTRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VW_GET_MAX_QTY_VENDOR_LOTRowChangeEventHandler VW_GET_MAX_QTY_VENDOR_LOTRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VW_GET_MAX_QTY_VENDOR_LOTRowChangeEventHandler VW_GET_MAX_QTY_VENDOR_LOTRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VW_GET_MAX_QTY_VENDOR_LOTRowChangeEventHandler VW_GET_MAX_QTY_VENDOR_LOTRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event VW_GET_MAX_QTY_VENDOR_LOTRowChangeEventHandler VW_GET_MAX_QTY_VENDOR_LOTRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddVW_GET_MAX_QTY_VENDOR_LOTRow(VW_GET_MAX_QTY_VENDOR_LOTRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTRow AddVW_GET_MAX_QTY_VENDOR_LOTRow(int idx, string PART_NO, string VENDOR_NM, string BATCH_NO, decimal QTY, string CUST_CODE, string VENDOR_LOT, string SID, string MFG_DATE) { + VW_GET_MAX_QTY_VENDOR_LOTRow rowVW_GET_MAX_QTY_VENDOR_LOTRow = ((VW_GET_MAX_QTY_VENDOR_LOTRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + idx, + PART_NO, + VENDOR_NM, + BATCH_NO, + QTY, + CUST_CODE, + VENDOR_LOT, + SID, + MFG_DATE}; + rowVW_GET_MAX_QTY_VENDOR_LOTRow.ItemArray = columnValuesArray; + this.Rows.Add(rowVW_GET_MAX_QTY_VENDOR_LOTRow); + return rowVW_GET_MAX_QTY_VENDOR_LOTRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTRow FindByidx(int idx) { + return ((VW_GET_MAX_QTY_VENDOR_LOTRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + VW_GET_MAX_QTY_VENDOR_LOTDataTable cln = ((VW_GET_MAX_QTY_VENDOR_LOTDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new VW_GET_MAX_QTY_VENDOR_LOTDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnPART_NO = base.Columns["PART_NO"]; + this.columnVENDOR_NM = base.Columns["VENDOR_NM"]; + this.columnBATCH_NO = base.Columns["BATCH_NO"]; + this.columnQTY = base.Columns["QTY"]; + this.columnCUST_CODE = base.Columns["CUST_CODE"]; + this.columnVENDOR_LOT = base.Columns["VENDOR_LOT"]; + this.columnSID = base.Columns["SID"]; + this.columnMFG_DATE = base.Columns["MFG_DATE"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnPART_NO = new global::System.Data.DataColumn("PART_NO", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPART_NO); + this.columnVENDOR_NM = new global::System.Data.DataColumn("VENDOR_NM", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVENDOR_NM); + this.columnBATCH_NO = new global::System.Data.DataColumn("BATCH_NO", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBATCH_NO); + this.columnQTY = new global::System.Data.DataColumn("QTY", typeof(decimal), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQTY); + this.columnCUST_CODE = new global::System.Data.DataColumn("CUST_CODE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnCUST_CODE); + this.columnVENDOR_LOT = new global::System.Data.DataColumn("VENDOR_LOT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVENDOR_LOT); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.columnMFG_DATE = new global::System.Data.DataColumn("MFG_DATE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnMFG_DATE); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AllowDBNull = false; + this.columnidx.Unique = true; + this.columnVENDOR_NM.AllowDBNull = false; + this.columnCUST_CODE.AllowDBNull = false; + this.columnCUST_CODE.MaxLength = 50; + this.columnVENDOR_LOT.AllowDBNull = false; + this.columnVENDOR_LOT.MaxLength = 50; + this.columnSID.AllowDBNull = false; + this.columnSID.MaxLength = 50; + this.columnMFG_DATE.MaxLength = 8; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTRow NewVW_GET_MAX_QTY_VENDOR_LOTRow() { + return ((VW_GET_MAX_QTY_VENDOR_LOTRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new VW_GET_MAX_QTY_VENDOR_LOTRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(VW_GET_MAX_QTY_VENDOR_LOTRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.VW_GET_MAX_QTY_VENDOR_LOTRowChanged != null)) { + this.VW_GET_MAX_QTY_VENDOR_LOTRowChanged(this, new VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent(((VW_GET_MAX_QTY_VENDOR_LOTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.VW_GET_MAX_QTY_VENDOR_LOTRowChanging != null)) { + this.VW_GET_MAX_QTY_VENDOR_LOTRowChanging(this, new VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent(((VW_GET_MAX_QTY_VENDOR_LOTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.VW_GET_MAX_QTY_VENDOR_LOTRowDeleted != null)) { + this.VW_GET_MAX_QTY_VENDOR_LOTRowDeleted(this, new VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent(((VW_GET_MAX_QTY_VENDOR_LOTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.VW_GET_MAX_QTY_VENDOR_LOTRowDeleting != null)) { + this.VW_GET_MAX_QTY_VENDOR_LOTRowDeleting(this, new VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent(((VW_GET_MAX_QTY_VENDOR_LOTRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveVW_GET_MAX_QTY_VENDOR_LOTRow(VW_GET_MAX_QTY_VENDOR_LOTRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + dsWMS ds = new dsWMS(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "VW_GET_MAX_QTY_VENDOR_LOTDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class VW_GET_MAX_QTY_VENDOR_LOTRow : global::System.Data.DataRow { + + private VW_GET_MAX_QTY_VENDOR_LOTDataTable tableVW_GET_MAX_QTY_VENDOR_LOT; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal VW_GET_MAX_QTY_VENDOR_LOTRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableVW_GET_MAX_QTY_VENDOR_LOT = ((VW_GET_MAX_QTY_VENDOR_LOTDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.idxColumn])); + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string PART_NO { + get { + if (this.IsPART_NONull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.PART_NOColumn])); + } + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.PART_NOColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VENDOR_NM { + get { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.VENDOR_NMColumn])); + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.VENDOR_NMColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string BATCH_NO { + get { + if (this.IsBATCH_NONull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.BATCH_NOColumn])); + } + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.BATCH_NOColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public decimal QTY { + get { + try { + return ((decimal)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.QTYColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("The value for the 'QTY' column in the 'VW_GET_MAX_QTY_VENDOR_LOT' table is DBNull.", e); + } + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.QTYColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string CUST_CODE { + get { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.CUST_CODEColumn])); + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.CUST_CODEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VENDOR_LOT { + get { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.VENDOR_LOTColumn])); + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.VENDOR_LOTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SID { + get { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.SIDColumn])); + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string MFG_DATE { + get { + if (this.IsMFG_DATENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.MFG_DATEColumn])); + } + } + set { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.MFG_DATEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPART_NONull() { + return this.IsNull(this.tableVW_GET_MAX_QTY_VENDOR_LOT.PART_NOColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPART_NONull() { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.PART_NOColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsBATCH_NONull() { + return this.IsNull(this.tableVW_GET_MAX_QTY_VENDOR_LOT.BATCH_NOColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetBATCH_NONull() { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.BATCH_NOColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsQTYNull() { + return this.IsNull(this.tableVW_GET_MAX_QTY_VENDOR_LOT.QTYColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetQTYNull() { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.QTYColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsMFG_DATENull() { + return this.IsNull(this.tableVW_GET_MAX_QTY_VENDOR_LOT.MFG_DATEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetMFG_DATENull() { + this[this.tableVW_GET_MAX_QTY_VENDOR_LOT.MFG_DATEColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent : global::System.EventArgs { + + private VW_GET_MAX_QTY_VENDOR_LOTRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTRowChangeEvent(VW_GET_MAX_QTY_VENDOR_LOTRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} +namespace Project.dsWMSTableAdapters { + + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class VW_GET_MAX_QTY_VENDOR_LOTTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public VW_GET_MAX_QTY_VENDOR_LOTTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "VW_GET_MAX_QTY_VENDOR_LOT"; + tableMapping.ColumnMappings.Add("PART_NO", "PART_NO"); + tableMapping.ColumnMappings.Add("VENDOR_NM", "VENDOR_NM"); + tableMapping.ColumnMappings.Add("BATCH_NO", "BATCH_NO"); + tableMapping.ColumnMappings.Add("QTY", "QTY"); + tableMapping.ColumnMappings.Add("CUST_CODE", "CUST_CODE"); + tableMapping.ColumnMappings.Add("VENDOR_LOT", "VENDOR_LOT"); + tableMapping.ColumnMappings.Add("SID", "SID"); + tableMapping.ColumnMappings.Add("MFG_DATE", "MFG_DATE"); + this._adapter.TableMappings.Add(tableMapping); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::Project.Properties.Settings.Default.WMS_DEV; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT SID, PART_NO, MFG_DATE, VENDOR_NM, BATCH_NO, QTY, CUST_CODE, VENDOR_LOT\r\n" + + "FROM VW_GET_MAX_QTY_VENDOR_LOT"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(dsWMS.VW_GET_MAX_QTY_VENDOR_LOTDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual dsWMS.VW_GET_MAX_QTY_VENDOR_LOTDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + dsWMS.VW_GET_MAX_QTY_VENDOR_LOTDataTable dataTable = new dsWMS.VW_GET_MAX_QTY_VENDOR_LOTDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class QueriesTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.IDbCommand[] _commandCollection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.IDbCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.IDbCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Project.Properties.Settings.Default.WMS_DEV); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).CommandText = "dbo.X_SP_GET_UNIT_ID_LABEL"; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).CommandType = global::System.Data.CommandType.StoredProcedure; + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RETURN_VALUE", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.ReturnValue, 10, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@P_PROGRAM_ID", global::System.Data.SqlDbType.VarChar, 500, global::System.Data.ParameterDirection.Input, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@P_CENTER_CD", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@P_ITEM_CD", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@P_REG_USER_ID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@P_REG_IP", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@O_UNIT_ID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.InputOutput, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@O_MSG", global::System.Data.SqlDbType.VarChar, 500, global::System.Data.ParameterDirection.InputOutput, 0, 0, null, global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int X_SP_GET_UNIT_ID_LABEL(string P_PROGRAM_ID, string P_CENTER_CD, string P_ITEM_CD, string P_REG_USER_ID, string P_REG_IP, ref string O_UNIT_ID, ref string O_MSG) { + global::System.Data.SqlClient.SqlCommand command = ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[0])); + if ((P_PROGRAM_ID == null)) { + command.Parameters[1].Value = global::System.DBNull.Value; + } + else { + command.Parameters[1].Value = ((string)(P_PROGRAM_ID)); + } + if ((P_CENTER_CD == null)) { + command.Parameters[2].Value = global::System.DBNull.Value; + } + else { + command.Parameters[2].Value = ((string)(P_CENTER_CD)); + } + if ((P_ITEM_CD == null)) { + command.Parameters[3].Value = global::System.DBNull.Value; + } + else { + command.Parameters[3].Value = ((string)(P_ITEM_CD)); + } + if ((P_REG_USER_ID == null)) { + command.Parameters[4].Value = global::System.DBNull.Value; + } + else { + command.Parameters[4].Value = ((string)(P_REG_USER_ID)); + } + if ((P_REG_IP == null)) { + command.Parameters[5].Value = global::System.DBNull.Value; + } + else { + command.Parameters[5].Value = ((string)(P_REG_IP)); + } + if ((O_UNIT_ID == null)) { + command.Parameters[6].Value = global::System.DBNull.Value; + } + else { + command.Parameters[6].Value = ((string)(O_UNIT_ID)); + } + if ((O_MSG == null)) { + command.Parameters[7].Value = global::System.DBNull.Value; + } + else { + command.Parameters[7].Value = ((string)(O_MSG)); + } + global::System.Data.ConnectionState previousConnectionState = command.Connection.State; + if (((command.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + command.Connection.Open(); + } + int returnValue; + try { + returnValue = command.ExecuteNonQuery(); + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + command.Connection.Close(); + } + } + if (((command.Parameters[6].Value == null) + || (command.Parameters[6].Value.GetType() == typeof(global::System.DBNull)))) { + O_UNIT_ID = null; + } + else { + O_UNIT_ID = ((string)(command.Parameters[6].Value)); + } + if (((command.Parameters[7].Value == null) + || (command.Parameters[7].Value.GetType() == typeof(global::System.DBNull)))) { + O_MSG = null; + } + else { + O_MSG = ((string)(command.Parameters[7].Value)); + } + return returnValue; + } + } + + /// + ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" + + "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")] + public partial class TableAdapterManager : global::System.ComponentModel.Component { + + private UpdateOrderOption _updateOrder; + + private bool _backupDataSetBeforeUpdate; + + private global::System.Data.IDbConnection _connection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public UpdateOrderOption UpdateOrder { + get { + return this._updateOrder; + } + set { + this._updateOrder = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool BackupDataSetBeforeUpdate { + get { + return this._backupDataSetBeforeUpdate; + } + set { + this._backupDataSetBeforeUpdate = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public global::System.Data.IDbConnection Connection { + get { + if ((this._connection != null)) { + return this._connection; + } + return null; + } + set { + this._connection = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int TableAdapterInstanceCount { + get { + int count = 0; + return count; + } + } + + /// + ///Update rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateUpdatedRows(dsWMS dataSet, global::System.Collections.Generic.List allChangedRows, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + return result; + } + + /// + ///Insert rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateInsertedRows(dsWMS dataSet, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + return result; + } + + /// + ///Delete rows in bottom-up order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateDeletedRows(dsWMS dataSet, global::System.Collections.Generic.List allChangedRows) { + int result = 0; + return result; + } + + /// + ///Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List allAddedRows) { + if (((updatedRows == null) + || (updatedRows.Length < 1))) { + return updatedRows; + } + if (((allAddedRows == null) + || (allAddedRows.Count < 1))) { + return updatedRows; + } + global::System.Collections.Generic.List realUpdatedRows = new global::System.Collections.Generic.List(); + for (int i = 0; (i < updatedRows.Length); i = (i + 1)) { + global::System.Data.DataRow row = updatedRows[i]; + if ((allAddedRows.Contains(row) == false)) { + realUpdatedRows.Add(row); + } + } + return realUpdatedRows.ToArray(); + } + + /// + ///Update all changes to the dataset. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public virtual int UpdateAll(dsWMS dataSet) { + if ((dataSet == null)) { + throw new global::System.ArgumentNullException("dataSet"); + } + if ((dataSet.HasChanges() == false)) { + return 0; + } + global::System.Data.IDbConnection workConnection = this.Connection; + if ((workConnection == null)) { + throw new global::System.ApplicationException("TableAdapterManager does not have connection information. Set each TableAdapterManager TableAdapter property to a valid Tabl" + + "eAdapter instance."); + } + bool workConnOpened = false; + if (((workConnection.State & global::System.Data.ConnectionState.Broken) + == global::System.Data.ConnectionState.Broken)) { + workConnection.Close(); + } + if ((workConnection.State == global::System.Data.ConnectionState.Closed)) { + workConnection.Open(); + workConnOpened = true; + } + global::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction(); + if ((workTransaction == null)) { + throw new global::System.ApplicationException("Cannot start a transaction. The current data connection does not support transactions or cannot start a transaction in the current state."); + } + global::System.Collections.Generic.List allChangedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List allAddedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.Dictionary revertConnections = new global::System.Collections.Generic.Dictionary(); + int result = 0; + global::System.Data.DataSet backupDataSet = null; + if (this.BackupDataSetBeforeUpdate) { + backupDataSet = new global::System.Data.DataSet(); + backupDataSet.Merge(dataSet); + } + try { + // ---- Prepare for update ----------- + // + // + //---- Perform updates ----------- + // + if ((this.UpdateOrder == UpdateOrderOption.UpdateInsertDelete)) { + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + } + else { + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + } + result = (result + this.UpdateDeletedRows(dataSet, allChangedRows)); + // + //---- Commit updates ----------- + // + workTransaction.Commit(); + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + if ((0 < allChangedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allChangedRows.Count]; + allChangedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + } + catch (global::System.Exception ex) { + workTransaction.Rollback(); + // ---- Restore the dataset ----------- + if (this.BackupDataSetBeforeUpdate) { + global::System.Diagnostics.Debug.Assert((backupDataSet != null)); + dataSet.Clear(); + dataSet.Merge(backupDataSet); + } + else { + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + row.SetAdded(); + } + } + } + throw ex; + } + finally { + if (workConnOpened) { + workConnection.Close(); + } + if ((0 < adaptersWithAcceptChangesDuringUpdate.Count)) { + global::System.Data.Common.DataAdapter[] adapters = new System.Data.Common.DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count]; + adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters); + for (int i = 0; (i < adapters.Length); i = (i + 1)) { + global::System.Data.Common.DataAdapter adapter = adapters[i]; + adapter.AcceptChangesDuringUpdate = true; + } + } + } + return result; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual void SortSelfReferenceRows(global::System.Data.DataRow[] rows, global::System.Data.DataRelation relation, bool childFirst) { + global::System.Array.Sort(rows, new SelfReferenceComparer(relation, childFirst)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual bool MatchTableAdapterConnection(global::System.Data.IDbConnection inputConnection) { + if ((this._connection != null)) { + return true; + } + if (((this.Connection == null) + || (inputConnection == null))) { + return true; + } + if (string.Equals(this.Connection.ConnectionString, inputConnection.ConnectionString, global::System.StringComparison.Ordinal)) { + return true; + } + return false; + } + + /// + ///Update Order Option + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public enum UpdateOrderOption { + + InsertUpdateDelete = 0, + + UpdateInsertDelete = 1, + } + + /// + ///Used to sort self-referenced table's rows + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private class SelfReferenceComparer : object, global::System.Collections.Generic.IComparer { + + private global::System.Data.DataRelation _relation; + + private int _childFirst; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SelfReferenceComparer(global::System.Data.DataRelation relation, bool childFirst) { + this._relation = relation; + if (childFirst) { + this._childFirst = -1; + } + else { + this._childFirst = 1; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow GetRoot(global::System.Data.DataRow row, out int distance) { + global::System.Diagnostics.Debug.Assert((row != null)); + global::System.Data.DataRow root = row; + distance = 0; + + global::System.Collections.Generic.IDictionary traversedRows = new global::System.Collections.Generic.Dictionary(); + traversedRows[row] = row; + + global::System.Data.DataRow parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + } + + if ((distance == 0)) { + traversedRows.Clear(); + traversedRows[row] = row; + parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + } + } + + return root; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int Compare(global::System.Data.DataRow row1, global::System.Data.DataRow row2) { + if (object.ReferenceEquals(row1, row2)) { + return 0; + } + if ((row1 == null)) { + return -1; + } + if ((row2 == null)) { + return 1; + } + + int distance1 = 0; + global::System.Data.DataRow root1 = this.GetRoot(row1, out distance1); + + int distance2 = 0; + global::System.Data.DataRow root2 = this.GetRoot(row2, out distance2); + + if (object.ReferenceEquals(root1, root2)) { + return (this._childFirst * distance1.CompareTo(distance2)); + } + else { + global::System.Diagnostics.Debug.Assert(((root1.Table != null) + && (root2.Table != null))); + if ((root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2))) { + return -1; + } + else { + return 1; + } + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Handler/Project/dsWMS.xsc b/Handler/Project/dsWMS.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Handler/Project/dsWMS.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Handler/Project/dsWMS.xsd b/Handler/Project/dsWMS.xsd new file mode 100644 index 0000000..9168fae --- /dev/null +++ b/Handler/Project/dsWMS.xsd @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + SELECT SID, PART_NO, MFG_DATE, VENDOR_NM, BATCH_NO, QTY, CUST_CODE, VENDOR_LOT +FROM VW_GET_MAX_QTY_VENDOR_LOT + + + + + + + + + + + + + + + + + + + + + + + dbo.X_SP_GET_UNIT_ID_LABEL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/dsWMS.xss b/Handler/Project/dsWMS.xss new file mode 100644 index 0000000..6d9680d --- /dev/null +++ b/Handler/Project/dsWMS.xss @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/Handler/Project/fMain.Designer.cs b/Handler/Project/fMain.Designer.cs new file mode 100644 index 0000000..d9aef2b --- /dev/null +++ b/Handler/Project/fMain.Designer.cs @@ -0,0 +1,5461 @@ +namespace Project +{ + partial class FMain + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support + /// do not modify the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMain)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle(); + arFrame.Control.ColorListItem colorListItem1 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem2 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem3 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem4 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem5 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem6 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem7 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem8 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem9 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem10 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem11 = new arFrame.Control.ColorListItem(); + arFrame.Control.ColorListItem colorListItem12 = new arFrame.Control.ColorListItem(); + arCtl.sLogMessageColor sLogMessageColor1 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor2 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor3 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor4 = new arCtl.sLogMessageColor(); + UIControl.CPicker cPicker1 = new UIControl.CPicker(); + UIControl.CPicker cPicker2 = new UIControl.CPicker(); + UIControl.CPort cPort1 = new UIControl.CPort(); + UIControl.CPort cPort2 = new UIControl.CPort(); + UIControl.CPort cPort3 = new UIControl.CPort(); + arCtl.ListView2.ColorData colorData1 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData2 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData3 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData4 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData5 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData6 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData7 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.ColorData colorData8 = new arCtl.ListView2.ColorData(); + arCtl.ListView2.Column column2 = new arCtl.ListView2.Column(); + arCtl.ListView2.Column column3 = new arCtl.ListView2.Column(); + arCtl.ListView2.Column column4 = new arCtl.ListView2.Column(); + arCtl.ListView2.Column column5 = new arCtl.ListView2.Column(); + arCtl.ListView2.Column column6 = new arCtl.ListView2.Column(); + arCtl.ListView2.Column column7 = new arCtl.ListView2.Column(); + arCtl.ListView2.ItemStyle itemStyle1 = new arCtl.ListView2.ItemStyle(); + arCtl.ListView2.Row row1 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell1 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell2 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell3 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell4 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell5 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell6 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row2 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell7 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell8 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell9 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell10 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell11 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell12 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row3 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell13 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell14 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell15 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell16 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell17 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell18 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row4 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell19 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell20 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell21 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell22 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell23 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell24 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row5 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell25 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell26 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell27 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell28 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell29 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell30 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row6 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell31 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell32 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell33 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell34 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell35 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell36 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row7 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell37 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell38 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell39 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell40 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell41 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell42 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row8 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell43 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell44 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell45 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell46 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell47 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell48 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row9 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell49 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell50 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell51 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell52 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell53 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell54 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row10 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell55 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell56 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell57 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell58 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell59 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell60 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row11 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell61 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell62 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell63 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell64 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell65 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell66 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row12 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell67 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell68 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell69 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell70 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell71 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell72 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row13 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell73 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell74 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell75 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell76 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell77 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell78 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row14 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell79 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell80 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell81 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell82 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell83 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell84 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row15 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell85 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell86 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell87 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell88 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell89 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell90 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Row row16 = new arCtl.ListView2.Row(); + arCtl.ListView2.Cell cell91 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell92 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell93 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell94 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell95 = new arCtl.ListView2.Cell(); + arCtl.ListView2.Cell cell96 = new arCtl.ListView2.Cell(); + arCtl.ListView2.ItemStyle itemStyle2 = new arCtl.ListView2.ItemStyle(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.arLabel76 = new arCtl.arLabel(); + this.arLabel74 = new arCtl.arLabel(); + this.arLabel75 = new arCtl.arLabel(); + this.arLabel73 = new arCtl.arLabel(); + this.arLabel11 = new arCtl.arLabel(); + this.arLabel6 = new arCtl.arLabel(); + this.lbMsg = new arCtl.arLabel(); + this.lbTime = new arCtl.arLabel(); + this.btStart = new arCtl.arLabel(); + this.btReset = new arCtl.arLabel(); + this.btStop = new arCtl.arLabel(); + this.systemParameterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem9 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.demoRunToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.panBottom = new System.Windows.Forms.Panel(); + this.arDatagridView1 = new arCtl.arDatagridView(); + this.target = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.JTYPE = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.sTIMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PTIME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.sIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.VNAME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dvc_loc = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qTYDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qtymax = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MFGDATE = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.VLOT = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PNO = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MCN = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PRNATTACH = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.PRNVALID = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.LOC = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.SID0 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.RID0 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.QTY0 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ETIME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.JGUID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.GUID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.새로고침ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new Project.DataSet1(); + this.progressBarRefresh = new System.Windows.Forms.ProgressBar(); + this.cmCam = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.liveViewProcessOnOffToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.zoomFitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.readBarcodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.livetaskToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.keyenceTrigOnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.keyenceTrigOffToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.keyenceSaveImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator(); + this.panel37 = new System.Windows.Forms.Panel(); + this.lbLock2 = new arCtl.arLabel(); + this.panel10 = new System.Windows.Forms.Panel(); + this.lbLock1 = new arCtl.arLabel(); + this.panel15 = new System.Windows.Forms.Panel(); + this.lbLock0 = new arCtl.arLabel(); + this.cmBarcode = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem22 = new System.Windows.Forms.ToolStripMenuItem(); + this.cmDebug = new System.Windows.Forms.ContextMenuStrip(this.components); + this.inboundToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.postDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.manualPrintToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.apiCheckToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.barcodeTestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.countToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.motionEmulatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.customerRuleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sMResetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.systemParameterMotorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.regExTestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.debugModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripSeparator(); + this.dIOMonitorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.refreshControklToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.작업선택화면ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.historyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.detectCountToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menusToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sampleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clearToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.screenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.jOBStartToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.jObEndToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.multiSIDSelectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.motionParameterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis0ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis4ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.processListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripSeparator(); + this.visionProcess0ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.visionProcess1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.speedLimitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripSeparator(); + this.bcdRegProcessClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.displayVARToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripSeparator(); + this.getImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.idxDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.stripIdDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.oKDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.nGDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mISSDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.fileMapDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataPathDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mapOriginDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mapArrayDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.testmenuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.panStatusBar = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.IOState = new arFrame.Control.GridView(); + this.HWState = new arFrame.Control.GridView(); + this.panTopMenu = new System.Windows.Forms.ToolStrip(); + this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripButton7 = new System.Windows.Forms.ToolStripDropDownButton(); + this.모델선택ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.btModelMot = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripSeparator(); + this.바코드룰ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sID정보ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.프로그램열기ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.인바운드데이터업데이트ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton23 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.btSetting = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton8 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton9 = new System.Windows.Forms.ToolStripButton(); + this.btMReset = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton16 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton11 = new System.Windows.Forms.ToolStripDropDownButton(); + this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem(); + this.btLogViewer = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton6 = new System.Windows.Forms.ToolStripSplitButton(); + this.toolStripButton10 = new System.Windows.Forms.ToolStripDropDownButton(); + this.btManage = new System.Windows.Forms.ToolStripMenuItem(); + this.빠른실행ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.btAutoReelOut = new System.Windows.Forms.ToolStripButton(); + this.btLightRoom = new System.Windows.Forms.ToolStripButton(); + this.btManualPrint = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.btJobCancle = new System.Windows.Forms.ToolStripButton(); + this.btDebug = new System.Windows.Forms.ToolStripButton(); + this.btCheckInfo = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripDropDownButton(); + this.바코드LToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.연결ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem26 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem21 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem24 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItem28 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem30 = new System.Windows.Forms.ToolStripMenuItem(); + this.바코드키엔스ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem17 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripSeparator(); + this.triggerOnToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.triggerOffToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem19 = new System.Windows.Forms.ToolStripSeparator(); + this.connectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.disConnectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem20 = new System.Windows.Forms.ToolStripSeparator(); + this.resetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.webManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem23 = new System.Windows.Forms.ToolStripSeparator(); + this.loadMemoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem27 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem29 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem31 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem32 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem33 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem34 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem35 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem36 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.btHistory = new System.Windows.Forms.ToolStripButton(); + this.panel24 = new System.Windows.Forms.Panel(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.RtLog = new arCtl.LogTextBox(); + this.panel25 = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.panel26 = new System.Windows.Forms.Panel(); + this.grpProgress = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.lbCntLeft = new arCtl.arLabel(); + this.lbCntRight = new arCtl.arLabel(); + this.lbTitleNG = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.lbCntPicker = new arCtl.arLabel(); + this.panel27 = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.tbVisionL = new arCtl.arLabel(); + this.label5 = new System.Windows.Forms.Label(); + this.tbBarcodeR = new arCtl.arLabel(); + this.label6 = new System.Windows.Forms.Label(); + this.tbVisionR = new arCtl.arLabel(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tbBarcodeF = new arCtl.arLabel(); + this.panel28 = new System.Windows.Forms.Panel(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.keyenceviewR = new System.Windows.Forms.PictureBox(); + this.keyenceviewF = new System.Windows.Forms.PictureBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.lbModelName = new arCtl.arLabel(); + this.arLabel1 = new arCtl.arLabel(); + this.panel9 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.hmi1 = new UIControl.HMI(); + this.listView21 = new arCtl.ListView2(); + this.panBottom.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.arDatagridView1)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + this.cmCam.SuspendLayout(); + this.panel37.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel15.SuspendLayout(); + this.cmBarcode.SuspendLayout(); + this.cmDebug.SuspendLayout(); + this.panStatusBar.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panTopMenu.SuspendLayout(); + this.panel24.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.grpProgress.SuspendLayout(); + this.tableLayoutPanel5.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tableLayoutPanel4.SuspendLayout(); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.keyenceviewR)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.keyenceviewF)).BeginInit(); + this.groupBox3.SuspendLayout(); + this.panel9.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tmDisplay + // + this.tmDisplay.Interval = 150; + this.tmDisplay.Tick += new System.EventHandler(this._DisplayTimer); + // + // arLabel76 + // + this.arLabel76.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.arLabel76.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel76.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel76.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel76.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel76.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel76.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel76.Cursor = System.Windows.Forms.Cursors.Hand; + this.arLabel76.Dock = System.Windows.Forms.DockStyle.Right; + this.arLabel76.Font = new System.Drawing.Font("Consolas", 35.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel76.ForeColor = System.Drawing.Color.Red; + this.arLabel76.GradientEnable = true; + this.arLabel76.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel76.GradientRepeatBG = false; + this.arLabel76.isButton = true; + this.arLabel76.Location = new System.Drawing.Point(312, 1); + this.arLabel76.Margin = new System.Windows.Forms.Padding(0); + this.arLabel76.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel76.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel76.msg = null; + this.arLabel76.Name = "arLabel76"; + this.arLabel76.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel76.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel76.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel76.ProgressEnable = false; + this.arLabel76.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel76.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel76.ProgressMax = 100F; + this.arLabel76.ProgressMin = 0F; + this.arLabel76.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel76.ProgressValue = 0F; + this.arLabel76.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel76.Sign = ""; + this.arLabel76.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel76.SignColor = System.Drawing.Color.Yellow; + this.arLabel76.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel76.Size = new System.Drawing.Size(100, 54); + this.arLabel76.TabIndex = 18; + this.arLabel76.Tag = "2"; + this.arLabel76.Text = "▲"; + this.arLabel76.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel76.TextShadow = true; + this.arLabel76.TextVisible = true; + this.toolTip1.SetToolTip(this.arLabel76, "Port Up"); + this.arLabel76.Click += new System.EventHandler(this.arLabel11_Click_1); + // + // arLabel74 + // + this.arLabel74.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.arLabel74.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel74.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel74.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel74.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel74.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel74.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel74.Cursor = System.Windows.Forms.Cursors.Hand; + this.arLabel74.Dock = System.Windows.Forms.DockStyle.Left; + this.arLabel74.Font = new System.Drawing.Font("Consolas", 35.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel74.ForeColor = System.Drawing.Color.Blue; + this.arLabel74.GradientEnable = true; + this.arLabel74.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel74.GradientRepeatBG = false; + this.arLabel74.isButton = true; + this.arLabel74.Location = new System.Drawing.Point(1, 1); + this.arLabel74.Margin = new System.Windows.Forms.Padding(0); + this.arLabel74.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel74.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel74.msg = null; + this.arLabel74.Name = "arLabel74"; + this.arLabel74.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel74.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel74.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel74.ProgressEnable = false; + this.arLabel74.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel74.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel74.ProgressMax = 100F; + this.arLabel74.ProgressMin = 0F; + this.arLabel74.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel74.ProgressValue = 0F; + this.arLabel74.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel74.Sign = ""; + this.arLabel74.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel74.SignColor = System.Drawing.Color.Yellow; + this.arLabel74.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel74.Size = new System.Drawing.Size(100, 54); + this.arLabel74.TabIndex = 17; + this.arLabel74.Tag = "2"; + this.arLabel74.Text = "▼"; + this.arLabel74.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel74.TextShadow = true; + this.arLabel74.TextVisible = true; + this.toolTip1.SetToolTip(this.arLabel74, "Port Down"); + this.arLabel74.Click += new System.EventHandler(this.arLabel6_Click); + // + // arLabel75 + // + this.arLabel75.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.arLabel75.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel75.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel75.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel75.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel75.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel75.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel75.Cursor = System.Windows.Forms.Cursors.Hand; + this.arLabel75.Dock = System.Windows.Forms.DockStyle.Right; + this.arLabel75.Font = new System.Drawing.Font("Consolas", 35.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel75.ForeColor = System.Drawing.Color.Red; + this.arLabel75.GradientEnable = true; + this.arLabel75.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel75.GradientRepeatBG = false; + this.arLabel75.isButton = true; + this.arLabel75.Location = new System.Drawing.Point(311, 1); + this.arLabel75.Margin = new System.Windows.Forms.Padding(0); + this.arLabel75.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel75.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel75.msg = null; + this.arLabel75.Name = "arLabel75"; + this.arLabel75.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel75.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel75.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel75.ProgressEnable = false; + this.arLabel75.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel75.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel75.ProgressMax = 100F; + this.arLabel75.ProgressMin = 0F; + this.arLabel75.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel75.ProgressValue = 0F; + this.arLabel75.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel75.Sign = ""; + this.arLabel75.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel75.SignColor = System.Drawing.Color.Yellow; + this.arLabel75.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel75.Size = new System.Drawing.Size(100, 54); + this.arLabel75.TabIndex = 18; + this.arLabel75.Tag = "1"; + this.arLabel75.Text = "▲"; + this.arLabel75.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel75.TextShadow = true; + this.arLabel75.TextVisible = true; + this.toolTip1.SetToolTip(this.arLabel75, "Port Up"); + this.arLabel75.Click += new System.EventHandler(this.arLabel11_Click_1); + // + // arLabel73 + // + this.arLabel73.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.arLabel73.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel73.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel73.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel73.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel73.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel73.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel73.Cursor = System.Windows.Forms.Cursors.Hand; + this.arLabel73.Dock = System.Windows.Forms.DockStyle.Left; + this.arLabel73.Font = new System.Drawing.Font("Consolas", 35.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel73.ForeColor = System.Drawing.Color.Blue; + this.arLabel73.GradientEnable = true; + this.arLabel73.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel73.GradientRepeatBG = false; + this.arLabel73.isButton = true; + this.arLabel73.Location = new System.Drawing.Point(1, 1); + this.arLabel73.Margin = new System.Windows.Forms.Padding(0); + this.arLabel73.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel73.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel73.msg = null; + this.arLabel73.Name = "arLabel73"; + this.arLabel73.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel73.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel73.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel73.ProgressEnable = false; + this.arLabel73.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel73.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel73.ProgressMax = 100F; + this.arLabel73.ProgressMin = 0F; + this.arLabel73.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel73.ProgressValue = 0F; + this.arLabel73.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel73.Sign = ""; + this.arLabel73.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel73.SignColor = System.Drawing.Color.Yellow; + this.arLabel73.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel73.Size = new System.Drawing.Size(100, 54); + this.arLabel73.TabIndex = 17; + this.arLabel73.Tag = "1"; + this.arLabel73.Text = "▼"; + this.arLabel73.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel73.TextShadow = true; + this.arLabel73.TextVisible = true; + this.toolTip1.SetToolTip(this.arLabel73, "Port Down"); + this.arLabel73.Click += new System.EventHandler(this.arLabel6_Click); + // + // arLabel11 + // + this.arLabel11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.arLabel11.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel11.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel11.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel11.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel11.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel11.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel11.Cursor = System.Windows.Forms.Cursors.Hand; + this.arLabel11.Dock = System.Windows.Forms.DockStyle.Right; + this.arLabel11.Font = new System.Drawing.Font("Consolas", 35.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel11.ForeColor = System.Drawing.Color.Red; + this.arLabel11.GradientEnable = true; + this.arLabel11.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel11.GradientRepeatBG = false; + this.arLabel11.isButton = true; + this.arLabel11.Location = new System.Drawing.Point(311, 1); + this.arLabel11.Margin = new System.Windows.Forms.Padding(0); + this.arLabel11.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel11.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel11.msg = null; + this.arLabel11.Name = "arLabel11"; + this.arLabel11.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel11.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel11.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel11.ProgressEnable = false; + this.arLabel11.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel11.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel11.ProgressMax = 100F; + this.arLabel11.ProgressMin = 0F; + this.arLabel11.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel11.ProgressValue = 0F; + this.arLabel11.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel11.Sign = ""; + this.arLabel11.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel11.SignColor = System.Drawing.Color.Yellow; + this.arLabel11.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel11.Size = new System.Drawing.Size(100, 54); + this.arLabel11.TabIndex = 17; + this.arLabel11.Tag = "0"; + this.arLabel11.Text = "▲"; + this.arLabel11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel11.TextShadow = true; + this.arLabel11.TextVisible = true; + this.toolTip1.SetToolTip(this.arLabel11, "Port Up"); + this.arLabel11.Click += new System.EventHandler(this.arLabel11_Click_1); + // + // arLabel6 + // + this.arLabel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.arLabel6.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel6.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel6.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.arLabel6.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel6.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel6.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel6.Cursor = System.Windows.Forms.Cursors.Hand; + this.arLabel6.Dock = System.Windows.Forms.DockStyle.Left; + this.arLabel6.Font = new System.Drawing.Font("Consolas", 35.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel6.ForeColor = System.Drawing.Color.Blue; + this.arLabel6.GradientEnable = true; + this.arLabel6.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.arLabel6.GradientRepeatBG = false; + this.arLabel6.isButton = true; + this.arLabel6.Location = new System.Drawing.Point(1, 1); + this.arLabel6.Margin = new System.Windows.Forms.Padding(0); + this.arLabel6.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel6.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel6.msg = null; + this.arLabel6.Name = "arLabel6"; + this.arLabel6.ProgressBorderColor = System.Drawing.Color.Black; + this.arLabel6.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.arLabel6.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.arLabel6.ProgressEnable = false; + this.arLabel6.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.arLabel6.ProgressForeColor = System.Drawing.Color.Black; + this.arLabel6.ProgressMax = 100F; + this.arLabel6.ProgressMin = 0F; + this.arLabel6.ProgressPadding = new System.Windows.Forms.Padding(0); + this.arLabel6.ProgressValue = 0F; + this.arLabel6.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.arLabel6.Sign = ""; + this.arLabel6.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel6.SignColor = System.Drawing.Color.Yellow; + this.arLabel6.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.arLabel6.Size = new System.Drawing.Size(100, 54); + this.arLabel6.TabIndex = 16; + this.arLabel6.Tag = "0"; + this.arLabel6.Text = "▼"; + this.arLabel6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel6.TextShadow = true; + this.arLabel6.TextVisible = true; + this.toolTip1.SetToolTip(this.arLabel6, "Port Down"); + this.arLabel6.Click += new System.EventHandler(this.arLabel6_Click); + // + // lbMsg + // + this.lbMsg.BackColor = System.Drawing.Color.Tomato; + this.lbMsg.BackColor2 = System.Drawing.Color.Tomato; + this.lbMsg.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbMsg.BorderColor = System.Drawing.Color.Black; + this.lbMsg.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbMsg.BorderSize = new System.Windows.Forms.Padding(0); + this.lbMsg.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbMsg.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbMsg.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbMsg.Font = new System.Drawing.Font("맑은 고딕", 20F); + this.lbMsg.ForeColor = System.Drawing.Color.White; + this.lbMsg.GradientEnable = true; + this.lbMsg.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbMsg.GradientRepeatBG = false; + this.lbMsg.isButton = false; + this.lbMsg.Location = new System.Drawing.Point(0, 0); + this.lbMsg.MouseDownColor = System.Drawing.Color.Yellow; + this.lbMsg.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbMsg.msg = null; + this.lbMsg.Name = "lbMsg"; + this.lbMsg.ProgressBorderColor = System.Drawing.Color.Transparent; + this.lbMsg.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbMsg.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbMsg.ProgressEnable = false; + this.lbMsg.ProgressFont = new System.Drawing.Font("맑은 고딕", 20F); + this.lbMsg.ProgressForeColor = System.Drawing.Color.White; + this.lbMsg.ProgressMax = 100F; + this.lbMsg.ProgressMin = 0F; + this.lbMsg.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbMsg.ProgressValue = 0F; + this.lbMsg.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.lbMsg.Sign = ""; + this.lbMsg.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbMsg.SignColor = System.Drawing.Color.Yellow; + this.lbMsg.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbMsg.Size = new System.Drawing.Size(1237, 42); + this.lbMsg.TabIndex = 1; + this.lbMsg.Text = "--"; + this.lbMsg.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbMsg.TextShadow = true; + this.lbMsg.TextVisible = true; + this.toolTip1.SetToolTip(this.lbMsg, "Work Message"); + this.lbMsg.Click += new System.EventHandler(this.lbMsg_Click); + // + // lbTime + // + this.lbTime.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); + this.lbTime.BackColor2 = System.Drawing.Color.Empty; + this.lbTime.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbTime.BorderColor = System.Drawing.Color.Red; + this.lbTime.BorderColorOver = System.Drawing.Color.Red; + this.lbTime.BorderSize = new System.Windows.Forms.Padding(0); + this.lbTime.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.tableLayoutPanel3.SetColumnSpan(this.lbTime, 3); + this.lbTime.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbTime.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbTime.Font = new System.Drawing.Font("Cambria", 13F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbTime.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48))))); + this.lbTime.GradientEnable = true; + this.lbTime.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + this.lbTime.GradientRepeatBG = false; + this.lbTime.isButton = false; + this.lbTime.Location = new System.Drawing.Point(0, 100); + this.lbTime.Margin = new System.Windows.Forms.Padding(0); + this.lbTime.MouseDownColor = System.Drawing.Color.Yellow; + this.lbTime.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbTime.msg = null; + this.lbTime.Name = "lbTime"; + this.lbTime.ProgressBorderColor = System.Drawing.Color.Black; + this.lbTime.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbTime.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbTime.ProgressEnable = false; + this.lbTime.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbTime.ProgressForeColor = System.Drawing.Color.Black; + this.lbTime.ProgressMax = 100F; + this.lbTime.ProgressMin = 0F; + this.lbTime.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbTime.ProgressValue = 0F; + this.lbTime.ShadowColor = System.Drawing.Color.WhiteSmoke; + this.lbTime.Sign = ""; + this.lbTime.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbTime.SignColor = System.Drawing.Color.Yellow; + this.lbTime.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbTime.Size = new System.Drawing.Size(305, 25); + this.lbTime.TabIndex = 5; + this.lbTime.Text = "1982-11-23 00:00:00"; + this.lbTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbTime.TextShadow = false; + this.lbTime.TextVisible = true; + this.toolTip1.SetToolTip(this.lbTime, "Current Time"); + // + // btStart + // + this.btStart.BackColor = System.Drawing.Color.Lime; + this.btStart.BackColor2 = System.Drawing.Color.Green; + this.btStart.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.btStart.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.btStart.BorderColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.btStart.BorderSize = new System.Windows.Forms.Padding(10); + this.btStart.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.btStart.Cursor = System.Windows.Forms.Cursors.Hand; + this.btStart.Dock = System.Windows.Forms.DockStyle.Fill; + this.btStart.Enabled = false; + this.btStart.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btStart.ForeColor = System.Drawing.Color.WhiteSmoke; + this.btStart.GradientEnable = true; + this.btStart.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.btStart.GradientRepeatBG = false; + this.btStart.isButton = true; + this.btStart.Location = new System.Drawing.Point(2, 2); + this.btStart.Margin = new System.Windows.Forms.Padding(2); + this.btStart.MouseDownColor = System.Drawing.Color.Yellow; + this.btStart.MouseOverColor = System.Drawing.Color.Lime; + this.btStart.msg = null; + this.btStart.Name = "btStart"; + this.btStart.ProgressBorderColor = System.Drawing.Color.Black; + this.btStart.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.btStart.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.btStart.ProgressEnable = false; + this.btStart.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.btStart.ProgressForeColor = System.Drawing.Color.Black; + this.btStart.ProgressMax = 100F; + this.btStart.ProgressMin = 0F; + this.btStart.ProgressPadding = new System.Windows.Forms.Padding(0); + this.btStart.ProgressValue = 0F; + this.btStart.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btStart.Sign = ""; + this.btStart.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.btStart.SignColor = System.Drawing.Color.Yellow; + this.btStart.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.btStart.Size = new System.Drawing.Size(97, 96); + this.btStart.TabIndex = 4; + this.btStart.Text = "START"; + this.btStart.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.btStart.TextShadow = true; + this.btStart.TextVisible = true; + this.toolTip1.SetToolTip(this.btStart, "Start the equipment.\r\nSame as the \"START\" button at the bottom of the front panel" + + "."); + this.btStart.Click += new System.EventHandler(this.arLabel2_Click_1); + // + // btReset + // + this.btReset.BackColor = System.Drawing.Color.Gold; + this.btReset.BackColor2 = System.Drawing.Color.Goldenrod; + this.btReset.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.btReset.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.btReset.BorderColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.btReset.BorderSize = new System.Windows.Forms.Padding(10); + this.btReset.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.btReset.Cursor = System.Windows.Forms.Cursors.Hand; + this.btReset.Dock = System.Windows.Forms.DockStyle.Fill; + this.btReset.Enabled = false; + this.btReset.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btReset.ForeColor = System.Drawing.Color.WhiteSmoke; + this.btReset.GradientEnable = true; + this.btReset.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.btReset.GradientRepeatBG = false; + this.btReset.isButton = true; + this.btReset.Location = new System.Drawing.Point(204, 2); + this.btReset.Margin = new System.Windows.Forms.Padding(2); + this.btReset.MouseDownColor = System.Drawing.Color.Yellow; + this.btReset.MouseOverColor = System.Drawing.Color.Gold; + this.btReset.msg = null; + this.btReset.Name = "btReset"; + this.btReset.ProgressBorderColor = System.Drawing.Color.Black; + this.btReset.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.btReset.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.btReset.ProgressEnable = false; + this.btReset.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.btReset.ProgressForeColor = System.Drawing.Color.Black; + this.btReset.ProgressMax = 100F; + this.btReset.ProgressMin = 0F; + this.btReset.ProgressPadding = new System.Windows.Forms.Padding(0); + this.btReset.ProgressValue = 0F; + this.btReset.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btReset.Sign = ""; + this.btReset.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.btReset.SignColor = System.Drawing.Color.Yellow; + this.btReset.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.btReset.Size = new System.Drawing.Size(99, 96); + this.btReset.TabIndex = 4; + this.btReset.Text = "RESET"; + this.btReset.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.btReset.TextShadow = true; + this.btReset.TextVisible = true; + this.toolTip1.SetToolTip(this.btReset, "Reset the error state.\r\nSame as the \"RESET\" button at the bottom of the front pan" + + "el.\r\nAlso handles buzzer OFF function."); + this.btReset.Click += new System.EventHandler(this.btReset_Click); + // + // btStop + // + this.btStop.BackColor = System.Drawing.Color.Tomato; + this.btStop.BackColor2 = System.Drawing.Color.Red; + this.btStop.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.btStop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.btStop.BorderColorOver = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.btStop.BorderSize = new System.Windows.Forms.Padding(10); + this.btStop.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.btStop.Cursor = System.Windows.Forms.Cursors.Hand; + this.btStop.Dock = System.Windows.Forms.DockStyle.Fill; + this.btStop.Enabled = false; + this.btStop.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btStop.ForeColor = System.Drawing.Color.WhiteSmoke; + this.btStop.GradientEnable = true; + this.btStop.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.btStop.GradientRepeatBG = false; + this.btStop.isButton = true; + this.btStop.Location = new System.Drawing.Point(103, 2); + this.btStop.Margin = new System.Windows.Forms.Padding(2); + this.btStop.MouseDownColor = System.Drawing.Color.Yellow; + this.btStop.MouseOverColor = System.Drawing.Color.Tomato; + this.btStop.msg = null; + this.btStop.Name = "btStop"; + this.btStop.ProgressBorderColor = System.Drawing.Color.Black; + this.btStop.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.btStop.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.btStop.ProgressEnable = false; + this.btStop.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.btStop.ProgressForeColor = System.Drawing.Color.Black; + this.btStop.ProgressMax = 100F; + this.btStop.ProgressMin = 0F; + this.btStop.ProgressPadding = new System.Windows.Forms.Padding(0); + this.btStop.ProgressValue = 0F; + this.btStop.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btStop.Sign = ""; + this.btStop.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.btStop.SignColor = System.Drawing.Color.Yellow; + this.btStop.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.btStop.Size = new System.Drawing.Size(97, 96); + this.btStop.TabIndex = 4; + this.btStop.Text = "STOP"; + this.btStop.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.btStop.TextShadow = true; + this.btStop.TextVisible = true; + this.toolTip1.SetToolTip(this.btStop, resources.GetString("btStop.ToolTip")); + this.btStop.Click += new System.EventHandler(this.arLabel4_Click_1); + // + // systemParameterToolStripMenuItem + // + this.systemParameterToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.systemParameterToolStripMenuItem.Name = "systemParameterToolStripMenuItem"; + this.systemParameterToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.systemParameterToolStripMenuItem.Text = "System Parameter"; + this.systemParameterToolStripMenuItem.Click += new System.EventHandler(this.systemParameterToolStripMenuItem_Click); + // + // toolStripMenuItem9 + // + this.toolStripMenuItem9.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.toolStripMenuItem9.Name = "toolStripMenuItem9"; + this.toolStripMenuItem9.Size = new System.Drawing.Size(255, 22); + this.toolStripMenuItem9.Text = "Show Log"; + this.toolStripMenuItem9.Click += new System.EventHandler(this.toolStripMenuItem9_Click); + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(252, 6); + // + // demoRunToolStripMenuItem + // + this.demoRunToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.demoRunToolStripMenuItem.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.demoRunToolStripMenuItem.Name = "demoRunToolStripMenuItem"; + this.demoRunToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.demoRunToolStripMenuItem.Text = "save data test"; + this.demoRunToolStripMenuItem.Click += new System.EventHandler(this.demoRunToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(252, 6); + // + // panBottom + // + this.panBottom.Controls.Add(this.arDatagridView1); + this.panBottom.Controls.Add(this.progressBarRefresh); + this.panBottom.Dock = System.Windows.Forms.DockStyle.Fill; + this.panBottom.Location = new System.Drawing.Point(1, 549); + this.panBottom.Name = "panBottom"; + this.panBottom.Size = new System.Drawing.Size(1237, 389); + this.panBottom.TabIndex = 3; + // + // arDatagridView1 + // + this.arDatagridView1.A_DelCurrentCell = true; + this.arDatagridView1.A_EnterToTab = true; + this.arDatagridView1.A_KoreanField = null; + this.arDatagridView1.A_UpperField = null; + this.arDatagridView1.A_ViewRownumOnHeader = true; + this.arDatagridView1.AllowUserToAddRows = false; + this.arDatagridView1.AllowUserToDeleteRows = false; + this.arDatagridView1.AutoGenerateColumns = false; + this.arDatagridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.arDatagridView1.BackgroundColor = System.Drawing.SystemColors.Control; + this.arDatagridView1.ColumnHeadersHeight = 30; + this.arDatagridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.arDatagridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.target, + this.JTYPE, + this.sTIMEDataGridViewTextBoxColumn, + this.PTIME, + this.sIDDataGridViewTextBoxColumn, + this.rIDDataGridViewTextBoxColumn, + this.VNAME, + this.dvc_loc, + this.qTYDataGridViewTextBoxColumn, + this.qtymax, + this.MFGDATE, + this.VLOT, + this.PNO, + this.MCN, + this.Column1, + this.PRNATTACH, + this.PRNVALID, + this.LOC, + this.SID0, + this.RID0, + this.QTY0, + this.ETIME, + this.JGUID, + this.GUID}); + this.arDatagridView1.ContextMenuStrip = this.contextMenuStrip1; + this.arDatagridView1.DataSource = this.bs; + dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle12.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle12.Padding = new System.Windows.Forms.Padding(2); + dataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.arDatagridView1.DefaultCellStyle = dataGridViewCellStyle12; + this.arDatagridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.arDatagridView1.Location = new System.Drawing.Point(0, 23); + this.arDatagridView1.Name = "arDatagridView1"; + this.arDatagridView1.ReadOnly = true; + this.arDatagridView1.RowTemplate.Height = 23; + this.arDatagridView1.Size = new System.Drawing.Size(1237, 366); + this.arDatagridView1.TabIndex = 6; + this.arDatagridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.arDatagridView1_CellContentClick); + this.arDatagridView1.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.arDatagridView1_DataError); + // + // target + // + this.target.DataPropertyName = "target"; + this.target.HeaderText = "R"; + this.target.Name = "target"; + this.target.ReadOnly = true; + this.target.Width = 45; + // + // JTYPE + // + this.JTYPE.DataPropertyName = "JTYPE"; + this.JTYPE.HeaderText = "MODEL"; + this.JTYPE.Name = "JTYPE"; + this.JTYPE.ReadOnly = true; + this.JTYPE.Width = 81; + // + // sTIMEDataGridViewTextBoxColumn + // + this.sTIMEDataGridViewTextBoxColumn.DataPropertyName = "STIME"; + dataGridViewCellStyle1.Format = "HH:mm:ss"; + this.sTIMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.sTIMEDataGridViewTextBoxColumn.HeaderText = "START"; + this.sTIMEDataGridViewTextBoxColumn.Name = "sTIMEDataGridViewTextBoxColumn"; + this.sTIMEDataGridViewTextBoxColumn.ReadOnly = true; + this.sTIMEDataGridViewTextBoxColumn.Width = 74; + // + // PTIME + // + this.PTIME.DataPropertyName = "BATCH"; + dataGridViewCellStyle2.Format = "HH:mm:ss"; + this.PTIME.DefaultCellStyle = dataGridViewCellStyle2; + this.PTIME.HeaderText = "BATCH"; + this.PTIME.Name = "PTIME"; + this.PTIME.ReadOnly = true; + this.PTIME.Width = 77; + // + // sIDDataGridViewTextBoxColumn + // + this.sIDDataGridViewTextBoxColumn.DataPropertyName = "SID"; + dataGridViewCellStyle3.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.sIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle3; + this.sIDDataGridViewTextBoxColumn.HeaderText = "SID"; + this.sIDDataGridViewTextBoxColumn.Name = "sIDDataGridViewTextBoxColumn"; + this.sIDDataGridViewTextBoxColumn.ReadOnly = true; + this.sIDDataGridViewTextBoxColumn.Width = 57; + // + // rIDDataGridViewTextBoxColumn + // + this.rIDDataGridViewTextBoxColumn.DataPropertyName = "RID"; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.rIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle4; + this.rIDDataGridViewTextBoxColumn.HeaderText = "RID"; + this.rIDDataGridViewTextBoxColumn.Name = "rIDDataGridViewTextBoxColumn"; + this.rIDDataGridViewTextBoxColumn.ReadOnly = true; + this.rIDDataGridViewTextBoxColumn.Width = 58; + // + // VNAME + // + this.VNAME.DataPropertyName = "VNAME"; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.VNAME.DefaultCellStyle = dataGridViewCellStyle5; + this.VNAME.HeaderText = "VENDER"; + this.VNAME.Name = "VNAME"; + this.VNAME.ReadOnly = true; + this.VNAME.Width = 87; + // + // dvc_loc + // + this.dvc_loc.DataPropertyName = "LOC"; + this.dvc_loc.HeaderText = "LOC"; + this.dvc_loc.Name = "dvc_loc"; + this.dvc_loc.ReadOnly = true; + this.dvc_loc.Visible = false; + this.dvc_loc.Width = 55; + // + // qTYDataGridViewTextBoxColumn + // + this.qTYDataGridViewTextBoxColumn.DataPropertyName = "QTY"; + this.qTYDataGridViewTextBoxColumn.HeaderText = "QTY"; + this.qTYDataGridViewTextBoxColumn.Name = "qTYDataGridViewTextBoxColumn"; + this.qTYDataGridViewTextBoxColumn.ReadOnly = true; + this.qTYDataGridViewTextBoxColumn.Width = 61; + // + // qtymax + // + this.qtymax.DataPropertyName = "qtymax"; + this.qtymax.HeaderText = "(MAX)"; + this.qtymax.Name = "qtymax"; + this.qtymax.ReadOnly = true; + this.qtymax.Width = 76; + // + // MFGDATE + // + this.MFGDATE.DataPropertyName = "MFGDATE"; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + this.MFGDATE.DefaultCellStyle = dataGridViewCellStyle6; + this.MFGDATE.HeaderText = "MFG"; + this.MFGDATE.Name = "MFGDATE"; + this.MFGDATE.ReadOnly = true; + this.MFGDATE.Width = 65; + // + // VLOT + // + this.VLOT.DataPropertyName = "VLOT"; + this.VLOT.HeaderText = "V.LOT"; + this.VLOT.Name = "VLOT"; + this.VLOT.ReadOnly = true; + this.VLOT.Width = 71; + // + // PNO + // + this.PNO.DataPropertyName = "PARTNO"; + this.PNO.HeaderText = "PARTNO"; + this.PNO.Name = "PNO"; + this.PNO.ReadOnly = true; + this.PNO.Width = 88; + // + // MCN + // + this.MCN.DataPropertyName = "MCN"; + this.MCN.HeaderText = "CPN"; + this.MCN.Name = "MCN"; + this.MCN.ReadOnly = true; + this.MCN.Width = 63; + // + // Column1 + // + this.Column1.DataPropertyName = "REMARK"; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.Column1.DefaultCellStyle = dataGridViewCellStyle7; + this.Column1.HeaderText = "Remark"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + this.Column1.Width = 84; + // + // PRNATTACH + // + this.PRNATTACH.DataPropertyName = "PRNATTACH"; + this.PRNATTACH.HeaderText = "Attach"; + this.PRNATTACH.Name = "PRNATTACH"; + this.PRNATTACH.ReadOnly = true; + this.PRNATTACH.Width = 58; + // + // PRNVALID + // + this.PRNVALID.DataPropertyName = "PRNVALID"; + this.PRNVALID.HeaderText = "Validation"; + this.PRNVALID.Name = "PRNVALID"; + this.PRNVALID.ReadOnly = true; + this.PRNVALID.Width = 80; + // + // LOC + // + this.LOC.DataPropertyName = "LOC"; + this.LOC.HeaderText = "L/R"; + this.LOC.Name = "LOC"; + this.LOC.ReadOnly = true; + this.LOC.Width = 57; + // + // SID0 + // + this.SID0.DataPropertyName = "SID0"; + dataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(221)))), ((int)(((byte)(242))))); + this.SID0.DefaultCellStyle = dataGridViewCellStyle8; + this.SID0.HeaderText = "SID(ORG)"; + this.SID0.Name = "SID0"; + this.SID0.ReadOnly = true; + this.SID0.Width = 94; + // + // RID0 + // + this.RID0.DataPropertyName = "RID0"; + dataGridViewCellStyle9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(221)))), ((int)(((byte)(242))))); + this.RID0.DefaultCellStyle = dataGridViewCellStyle9; + this.RID0.HeaderText = "RID(ORG)"; + this.RID0.Name = "RID0"; + this.RID0.ReadOnly = true; + this.RID0.Width = 95; + // + // QTY0 + // + this.QTY0.DataPropertyName = "QTY0"; + dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(221)))), ((int)(((byte)(242))))); + this.QTY0.DefaultCellStyle = dataGridViewCellStyle10; + this.QTY0.FillWeight = 55F; + this.QTY0.HeaderText = "QTY(ORG)"; + this.QTY0.Name = "QTY0"; + this.QTY0.ReadOnly = true; + this.QTY0.Width = 98; + // + // ETIME + // + this.ETIME.DataPropertyName = "ETIME"; + dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle11.Format = "mm:ss.fff"; + this.ETIME.DefaultCellStyle = dataGridViewCellStyle11; + this.ETIME.HeaderText = "END"; + this.ETIME.Name = "ETIME"; + this.ETIME.ReadOnly = true; + this.ETIME.Width = 63; + // + // JGUID + // + this.JGUID.DataPropertyName = "JGUID"; + this.JGUID.HeaderText = "JGUID"; + this.JGUID.Name = "JGUID"; + this.JGUID.ReadOnly = true; + this.JGUID.Width = 73; + // + // GUID + // + this.GUID.DataPropertyName = "GUID"; + this.GUID.HeaderText = "GUID"; + this.GUID.Name = "GUID"; + this.GUID.ReadOnly = true; + this.GUID.Width = 68; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.새로고침ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(114, 26); + // + // 새로고침ToolStripMenuItem + // + this.새로고침ToolStripMenuItem.Name = "새로고침ToolStripMenuItem"; + this.새로고침ToolStripMenuItem.Size = new System.Drawing.Size(113, 22); + this.새로고침ToolStripMenuItem.Text = "Refresh"; + this.새로고침ToolStripMenuItem.Click += new System.EventHandler(this.refreshToolStripMenuItem_Click_1); + // + // bs + // + this.bs.DataMember = "K4EE_Component_Reel_Result"; + this.bs.DataSource = this.dataSet1; + this.bs.Sort = "STIME desc"; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // progressBarRefresh + // + this.progressBarRefresh.Dock = System.Windows.Forms.DockStyle.Top; + this.progressBarRefresh.Location = new System.Drawing.Point(0, 0); + this.progressBarRefresh.Name = "progressBarRefresh"; + this.progressBarRefresh.Size = new System.Drawing.Size(1237, 23); + this.progressBarRefresh.Style = System.Windows.Forms.ProgressBarStyle.Marquee; + this.progressBarRefresh.TabIndex = 1; + this.progressBarRefresh.Visible = false; + // + // cmCam + // + this.cmCam.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem2, + this.liveViewProcessOnOffToolStripMenuItem, + this.zoomFitToolStripMenuItem, + this.readBarcodeToolStripMenuItem, + this.livetaskToolStripMenuItem, + this.toolStripMenuItem3, + this.keyenceTrigOnToolStripMenuItem, + this.keyenceTrigOffToolStripMenuItem, + this.keyenceSaveImageToolStripMenuItem, + this.toolStripMenuItem5}); + this.cmCam.Name = "cmLot1"; + this.cmCam.Size = new System.Drawing.Size(208, 192); + this.cmCam.Opening += new System.ComponentModel.CancelEventHandler(this.cmCam_Opening); + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(207, 22); + this.toolStripMenuItem2.Text = "Save Image"; + this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_Click); + // + // liveViewProcessOnOffToolStripMenuItem + // + this.liveViewProcessOnOffToolStripMenuItem.Name = "liveViewProcessOnOffToolStripMenuItem"; + this.liveViewProcessOnOffToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.liveViewProcessOnOffToolStripMenuItem.Text = "Live View Process On/Off"; + this.liveViewProcessOnOffToolStripMenuItem.Click += new System.EventHandler(this.liveViewProcessOnOffToolStripMenuItem_Click); + // + // zoomFitToolStripMenuItem + // + this.zoomFitToolStripMenuItem.Name = "zoomFitToolStripMenuItem"; + this.zoomFitToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.zoomFitToolStripMenuItem.Text = "Zoom Fit"; + this.zoomFitToolStripMenuItem.Click += new System.EventHandler(this.zoomFitToolStripMenuItem_Click); + // + // readBarcodeToolStripMenuItem + // + this.readBarcodeToolStripMenuItem.Name = "readBarcodeToolStripMenuItem"; + this.readBarcodeToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.readBarcodeToolStripMenuItem.Text = "Read Barcode"; + // + // livetaskToolStripMenuItem + // + this.livetaskToolStripMenuItem.Name = "livetaskToolStripMenuItem"; + this.livetaskToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.livetaskToolStripMenuItem.Text = "live-task"; + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(204, 6); + // + // keyenceTrigOnToolStripMenuItem + // + this.keyenceTrigOnToolStripMenuItem.Name = "keyenceTrigOnToolStripMenuItem"; + this.keyenceTrigOnToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.keyenceTrigOnToolStripMenuItem.Text = "keyence Trig On"; + this.keyenceTrigOnToolStripMenuItem.Click += new System.EventHandler(this.keyenceTrigOnToolStripMenuItem_Click); + // + // keyenceTrigOffToolStripMenuItem + // + this.keyenceTrigOffToolStripMenuItem.Name = "keyenceTrigOffToolStripMenuItem"; + this.keyenceTrigOffToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.keyenceTrigOffToolStripMenuItem.Text = "Keyence Trig Off"; + this.keyenceTrigOffToolStripMenuItem.Click += new System.EventHandler(this.keyenceTrigOffToolStripMenuItem_Click); + // + // keyenceSaveImageToolStripMenuItem + // + this.keyenceSaveImageToolStripMenuItem.Name = "keyenceSaveImageToolStripMenuItem"; + this.keyenceSaveImageToolStripMenuItem.Size = new System.Drawing.Size(207, 22); + this.keyenceSaveImageToolStripMenuItem.Text = "Keyence Save Image"; + this.keyenceSaveImageToolStripMenuItem.Click += new System.EventHandler(this.keyenceSaveImageToolStripMenuItem_Click); + // + // toolStripMenuItem5 + // + this.toolStripMenuItem5.Name = "toolStripMenuItem5"; + this.toolStripMenuItem5.Size = new System.Drawing.Size(204, 6); + // + // panel37 + // + this.panel37.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.panel37.Controls.Add(this.lbLock2); + this.panel37.Controls.Add(this.arLabel76); + this.panel37.Controls.Add(this.arLabel74); + this.panel37.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel37.Location = new System.Drawing.Point(824, 0); + this.panel37.Margin = new System.Windows.Forms.Padding(0); + this.panel37.Name = "panel37"; + this.panel37.Padding = new System.Windows.Forms.Padding(1); + this.panel37.Size = new System.Drawing.Size(413, 56); + this.panel37.TabIndex = 155; + // + // lbLock2 + // + this.lbLock2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(76)))), ((int)(((byte)(14))))); + this.lbLock2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(76)))), ((int)(((byte)(14))))); + this.lbLock2.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbLock2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.lbLock2.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbLock2.BorderSize = new System.Windows.Forms.Padding(0); + this.lbLock2.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbLock2.Cursor = System.Windows.Forms.Cursors.Hand; + this.lbLock2.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbLock2.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbLock2.ForeColor = System.Drawing.Color.SkyBlue; + this.lbLock2.GradientEnable = true; + this.lbLock2.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbLock2.GradientRepeatBG = false; + this.lbLock2.isButton = true; + this.lbLock2.Location = new System.Drawing.Point(101, 1); + this.lbLock2.Margin = new System.Windows.Forms.Padding(0); + this.lbLock2.MouseDownColor = System.Drawing.Color.Yellow; + this.lbLock2.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbLock2.msg = null; + this.lbLock2.Name = "lbLock2"; + this.lbLock2.ProgressBorderColor = System.Drawing.Color.Black; + this.lbLock2.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbLock2.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbLock2.ProgressEnable = false; + this.lbLock2.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbLock2.ProgressForeColor = System.Drawing.Color.Black; + this.lbLock2.ProgressMax = 100F; + this.lbLock2.ProgressMin = 0F; + this.lbLock2.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbLock2.ProgressValue = 0F; + this.lbLock2.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.lbLock2.Sign = ""; + this.lbLock2.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbLock2.SignColor = System.Drawing.Color.Yellow; + this.lbLock2.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbLock2.Size = new System.Drawing.Size(211, 54); + this.lbLock2.TabIndex = 15; + this.lbLock2.Tag = "2"; + this.lbLock2.Text = "Port Lock"; + this.lbLock2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbLock2.TextShadow = true; + this.lbLock2.TextVisible = true; + this.lbLock2.Click += new System.EventHandler(this.lbLock2_Click); + // + // panel10 + // + this.panel10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.panel10.Controls.Add(this.lbLock1); + this.panel10.Controls.Add(this.arLabel75); + this.panel10.Controls.Add(this.arLabel73); + this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel10.Location = new System.Drawing.Point(412, 0); + this.panel10.Margin = new System.Windows.Forms.Padding(0); + this.panel10.Name = "panel10"; + this.panel10.Padding = new System.Windows.Forms.Padding(1); + this.panel10.Size = new System.Drawing.Size(412, 56); + this.panel10.TabIndex = 154; + // + // lbLock1 + // + this.lbLock1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(76)))), ((int)(((byte)(14))))); + this.lbLock1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(76)))), ((int)(((byte)(14))))); + this.lbLock1.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbLock1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.lbLock1.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbLock1.BorderSize = new System.Windows.Forms.Padding(0); + this.lbLock1.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbLock1.Cursor = System.Windows.Forms.Cursors.Hand; + this.lbLock1.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbLock1.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbLock1.ForeColor = System.Drawing.Color.SkyBlue; + this.lbLock1.GradientEnable = true; + this.lbLock1.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbLock1.GradientRepeatBG = false; + this.lbLock1.isButton = true; + this.lbLock1.Location = new System.Drawing.Point(101, 1); + this.lbLock1.Margin = new System.Windows.Forms.Padding(0); + this.lbLock1.MouseDownColor = System.Drawing.Color.Yellow; + this.lbLock1.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbLock1.msg = null; + this.lbLock1.Name = "lbLock1"; + this.lbLock1.ProgressBorderColor = System.Drawing.Color.Black; + this.lbLock1.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbLock1.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbLock1.ProgressEnable = false; + this.lbLock1.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbLock1.ProgressForeColor = System.Drawing.Color.Black; + this.lbLock1.ProgressMax = 100F; + this.lbLock1.ProgressMin = 0F; + this.lbLock1.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbLock1.ProgressValue = 0F; + this.lbLock1.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.lbLock1.Sign = ""; + this.lbLock1.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbLock1.SignColor = System.Drawing.Color.Yellow; + this.lbLock1.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbLock1.Size = new System.Drawing.Size(210, 54); + this.lbLock1.TabIndex = 15; + this.lbLock1.Tag = "1"; + this.lbLock1.Text = "Port Lock"; + this.lbLock1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbLock1.TextShadow = true; + this.lbLock1.TextVisible = true; + this.lbLock1.Click += new System.EventHandler(this.lbLock2_Click); + // + // panel15 + // + this.panel15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.panel15.Controls.Add(this.lbLock0); + this.panel15.Controls.Add(this.arLabel11); + this.panel15.Controls.Add(this.arLabel6); + this.panel15.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel15.Location = new System.Drawing.Point(0, 0); + this.panel15.Margin = new System.Windows.Forms.Padding(0); + this.panel15.Name = "panel15"; + this.panel15.Padding = new System.Windows.Forms.Padding(1); + this.panel15.Size = new System.Drawing.Size(412, 56); + this.panel15.TabIndex = 155; + // + // lbLock0 + // + this.lbLock0.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(76)))), ((int)(((byte)(14))))); + this.lbLock0.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(76)))), ((int)(((byte)(14))))); + this.lbLock0.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbLock0.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.lbLock0.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbLock0.BorderSize = new System.Windows.Forms.Padding(0); + this.lbLock0.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbLock0.Cursor = System.Windows.Forms.Cursors.Hand; + this.lbLock0.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbLock0.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.lbLock0.ForeColor = System.Drawing.Color.SkyBlue; + this.lbLock0.GradientEnable = true; + this.lbLock0.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbLock0.GradientRepeatBG = false; + this.lbLock0.isButton = true; + this.lbLock0.Location = new System.Drawing.Point(101, 1); + this.lbLock0.Margin = new System.Windows.Forms.Padding(0); + this.lbLock0.MouseDownColor = System.Drawing.Color.Yellow; + this.lbLock0.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbLock0.msg = null; + this.lbLock0.Name = "lbLock0"; + this.lbLock0.ProgressBorderColor = System.Drawing.Color.Black; + this.lbLock0.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbLock0.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbLock0.ProgressEnable = false; + this.lbLock0.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbLock0.ProgressForeColor = System.Drawing.Color.Black; + this.lbLock0.ProgressMax = 100F; + this.lbLock0.ProgressMin = 0F; + this.lbLock0.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbLock0.ProgressValue = 0F; + this.lbLock0.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.lbLock0.Sign = ""; + this.lbLock0.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbLock0.SignColor = System.Drawing.Color.Yellow; + this.lbLock0.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbLock0.Size = new System.Drawing.Size(210, 54); + this.lbLock0.TabIndex = 15; + this.lbLock0.Tag = "0"; + this.lbLock0.Text = "Port Lock"; + this.lbLock0.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbLock0.TextShadow = true; + this.lbLock0.TextVisible = true; + this.lbLock0.Click += new System.EventHandler(this.lbLock2_Click); + // + // cmBarcode + // + this.cmBarcode.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem22}); + this.cmBarcode.Name = "cmLot1"; + this.cmBarcode.Size = new System.Drawing.Size(108, 26); + // + // toolStripMenuItem22 + // + this.toolStripMenuItem22.Name = "toolStripMenuItem22"; + this.toolStripMenuItem22.Size = new System.Drawing.Size(107, 22); + this.toolStripMenuItem22.Text = "Delete"; + // + // cmDebug + // + this.cmDebug.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.cmDebug.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.inboundToolStripMenuItem, + this.countToolStripMenuItem, + this.motionEmulatorToolStripMenuItem, + this.customerRuleToolStripMenuItem, + this.sMResetToolStripMenuItem, + this.systemParameterToolStripMenuItem, + this.systemParameterMotorToolStripMenuItem, + this.toolStripMenuItem9, + this.toolStripMenuItem4, + this.regExTestToolStripMenuItem, + this.debugModeToolStripMenuItem, + this.demoRunToolStripMenuItem, + this.toolStripMenuItem1, + this.toolStripMenuItem8, + this.dIOMonitorToolStripMenuItem, + this.refreshControklToolStripMenuItem, + this.작업선택화면ToolStripMenuItem, + this.historyToolStripMenuItem, + this.menusToolStripMenuItem, + this.screenToolStripMenuItem, + this.motionParameterToolStripMenuItem, + this.processListToolStripMenuItem, + this.toolStripMenuItem7, + this.visionProcess0ToolStripMenuItem, + this.visionProcess1ToolStripMenuItem, + this.speedLimitToolStripMenuItem, + this.toolStripMenuItem10, + this.bcdRegProcessClearToolStripMenuItem, + this.displayVARToolStripMenuItem, + this.toolStripMenuItem16, + this.getImageToolStripMenuItem}); + this.cmDebug.Name = "cmVision"; + this.cmDebug.Size = new System.Drawing.Size(256, 590); + // + // inboundToolStripMenuItem + // + this.inboundToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.postDataToolStripMenuItem, + this.manualPrintToolStripMenuItem, + this.apiCheckToolStripMenuItem, + this.barcodeTestToolStripMenuItem}); + this.inboundToolStripMenuItem.Name = "inboundToolStripMenuItem"; + this.inboundToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.inboundToolStripMenuItem.Text = "Inbound"; + // + // postDataToolStripMenuItem + // + this.postDataToolStripMenuItem.Name = "postDataToolStripMenuItem"; + this.postDataToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.postDataToolStripMenuItem.Text = "Post Data"; + this.postDataToolStripMenuItem.Click += new System.EventHandler(this.postDataToolStripMenuItem_Click); + // + // manualPrintToolStripMenuItem + // + this.manualPrintToolStripMenuItem.Name = "manualPrintToolStripMenuItem"; + this.manualPrintToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.manualPrintToolStripMenuItem.Text = "Manual Print"; + this.manualPrintToolStripMenuItem.Click += new System.EventHandler(this.manualPrintToolStripMenuItem_Click); + // + // apiCheckToolStripMenuItem + // + this.apiCheckToolStripMenuItem.Name = "apiCheckToolStripMenuItem"; + this.apiCheckToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.apiCheckToolStripMenuItem.Text = "api check"; + this.apiCheckToolStripMenuItem.Click += new System.EventHandler(this.apiCheckToolStripMenuItem_Click); + // + // barcodeTestToolStripMenuItem + // + this.barcodeTestToolStripMenuItem.Name = "barcodeTestToolStripMenuItem"; + this.barcodeTestToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.barcodeTestToolStripMenuItem.Text = "Barcode Test"; + this.barcodeTestToolStripMenuItem.Click += new System.EventHandler(this.barcodeTestToolStripMenuItem_Click); + // + // countToolStripMenuItem + // + this.countToolStripMenuItem.Name = "countToolStripMenuItem"; + this.countToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.countToolStripMenuItem.Text = "Debug Window"; + this.countToolStripMenuItem.Click += new System.EventHandler(this.countToolStripMenuItem_Click); + // + // motionEmulatorToolStripMenuItem + // + this.motionEmulatorToolStripMenuItem.Name = "motionEmulatorToolStripMenuItem"; + this.motionEmulatorToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.motionEmulatorToolStripMenuItem.Text = "Finish Window"; + this.motionEmulatorToolStripMenuItem.Click += new System.EventHandler(this.motionEmulatorToolStripMenuItem_Click); + // + // customerRuleToolStripMenuItem + // + this.customerRuleToolStripMenuItem.Name = "customerRuleToolStripMenuItem"; + this.customerRuleToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.customerRuleToolStripMenuItem.Text = "Customer Rule"; + this.customerRuleToolStripMenuItem.Click += new System.EventHandler(this.customerRuleToolStripMenuItem_Click); + // + // sMResetToolStripMenuItem + // + this.sMResetToolStripMenuItem.Name = "sMResetToolStripMenuItem"; + this.sMResetToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.sMResetToolStripMenuItem.Text = "S/M Reset"; + this.sMResetToolStripMenuItem.Click += new System.EventHandler(this.sMResetToolStripMenuItem_Click); + // + // systemParameterMotorToolStripMenuItem + // + this.systemParameterMotorToolStripMenuItem.Name = "systemParameterMotorToolStripMenuItem"; + this.systemParameterMotorToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.systemParameterMotorToolStripMenuItem.Text = "System Parameter(Motion))"; + this.systemParameterMotorToolStripMenuItem.Click += new System.EventHandler(this.systemParameterMotorToolStripMenuItem_Click); + // + // regExTestToolStripMenuItem + // + this.regExTestToolStripMenuItem.Name = "regExTestToolStripMenuItem"; + this.regExTestToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.regExTestToolStripMenuItem.Text = "RegEx Test"; + this.regExTestToolStripMenuItem.Click += new System.EventHandler(this.regExTestToolStripMenuItem_Click); + // + // debugModeToolStripMenuItem + // + this.debugModeToolStripMenuItem.Name = "debugModeToolStripMenuItem"; + this.debugModeToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.debugModeToolStripMenuItem.Text = "Debug Mode"; + this.debugModeToolStripMenuItem.Click += new System.EventHandler(this.debugModeToolStripMenuItem_Click); + // + // toolStripMenuItem8 + // + this.toolStripMenuItem8.Name = "toolStripMenuItem8"; + this.toolStripMenuItem8.Size = new System.Drawing.Size(252, 6); + // + // dIOMonitorToolStripMenuItem + // + this.dIOMonitorToolStripMenuItem.Name = "dIOMonitorToolStripMenuItem"; + this.dIOMonitorToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.dIOMonitorToolStripMenuItem.Text = "Test Barcode Process"; + this.dIOMonitorToolStripMenuItem.Click += new System.EventHandler(this.dIOMonitorToolStripMenuItem_Click); + // + // refreshControklToolStripMenuItem + // + this.refreshControklToolStripMenuItem.Name = "refreshControklToolStripMenuItem"; + this.refreshControklToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.refreshControklToolStripMenuItem.Text = "Refresh Controkl"; + this.refreshControklToolStripMenuItem.Click += new System.EventHandler(this.refreshControklToolStripMenuItem_Click); + // + // 작업선택화면ToolStripMenuItem + // + this.작업선택화면ToolStripMenuItem.Name = "작업선택화면ToolStripMenuItem"; + this.작업선택화면ToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.작업선택화면ToolStripMenuItem.Text = "Data Buffer (SID Ref)"; + this.작업선택화면ToolStripMenuItem.Click += new System.EventHandler(this.workSelectionScreenToolStripMenuItem_Click); + // + // historyToolStripMenuItem + // + this.historyToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.testToolStripMenuItem, + this.detectCountToolStripMenuItem}); + this.historyToolStripMenuItem.Name = "historyToolStripMenuItem"; + this.historyToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.historyToolStripMenuItem.Text = "History"; + // + // testToolStripMenuItem + // + this.testToolStripMenuItem.Name = "testToolStripMenuItem"; + this.testToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.testToolStripMenuItem.Text = "test"; + // + // detectCountToolStripMenuItem + // + this.detectCountToolStripMenuItem.Name = "detectCountToolStripMenuItem"; + this.detectCountToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.detectCountToolStripMenuItem.Text = "Detect Count"; + // + // menusToolStripMenuItem + // + this.menusToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sampleToolStripMenuItem, + this.clearToolStripMenuItem1}); + this.menusToolStripMenuItem.Name = "menusToolStripMenuItem"; + this.menusToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.menusToolStripMenuItem.Text = "Menus"; + // + // sampleToolStripMenuItem + // + this.sampleToolStripMenuItem.Name = "sampleToolStripMenuItem"; + this.sampleToolStripMenuItem.Size = new System.Drawing.Size(111, 22); + this.sampleToolStripMenuItem.Text = "Add"; + this.sampleToolStripMenuItem.Click += new System.EventHandler(this.sampleToolStripMenuItem_Click); + // + // clearToolStripMenuItem1 + // + this.clearToolStripMenuItem1.Name = "clearToolStripMenuItem1"; + this.clearToolStripMenuItem1.Size = new System.Drawing.Size(111, 22); + this.clearToolStripMenuItem1.Text = "Clear"; + this.clearToolStripMenuItem1.Click += new System.EventHandler(this.clearToolStripMenuItem1_Click); + // + // screenToolStripMenuItem + // + this.screenToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.jOBStartToolStripMenuItem, + this.jObEndToolStripMenuItem, + this.multiSIDSelectToolStripMenuItem}); + this.screenToolStripMenuItem.Name = "screenToolStripMenuItem"; + this.screenToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.screenToolStripMenuItem.Text = "Screen"; + // + // jOBStartToolStripMenuItem + // + this.jOBStartToolStripMenuItem.Name = "jOBStartToolStripMenuItem"; + this.jOBStartToolStripMenuItem.Size = new System.Drawing.Size(177, 22); + this.jOBStartToolStripMenuItem.Text = "JOB Start"; + this.jOBStartToolStripMenuItem.Click += new System.EventHandler(this.jOBStartToolStripMenuItem_Click); + // + // jObEndToolStripMenuItem + // + this.jObEndToolStripMenuItem.Name = "jObEndToolStripMenuItem"; + this.jObEndToolStripMenuItem.Size = new System.Drawing.Size(177, 22); + this.jObEndToolStripMenuItem.Text = "JOb End"; + this.jObEndToolStripMenuItem.Click += new System.EventHandler(this.jObEndToolStripMenuItem_Click); + // + // multiSIDSelectToolStripMenuItem + // + this.multiSIDSelectToolStripMenuItem.Name = "multiSIDSelectToolStripMenuItem"; + this.multiSIDSelectToolStripMenuItem.Size = new System.Drawing.Size(177, 22); + this.multiSIDSelectToolStripMenuItem.Text = "Multi SID Select"; + this.multiSIDSelectToolStripMenuItem.Click += new System.EventHandler(this.multiSIDSelectToolStripMenuItem_Click); + // + // motionParameterToolStripMenuItem + // + this.motionParameterToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.axis0ToolStripMenuItem, + this.axis1ToolStripMenuItem, + this.axis2ToolStripMenuItem, + this.axis3ToolStripMenuItem, + this.axis4ToolStripMenuItem}); + this.motionParameterToolStripMenuItem.Name = "motionParameterToolStripMenuItem"; + this.motionParameterToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.motionParameterToolStripMenuItem.Text = "Motion Parameter"; + // + // axis0ToolStripMenuItem + // + this.axis0ToolStripMenuItem.Name = "axis0ToolStripMenuItem"; + this.axis0ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.axis0ToolStripMenuItem.Text = "Axis 0"; + this.axis0ToolStripMenuItem.Click += new System.EventHandler(this.axis0ToolStripMenuItem_Click); + // + // axis1ToolStripMenuItem + // + this.axis1ToolStripMenuItem.Name = "axis1ToolStripMenuItem"; + this.axis1ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.axis1ToolStripMenuItem.Text = "Axis 1"; + this.axis1ToolStripMenuItem.Click += new System.EventHandler(this.axis1ToolStripMenuItem_Click); + // + // axis2ToolStripMenuItem + // + this.axis2ToolStripMenuItem.Name = "axis2ToolStripMenuItem"; + this.axis2ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.axis2ToolStripMenuItem.Text = "Axis 2"; + this.axis2ToolStripMenuItem.Click += new System.EventHandler(this.axis2ToolStripMenuItem_Click); + // + // axis3ToolStripMenuItem + // + this.axis3ToolStripMenuItem.Name = "axis3ToolStripMenuItem"; + this.axis3ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.axis3ToolStripMenuItem.Text = "Axis 3"; + this.axis3ToolStripMenuItem.Click += new System.EventHandler(this.axis3ToolStripMenuItem_Click); + // + // axis4ToolStripMenuItem + // + this.axis4ToolStripMenuItem.Name = "axis4ToolStripMenuItem"; + this.axis4ToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.axis4ToolStripMenuItem.Text = "Axis 4"; + this.axis4ToolStripMenuItem.Click += new System.EventHandler(this.axis4ToolStripMenuItem_Click); + // + // processListToolStripMenuItem + // + this.processListToolStripMenuItem.Name = "processListToolStripMenuItem"; + this.processListToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.processListToolStripMenuItem.Text = "Process List"; + this.processListToolStripMenuItem.Click += new System.EventHandler(this.processListToolStripMenuItem_Click); + // + // toolStripMenuItem7 + // + this.toolStripMenuItem7.Name = "toolStripMenuItem7"; + this.toolStripMenuItem7.Size = new System.Drawing.Size(252, 6); + // + // visionProcess0ToolStripMenuItem + // + this.visionProcess0ToolStripMenuItem.Name = "visionProcess0ToolStripMenuItem"; + this.visionProcess0ToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.visionProcess0ToolStripMenuItem.Text = "Vision Status(0)"; + this.visionProcess0ToolStripMenuItem.Click += new System.EventHandler(this.visionProcess0ToolStripMenuItem_Click); + // + // visionProcess1ToolStripMenuItem + // + this.visionProcess1ToolStripMenuItem.Name = "visionProcess1ToolStripMenuItem"; + this.visionProcess1ToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.visionProcess1ToolStripMenuItem.Text = "Vision Status(1)"; + this.visionProcess1ToolStripMenuItem.Click += new System.EventHandler(this.visionProcess1ToolStripMenuItem_Click); + // + // speedLimitToolStripMenuItem + // + this.speedLimitToolStripMenuItem.Name = "speedLimitToolStripMenuItem"; + this.speedLimitToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.speedLimitToolStripMenuItem.Text = "Speed Limit"; + this.speedLimitToolStripMenuItem.Click += new System.EventHandler(this.speedLimitToolStripMenuItem_Click); + // + // toolStripMenuItem10 + // + this.toolStripMenuItem10.Name = "toolStripMenuItem10"; + this.toolStripMenuItem10.Size = new System.Drawing.Size(252, 6); + // + // bcdRegProcessClearToolStripMenuItem + // + this.bcdRegProcessClearToolStripMenuItem.Name = "bcdRegProcessClearToolStripMenuItem"; + this.bcdRegProcessClearToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.bcdRegProcessClearToolStripMenuItem.Text = "Bcd RegProcess Clear"; + this.bcdRegProcessClearToolStripMenuItem.Click += new System.EventHandler(this.bcdRegProcessClearToolStripMenuItem_Click); + // + // displayVARToolStripMenuItem + // + this.displayVARToolStripMenuItem.Name = "displayVARToolStripMenuItem"; + this.displayVARToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.displayVARToolStripMenuItem.Text = "Display VAR"; + this.displayVARToolStripMenuItem.Click += new System.EventHandler(this.displayVARToolStripMenuItem_Click); + // + // toolStripMenuItem16 + // + this.toolStripMenuItem16.Name = "toolStripMenuItem16"; + this.toolStripMenuItem16.Size = new System.Drawing.Size(252, 6); + // + // getImageToolStripMenuItem + // + this.getImageToolStripMenuItem.Name = "getImageToolStripMenuItem"; + this.getImageToolStripMenuItem.Size = new System.Drawing.Size(255, 22); + this.getImageToolStripMenuItem.Text = "Get Image"; + // + // idxDataGridViewTextBoxColumn + // + this.idxDataGridViewTextBoxColumn.DataPropertyName = "idx"; + this.idxDataGridViewTextBoxColumn.HeaderText = "idx"; + this.idxDataGridViewTextBoxColumn.Name = "idxDataGridViewTextBoxColumn"; + this.idxDataGridViewTextBoxColumn.Width = 5; + // + // stripIdDataGridViewTextBoxColumn2 + // + this.stripIdDataGridViewTextBoxColumn2.DataPropertyName = "StripId"; + this.stripIdDataGridViewTextBoxColumn2.HeaderText = "StripId"; + this.stripIdDataGridViewTextBoxColumn2.Name = "stripIdDataGridViewTextBoxColumn2"; + this.stripIdDataGridViewTextBoxColumn2.Width = 5; + // + // oKDataGridViewTextBoxColumn2 + // + this.oKDataGridViewTextBoxColumn2.DataPropertyName = "OK"; + this.oKDataGridViewTextBoxColumn2.HeaderText = "OK"; + this.oKDataGridViewTextBoxColumn2.Name = "oKDataGridViewTextBoxColumn2"; + this.oKDataGridViewTextBoxColumn2.Width = 5; + // + // nGDataGridViewTextBoxColumn2 + // + this.nGDataGridViewTextBoxColumn2.DataPropertyName = "NG"; + this.nGDataGridViewTextBoxColumn2.HeaderText = "NG"; + this.nGDataGridViewTextBoxColumn2.Name = "nGDataGridViewTextBoxColumn2"; + this.nGDataGridViewTextBoxColumn2.Width = 5; + // + // mISSDataGridViewTextBoxColumn2 + // + this.mISSDataGridViewTextBoxColumn2.DataPropertyName = "MISS"; + this.mISSDataGridViewTextBoxColumn2.HeaderText = "MISS"; + this.mISSDataGridViewTextBoxColumn2.Name = "mISSDataGridViewTextBoxColumn2"; + this.mISSDataGridViewTextBoxColumn2.Width = 5; + // + // fileMapDataGridViewTextBoxColumn + // + this.fileMapDataGridViewTextBoxColumn.DataPropertyName = "FileMap"; + this.fileMapDataGridViewTextBoxColumn.HeaderText = "FileMap"; + this.fileMapDataGridViewTextBoxColumn.Name = "fileMapDataGridViewTextBoxColumn"; + this.fileMapDataGridViewTextBoxColumn.Width = 5; + // + // dataPathDataGridViewTextBoxColumn + // + this.dataPathDataGridViewTextBoxColumn.DataPropertyName = "DataPath"; + this.dataPathDataGridViewTextBoxColumn.HeaderText = "DataPath"; + this.dataPathDataGridViewTextBoxColumn.Name = "dataPathDataGridViewTextBoxColumn"; + this.dataPathDataGridViewTextBoxColumn.Width = 5; + // + // mapOriginDataGridViewTextBoxColumn + // + this.mapOriginDataGridViewTextBoxColumn.DataPropertyName = "MapOrigin"; + this.mapOriginDataGridViewTextBoxColumn.HeaderText = "MapOrigin"; + this.mapOriginDataGridViewTextBoxColumn.Name = "mapOriginDataGridViewTextBoxColumn"; + this.mapOriginDataGridViewTextBoxColumn.Width = 5; + // + // mapArrayDataGridViewTextBoxColumn + // + this.mapArrayDataGridViewTextBoxColumn.DataPropertyName = "MapArray"; + this.mapArrayDataGridViewTextBoxColumn.HeaderText = "MapArray"; + this.mapArrayDataGridViewTextBoxColumn.Name = "mapArrayDataGridViewTextBoxColumn"; + this.mapArrayDataGridViewTextBoxColumn.Width = 5; + // + // testmenuToolStripMenuItem + // + this.testmenuToolStripMenuItem.Name = "testmenuToolStripMenuItem"; + this.testmenuToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.testmenuToolStripMenuItem.Text = "testmenu"; + // + // panStatusBar + // + this.panStatusBar.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panStatusBar.Controls.Add(this.panel3); + this.panStatusBar.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panStatusBar.Location = new System.Drawing.Point(1, 938); + this.panStatusBar.Margin = new System.Windows.Forms.Padding(0); + this.panStatusBar.Name = "panStatusBar"; + this.panStatusBar.Size = new System.Drawing.Size(1582, 46); + this.panStatusBar.TabIndex = 136; + // + // panel3 + // + this.panel3.Controls.Add(this.IOState); + this.panel3.Controls.Add(this.HWState); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Margin = new System.Windows.Forms.Padding(0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1578, 42); + this.panel3.TabIndex = 4; + // + // IOState + // + this.IOState.arVeriticalDraw = false; + this.IOState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.IOState.BorderSize = 0; + colorListItem1.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + colorListItem1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorListItem1.Remark = ""; + colorListItem2.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(182)))), ((int)(((byte)(122))))); + colorListItem2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(182)))), ((int)(((byte)(122))))); + colorListItem2.Remark = ""; + colorListItem3.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(76)))), ((int)(((byte)(102))))); + colorListItem3.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(249)))), ((int)(((byte)(76)))), ((int)(((byte)(102))))); + colorListItem3.Remark = ""; + colorListItem4.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(189)))), ((int)(((byte)(66)))), ((int)(((byte)(145))))); + colorListItem4.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(189)))), ((int)(((byte)(66)))), ((int)(((byte)(145))))); + colorListItem4.Remark = ""; + colorListItem5.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(158)))), ((int)(((byte)(180)))), ((int)(((byte)(236))))); + colorListItem5.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(158)))), ((int)(((byte)(180)))), ((int)(((byte)(236))))); + colorListItem5.Remark = ""; + colorListItem6.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(210)))), ((int)(((byte)(76))))); + colorListItem6.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(210)))), ((int)(((byte)(76))))); + colorListItem6.Remark = ""; + colorListItem7.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(183)))), ((int)(((byte)(43))))); + colorListItem7.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(183)))), ((int)(((byte)(43))))); + colorListItem7.Remark = ""; + this.IOState.ColorList = new arFrame.Control.ColorListItem[] { + colorListItem1, + colorListItem2, + colorListItem3, + colorListItem4, + colorListItem5, + colorListItem6, + colorListItem7}; + this.IOState.Dock = System.Windows.Forms.DockStyle.Fill; + this.IOState.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.IOState.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.IOState.ForeColor = System.Drawing.Color.White; + this.IOState.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.IOState.Location = new System.Drawing.Point(318, 0); + this.IOState.MatrixSize = new System.Drawing.Point(12, 2); + this.IOState.MenuBorderSize = 1; + this.IOState.MenuGap = 5; + this.IOState.MinimumSize = new System.Drawing.Size(100, 0); + this.IOState.Name = "IOState"; + this.IOState.Names = new string[] { + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ""}; + this.IOState.ShadowColor = System.Drawing.Color.Transparent; + this.IOState.showDebugInfo = false; + this.IOState.ShowIndexString = false; + this.IOState.Size = new System.Drawing.Size(1260, 42); + this.IOState.TabIndex = 6; + this.IOState.Tags = null; + this.IOState.Text = "gridView2"; + this.IOState.TextAttachToImage = true; + this.IOState.Titles = new string[] { + "{step}|L-DOOR|C-DOOR|R-DOOR|L-DET|C-DET|R-DET|EMG|PRINT-L|--|REEL|REEL|", + "{ms}|BUZZ|ROOM|AIR|L-MAX|C-MAX|R-MAX|POWER|PRINT-R|TRIG|CONV|CONV|"}; + this.IOState.Values = new ushort[] { + ((ushort)(0)), + ((ushort)(1)), + ((ushort)(2)), + ((ushort)(3)), + ((ushort)(4)), + ((ushort)(5)), + ((ushort)(6)), + ((ushort)(7)), + ((ushort)(8)), + ((ushort)(9)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0))}; + // + // HWState + // + this.HWState.arVeriticalDraw = false; + this.HWState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.HWState.BorderSize = 0; + colorListItem8.BackColor1 = System.Drawing.Color.Gray; + colorListItem8.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + colorListItem8.Remark = "Title Bar (Top)"; + colorListItem9.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + colorListItem9.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + colorListItem9.Remark = "Status Display (Bottom)"; + colorListItem10.BackColor1 = System.Drawing.Color.Green; + colorListItem10.BackColor2 = System.Drawing.Color.ForestGreen; + colorListItem10.Remark = "Normal"; + colorListItem11.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + colorListItem11.BackColor2 = System.Drawing.Color.Red; + colorListItem11.Remark = "Error"; + colorListItem12.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + colorListItem12.BackColor2 = System.Drawing.Color.Yellow; + colorListItem12.Remark = "Error (Blinking)"; + this.HWState.ColorList = new arFrame.Control.ColorListItem[] { + colorListItem8, + colorListItem9, + colorListItem10, + colorListItem11, + colorListItem12}; + this.HWState.Dock = System.Windows.Forms.DockStyle.Left; + this.HWState.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.HWState.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.HWState.ForeColor = System.Drawing.Color.Moccasin; + this.HWState.ForeColorPin = System.Drawing.Color.Moccasin; + this.HWState.Location = new System.Drawing.Point(0, 0); + this.HWState.Margin = new System.Windows.Forms.Padding(0); + this.HWState.MatrixSize = new System.Drawing.Point(8, 2); + this.HWState.MenuBorderSize = 1; + this.HWState.MenuGap = 5; + this.HWState.MinimumSize = new System.Drawing.Size(100, 0); + this.HWState.Name = "HWState"; + this.HWState.Names = new string[] { + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ""}; + this.HWState.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.HWState.showDebugInfo = false; + this.HWState.ShowIndexString = false; + this.HWState.Size = new System.Drawing.Size(318, 42); + this.HWState.TabIndex = 8; + this.HWState.Tags = null; + this.HWState.Text = "gridView3"; + this.HWState.TextAttachToImage = true; + this.HWState.Titles = new string[] { + "BCD|BCD|LEFT|RIGHT|FIX|PL|PR|PLC", + "--|--|--|--|--|--|--|--|--"}; + this.HWState.Values = new ushort[] { + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(2)), + ((ushort)(3)), + ((ushort)(4)), + ((ushort)(5)), + ((ushort)(6)), + ((ushort)(6)), + ((ushort)(8)), + ((ushort)(7)), + ((ushort)(6))}; + // + // panTopMenu + // + this.panTopMenu.BackColor = System.Drawing.SystemColors.Control; + this.panTopMenu.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.panTopMenu.ImageScalingSize = new System.Drawing.Size(40, 40); + this.panTopMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripLabel2, + this.toolStripButton7, + this.toolStripSeparator5, + this.toolStripButton23, + this.toolStripSeparator8, + this.btSetting, + this.toolStripButton8, + this.toolStripButton9, + this.btMReset, + this.toolStripButton16, + this.toolStripButton11, + this.btLogViewer, + this.toolStripSeparator6, + this.toolStripButton6, + this.toolStripButton10, + this.btAutoReelOut, + this.btLightRoom, + this.btManualPrint, + this.toolStripSeparator9, + this.btJobCancle, + this.btDebug, + this.btCheckInfo, + this.toolStripButton3, + this.toolStripSeparator7, + this.btHistory}); + this.panTopMenu.Location = new System.Drawing.Point(1, 1); + this.panTopMenu.Name = "panTopMenu"; + this.panTopMenu.Padding = new System.Windows.Forms.Padding(0); + this.panTopMenu.Size = new System.Drawing.Size(1582, 47); + this.panTopMenu.TabIndex = 137; + this.panTopMenu.Text = "toolStrip1"; + // + // toolStripLabel2 + // + this.toolStripLabel2.Name = "toolStripLabel2"; + this.toolStripLabel2.Size = new System.Drawing.Size(10, 44); + this.toolStripLabel2.Text = " "; + this.toolStripLabel2.Click += new System.EventHandler(this.pictureBox1_Click); + // + // toolStripButton7 + // + this.toolStripButton7.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.모델선택ToolStripMenuItem, + this.btModelMot, + this.toolStripMenuItem12, + this.바코드룰ToolStripMenuItem, + this.sID정보ToolStripMenuItem}); + this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image"))); + this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton7.Name = "toolStripButton7"; + this.toolStripButton7.Size = new System.Drawing.Size(94, 44); + this.toolStripButton7.Text = "Model"; + this.toolStripButton7.Click += new System.EventHandler(this.button5_Click); + // + // 모델선택ToolStripMenuItem + // + this.모델선택ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_object_40; + this.모델선택ToolStripMenuItem.Name = "모델선택ToolStripMenuItem"; + this.모델선택ToolStripMenuItem.Size = new System.Drawing.Size(174, 46); + this.모델선택ToolStripMenuItem.Text = "Work Model"; + this.모델선택ToolStripMenuItem.Click += new System.EventHandler(this.ModelSelectionToolStripMenuItem_Click); + // + // btModelMot + // + this.btModelMot.Image = global::Project.Properties.Resources.Motor; + this.btModelMot.Name = "btModelMot"; + this.btModelMot.Size = new System.Drawing.Size(174, 46); + this.btModelMot.Text = "Motion Model"; + this.btModelMot.Click += new System.EventHandler(this.toolStripMenuItem23_Click); + // + // toolStripMenuItem12 + // + this.toolStripMenuItem12.Name = "toolStripMenuItem12"; + this.toolStripMenuItem12.Size = new System.Drawing.Size(171, 6); + // + // 바코드룰ToolStripMenuItem + // + this.바코드룰ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_add_40; + this.바코드룰ToolStripMenuItem.Name = "바코드룰ToolStripMenuItem"; + this.바코드룰ToolStripMenuItem.Size = new System.Drawing.Size(174, 46); + this.바코드룰ToolStripMenuItem.Text = "Barcode Rule"; + this.바코드룰ToolStripMenuItem.Click += new System.EventHandler(this.BarcodeRuleToolStripMenuItem_Click); + // + // sID정보ToolStripMenuItem + // + this.sID정보ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.프로그램열기ToolStripMenuItem, + this.인바운드데이터업데이트ToolStripMenuItem}); + this.sID정보ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_save_to_grid_40; + this.sID정보ToolStripMenuItem.Name = "sID정보ToolStripMenuItem"; + this.sID정보ToolStripMenuItem.Size = new System.Drawing.Size(174, 46); + this.sID정보ToolStripMenuItem.Text = "SID Info"; + // + // 프로그램열기ToolStripMenuItem + // + this.프로그램열기ToolStripMenuItem.Image = global::Project.Properties.Resources.Arrow_Right; + this.프로그램열기ToolStripMenuItem.Name = "프로그램열기ToolStripMenuItem"; + this.프로그램열기ToolStripMenuItem.Size = new System.Drawing.Size(222, 46); + this.프로그램열기ToolStripMenuItem.Text = "Open Program"; + this.프로그램열기ToolStripMenuItem.Click += new System.EventHandler(this.OpenProgramToolStripMenuItem_Click); + // + // 인바운드데이터업데이트ToolStripMenuItem + // + this.인바운드데이터업데이트ToolStripMenuItem.Image = global::Project.Properties.Resources.Arrow_Right; + this.인바운드데이터업데이트ToolStripMenuItem.Name = "인바운드데이터업데이트ToolStripMenuItem"; + this.인바운드데이터업데이트ToolStripMenuItem.Size = new System.Drawing.Size(222, 46); + this.인바운드데이터업데이트ToolStripMenuItem.Text = "Update SID Information"; + this.인바운드데이터업데이트ToolStripMenuItem.Click += new System.EventHandler(this.InboundDataUpdateToolStripMenuItem_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(6, 47); + // + // toolStripButton23 + // + this.toolStripButton23.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton23.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton23.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton23.Image"))); + this.toolStripButton23.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton23.Name = "toolStripButton23"; + this.toolStripButton23.Size = new System.Drawing.Size(44, 44); + this.toolStripButton23.Text = "Exit"; + this.toolStripButton23.ToolTipText = "Exit Program"; + this.toolStripButton23.Click += new System.EventHandler(this.arLabel10_Click_1); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(6, 47); + // + // btSetting + // + this.btSetting.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btSetting.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btSetting.Image = ((System.Drawing.Image)(resources.GetObject("btSetting.Image"))); + this.btSetting.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btSetting.Name = "btSetting"; + this.btSetting.Size = new System.Drawing.Size(44, 44); + this.btSetting.Text = "Settings"; + this.btSetting.ToolTipText = "Environment Settings"; + this.btSetting.Click += new System.EventHandler(this.arLabel11_Click); + // + // toolStripButton8 + // + this.toolStripButton8.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton8.Image"))); + this.toolStripButton8.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton8.Name = "toolStripButton8"; + this.toolStripButton8.Size = new System.Drawing.Size(44, 44); + this.toolStripButton8.Text = "Manual"; + this.toolStripButton8.ToolTipText = "Show Program Manual"; + this.toolStripButton8.Click += new System.EventHandler(this.arLabel12_Click); + // + // toolStripButton9 + // + this.toolStripButton9.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image"))); + this.toolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton9.Name = "toolStripButton9"; + this.toolStripButton9.Size = new System.Drawing.Size(44, 44); + this.toolStripButton9.Text = "Capture"; + this.toolStripButton9.ToolTipText = "Capture Current Screen"; + this.toolStripButton9.Click += new System.EventHandler(this.arLabel13_Click); + // + // btMReset + // + this.btMReset.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btMReset.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btMReset.Image = ((System.Drawing.Image)(resources.GetObject("btMReset.Image"))); + this.btMReset.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btMReset.Name = "btMReset"; + this.btMReset.Size = new System.Drawing.Size(44, 44); + this.btMReset.Text = "Initialize"; + this.btMReset.ToolTipText = "Device Initialization (Required at least once)"; + this.btMReset.Click += new System.EventHandler(this.arLabel14_Click); + // + // toolStripButton16 + // + this.toolStripButton16.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton16.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton16.ForeColor = System.Drawing.Color.Red; + this.toolStripButton16.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton16.Image"))); + this.toolStripButton16.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton16.Name = "toolStripButton16"; + this.toolStripButton16.Size = new System.Drawing.Size(44, 44); + this.toolStripButton16.Text = "toolStripButton16"; + this.toolStripButton16.ToolTipText = "Send Developer Email"; + this.toolStripButton16.Visible = false; + this.toolStripButton16.Click += new System.EventHandler(this.toolStripButton16_Click); + // + // toolStripButton11 + // + this.toolStripButton11.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton11.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton11.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem11, + this.toolStripMenuItem13, + this.toolStripMenuItem14, + this.toolStripMenuItem15}); + this.toolStripButton11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton11.Image"))); + this.toolStripButton11.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton11.Name = "toolStripButton11"; + this.toolStripButton11.Size = new System.Drawing.Size(53, 44); + this.toolStripButton11.Text = "Open Folder"; + this.toolStripButton11.ToolTipText = "Open Program Folder (Windows Explorer)"; + this.toolStripButton11.Click += new System.EventHandler(this.arLabel16_Click); + // + // toolStripMenuItem11 + // + this.toolStripMenuItem11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem11.Image"))); + this.toolStripMenuItem11.Name = "toolStripMenuItem11"; + this.toolStripMenuItem11.Size = new System.Drawing.Size(156, 46); + this.toolStripMenuItem11.Text = "Program"; + this.toolStripMenuItem11.Click += new System.EventHandler(this.toolStripMenuItem11_Click); + // + // toolStripMenuItem13 + // + this.toolStripMenuItem13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem13.Image"))); + this.toolStripMenuItem13.Name = "toolStripMenuItem13"; + this.toolStripMenuItem13.Size = new System.Drawing.Size(156, 46); + this.toolStripMenuItem13.Text = "Log"; + this.toolStripMenuItem13.Click += new System.EventHandler(this.toolStripMenuItem13_Click); + // + // toolStripMenuItem14 + // + this.toolStripMenuItem14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem14.Image"))); + this.toolStripMenuItem14.Name = "toolStripMenuItem14"; + this.toolStripMenuItem14.Size = new System.Drawing.Size(156, 46); + this.toolStripMenuItem14.Text = "Capture"; + this.toolStripMenuItem14.Click += new System.EventHandler(this.toolStripMenuItem14_Click); + // + // toolStripMenuItem15 + // + this.toolStripMenuItem15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripMenuItem15.Image"))); + this.toolStripMenuItem15.Name = "toolStripMenuItem15"; + this.toolStripMenuItem15.Size = new System.Drawing.Size(156, 46); + this.toolStripMenuItem15.Text = "Saved Data"; + this.toolStripMenuItem15.Click += new System.EventHandler(this.toolStripMenuItem15_Click); + // + // btLogViewer + // + this.btLogViewer.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btLogViewer.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btLogViewer.Image = global::Project.Properties.Resources.icons8_log_40; + this.btLogViewer.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btLogViewer.Name = "btLogViewer"; + this.btLogViewer.Size = new System.Drawing.Size(44, 44); + this.btLogViewer.Text = "Log Viewer"; + this.btLogViewer.Click += new System.EventHandler(this.btLogViewer_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 47); + // + // toolStripButton6 + // + this.toolStripButton6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton6.Image"))); + this.toolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton6.Name = "toolStripButton6"; + this.toolStripButton6.Size = new System.Drawing.Size(80, 44); + this.toolStripButton6.Text = "I/O"; + this.toolStripButton6.ToolTipText = "Check Input/Output Signals"; + this.toolStripButton6.ButtonClick += new System.EventHandler(this.toolStripButton6_ButtonClick); + this.toolStripButton6.Click += new System.EventHandler(this.button6_Click); + // + // toolStripButton10 + // + this.toolStripButton10.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btManage, + this.빠른실행ToolStripMenuItem}); + this.toolStripButton10.Image = global::Project.Properties.Resources.icons8_object_40; + this.toolStripButton10.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton10.Name = "toolStripButton10"; + this.toolStripButton10.Size = new System.Drawing.Size(107, 44); + this.toolStripButton10.Text = "Function"; + this.toolStripButton10.Click += new System.EventHandler(this.button3_Click_2); + // + // btManage + // + this.btManage.Image = global::Project.Properties.Resources.icons8_control_panel_40; + this.btManage.Name = "btManage"; + this.btManage.Size = new System.Drawing.Size(153, 46); + this.btManage.Text = "Manage"; + this.btManage.Click += new System.EventHandler(this.managementToolStripMenuItem_Click_1); + // + // 빠른실행ToolStripMenuItem + // + this.빠른실행ToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_object_40; + this.빠른실행ToolStripMenuItem.Name = "빠른실행ToolStripMenuItem"; + this.빠른실행ToolStripMenuItem.Size = new System.Drawing.Size(153, 46); + this.빠른실행ToolStripMenuItem.Text = "Quick Run"; + this.빠른실행ToolStripMenuItem.Click += new System.EventHandler(this.quickExecutionToolStripMenuItem_Click); + // + // btAutoReelOut + // + this.btAutoReelOut.Image = ((System.Drawing.Image)(resources.GetObject("btAutoReelOut.Image"))); + this.btAutoReelOut.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btAutoReelOut.Name = "btAutoReelOut"; + this.btAutoReelOut.Size = new System.Drawing.Size(97, 44); + this.btAutoReelOut.Text = "AutoOut"; + this.btAutoReelOut.Click += new System.EventHandler(this.btAutoReelOut_Click); + // + // btLightRoom + // + this.btLightRoom.Image = ((System.Drawing.Image)(resources.GetObject("btLightRoom.Image"))); + this.btLightRoom.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btLightRoom.Name = "btLightRoom"; + this.btLightRoom.Size = new System.Drawing.Size(78, 44); + this.btLightRoom.Text = "Light"; + this.btLightRoom.ToolTipText = "Internal Light On/Off"; + this.btLightRoom.Click += new System.EventHandler(this.button7_Click); + // + // btManualPrint + // + this.btManualPrint.Image = ((System.Drawing.Image)(resources.GetObject("btManualPrint.Image"))); + this.btManualPrint.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btManualPrint.Name = "btManualPrint"; + this.btManualPrint.Size = new System.Drawing.Size(119, 44); + this.btManualPrint.Text = "Manual Print"; + this.btManualPrint.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(6, 47); + // + // btJobCancle + // + this.btJobCancle.Image = ((System.Drawing.Image)(resources.GetObject("btJobCancle.Image"))); + this.btJobCancle.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btJobCancle.Name = "btJobCancle"; + this.btJobCancle.Size = new System.Drawing.Size(108, 44); + this.btJobCancle.Text = "Cancel Job"; + this.btJobCancle.ToolTipText = "Cancel Current Job"; + this.btJobCancle.Click += new System.EventHandler(this.toolStripButton13_Click); + // + // btDebug + // + this.btDebug.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btDebug.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btDebug.ForeColor = System.Drawing.Color.DarkMagenta; + this.btDebug.Image = ((System.Drawing.Image)(resources.GetObject("btDebug.Image"))); + this.btDebug.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btDebug.Name = "btDebug"; + this.btDebug.Size = new System.Drawing.Size(44, 44); + this.btDebug.Tag = "0"; + this.btDebug.Text = "Developer"; + this.btDebug.ToolTipText = "Developer Menu (Do not use)"; + this.btDebug.Click += new System.EventHandler(this.btDebug_Click); + // + // btCheckInfo + // + this.btCheckInfo.Image = global::Project.Properties.Resources.Barcode; + this.btCheckInfo.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btCheckInfo.Name = "btCheckInfo"; + this.btCheckInfo.Size = new System.Drawing.Size(130, 44); + this.btCheckInfo.Text = "Barcode Check"; + this.btCheckInfo.Click += new System.EventHandler(this.toolStripButton15_Click); + // + // toolStripButton3 + // + this.toolStripButton3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.바코드LToolStripMenuItem, + this.바코드키엔스ToolStripMenuItem}); + this.toolStripButton3.Image = global::Project.Properties.Resources.icons8_camera_40; + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(101, 44); + this.toolStripButton3.Text = "Camera"; + // + // 바코드LToolStripMenuItem + // + this.바코드LToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.연결ToolStripMenuItem, + this.toolStripMenuItem26, + this.toolStripMenuItem21, + this.toolStripMenuItem24, + this.toolStripMenuItem6, + this.toolStripMenuItem28, + this.toolStripMenuItem30}); + this.바코드LToolStripMenuItem.Image = global::Project.Properties.Resources.Arrow_Left; + this.바코드LToolStripMenuItem.Name = "바코드LToolStripMenuItem"; + this.바코드LToolStripMenuItem.Size = new System.Drawing.Size(196, 46); + this.바코드LToolStripMenuItem.Text = "Camera (QRCode)"; + this.바코드LToolStripMenuItem.Click += new System.EventHandler(this.button1_Click_1); + // + // 연결ToolStripMenuItem + // + this.연결ToolStripMenuItem.Name = "연결ToolStripMenuItem"; + this.연결ToolStripMenuItem.Size = new System.Drawing.Size(155, 46); + this.연결ToolStripMenuItem.Text = "Connect"; + this.연결ToolStripMenuItem.Click += new System.EventHandler(this.ConnectToolStripMenuItem_Click); + // + // toolStripMenuItem26 + // + this.toolStripMenuItem26.Name = "toolStripMenuItem26"; + this.toolStripMenuItem26.Size = new System.Drawing.Size(152, 6); + // + // toolStripMenuItem21 + // + this.toolStripMenuItem21.Image = global::Project.Properties.Resources.icons8_green_circle_40; + this.toolStripMenuItem21.Name = "toolStripMenuItem21"; + this.toolStripMenuItem21.Size = new System.Drawing.Size(155, 46); + this.toolStripMenuItem21.Text = "Trigger On"; + this.toolStripMenuItem21.Click += new System.EventHandler(this.toolStripMenuItem21_Click); + // + // toolStripMenuItem24 + // + this.toolStripMenuItem24.Image = global::Project.Properties.Resources.icons8_black_circle_40; + this.toolStripMenuItem24.Name = "toolStripMenuItem24"; + this.toolStripMenuItem24.Size = new System.Drawing.Size(155, 46); + this.toolStripMenuItem24.Text = "Trigger Off"; + this.toolStripMenuItem24.Click += new System.EventHandler(this.toolStripMenuItem24_Click); + // + // toolStripMenuItem6 + // + this.toolStripMenuItem6.Name = "toolStripMenuItem6"; + this.toolStripMenuItem6.Size = new System.Drawing.Size(152, 6); + // + // toolStripMenuItem28 + // + this.toolStripMenuItem28.Image = global::Project.Properties.Resources.icons8_green_circle_40; + this.toolStripMenuItem28.Name = "toolStripMenuItem28"; + this.toolStripMenuItem28.Size = new System.Drawing.Size(155, 46); + this.toolStripMenuItem28.Text = "Trigger On"; + this.toolStripMenuItem28.Click += new System.EventHandler(this.toolStripMenuItem28_Click); + // + // toolStripMenuItem30 + // + this.toolStripMenuItem30.Image = global::Project.Properties.Resources.icons8_black_circle_40; + this.toolStripMenuItem30.Name = "toolStripMenuItem30"; + this.toolStripMenuItem30.Size = new System.Drawing.Size(155, 46); + this.toolStripMenuItem30.Text = "Trigger Off"; + this.toolStripMenuItem30.Click += new System.EventHandler(this.toolStripMenuItem30_Click); + // + // 바코드키엔스ToolStripMenuItem + // + this.바코드키엔스ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem17, + this.toolStripMenuItem18, + this.triggerOnToolStripMenuItem1, + this.triggerOffToolStripMenuItem1, + this.toolStripMenuItem19, + this.connectToolStripMenuItem, + this.disConnectToolStripMenuItem, + this.toolStripMenuItem20, + this.resetToolStripMenuItem, + this.webManagerToolStripMenuItem, + this.toolStripMenuItem23, + this.loadMemoryToolStripMenuItem}); + this.바코드키엔스ToolStripMenuItem.Image = global::Project.Properties.Resources.Barcode; + this.바코드키엔스ToolStripMenuItem.Name = "바코드키엔스ToolStripMenuItem"; + this.바코드키엔스ToolStripMenuItem.Size = new System.Drawing.Size(196, 46); + this.바코드키엔스ToolStripMenuItem.Text = "Barcode (Keyence)"; + // + // toolStripMenuItem17 + // + this.toolStripMenuItem17.Image = global::Project.Properties.Resources.icons8_camera_40; + this.toolStripMenuItem17.Name = "toolStripMenuItem17"; + this.toolStripMenuItem17.Size = new System.Drawing.Size(172, 46); + this.toolStripMenuItem17.Text = "Get Image"; + this.toolStripMenuItem17.Click += new System.EventHandler(this.toolStripMenuItem17_Click); + // + // toolStripMenuItem18 + // + this.toolStripMenuItem18.Name = "toolStripMenuItem18"; + this.toolStripMenuItem18.Size = new System.Drawing.Size(169, 6); + // + // triggerOnToolStripMenuItem1 + // + this.triggerOnToolStripMenuItem1.Image = global::Project.Properties.Resources.icons8_green_circle_40; + this.triggerOnToolStripMenuItem1.Name = "triggerOnToolStripMenuItem1"; + this.triggerOnToolStripMenuItem1.Size = new System.Drawing.Size(172, 46); + this.triggerOnToolStripMenuItem1.Text = "Trigger On"; + this.triggerOnToolStripMenuItem1.Click += new System.EventHandler(this.triggerOnToolStripMenuItem1_Click); + // + // triggerOffToolStripMenuItem1 + // + this.triggerOffToolStripMenuItem1.Image = global::Project.Properties.Resources.icons8_black_circle_40; + this.triggerOffToolStripMenuItem1.Name = "triggerOffToolStripMenuItem1"; + this.triggerOffToolStripMenuItem1.Size = new System.Drawing.Size(172, 46); + this.triggerOffToolStripMenuItem1.Text = "Trigger Off"; + this.triggerOffToolStripMenuItem1.Click += new System.EventHandler(this.triggerOffToolStripMenuItem1_Click); + // + // toolStripMenuItem19 + // + this.toolStripMenuItem19.Name = "toolStripMenuItem19"; + this.toolStripMenuItem19.Size = new System.Drawing.Size(169, 6); + // + // connectToolStripMenuItem + // + this.connectToolStripMenuItem.Image = global::Project.Properties.Resources.Socket; + this.connectToolStripMenuItem.Name = "connectToolStripMenuItem"; + this.connectToolStripMenuItem.Size = new System.Drawing.Size(172, 46); + this.connectToolStripMenuItem.Text = "Connect"; + this.connectToolStripMenuItem.Click += new System.EventHandler(this.connectToolStripMenuItem_Click); + // + // disConnectToolStripMenuItem + // + this.disConnectToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_unavailable_40; + this.disConnectToolStripMenuItem.Name = "disConnectToolStripMenuItem"; + this.disConnectToolStripMenuItem.Size = new System.Drawing.Size(172, 46); + this.disConnectToolStripMenuItem.Text = "DisConnect"; + this.disConnectToolStripMenuItem.Click += new System.EventHandler(this.disConnectToolStripMenuItem_Click); + // + // toolStripMenuItem20 + // + this.toolStripMenuItem20.Name = "toolStripMenuItem20"; + this.toolStripMenuItem20.Size = new System.Drawing.Size(169, 6); + // + // resetToolStripMenuItem + // + this.resetToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_delete_40; + this.resetToolStripMenuItem.Name = "resetToolStripMenuItem"; + this.resetToolStripMenuItem.Size = new System.Drawing.Size(172, 46); + this.resetToolStripMenuItem.Text = "Reset"; + this.resetToolStripMenuItem.Click += new System.EventHandler(this.resetToolStripMenuItem_Click); + // + // webManagerToolStripMenuItem + // + this.webManagerToolStripMenuItem.Image = global::Project.Properties.Resources.icons8_what_40; + this.webManagerToolStripMenuItem.Name = "webManagerToolStripMenuItem"; + this.webManagerToolStripMenuItem.Size = new System.Drawing.Size(172, 46); + this.webManagerToolStripMenuItem.Text = "Web Manager"; + this.webManagerToolStripMenuItem.Click += new System.EventHandler(this.webManagerToolStripMenuItem_Click); + // + // toolStripMenuItem23 + // + this.toolStripMenuItem23.Name = "toolStripMenuItem23"; + this.toolStripMenuItem23.Size = new System.Drawing.Size(169, 6); + // + // loadMemoryToolStripMenuItem + // + this.loadMemoryToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem27, + this.toolStripMenuItem29, + this.toolStripMenuItem31, + this.toolStripMenuItem32, + this.toolStripMenuItem33, + this.toolStripMenuItem34, + this.toolStripMenuItem35, + this.toolStripMenuItem36}); + this.loadMemoryToolStripMenuItem.Name = "loadMemoryToolStripMenuItem"; + this.loadMemoryToolStripMenuItem.Size = new System.Drawing.Size(172, 46); + this.loadMemoryToolStripMenuItem.Text = "Load Memory"; + // + // toolStripMenuItem27 + // + this.toolStripMenuItem27.Name = "toolStripMenuItem27"; + this.toolStripMenuItem27.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem27.Text = "1"; + this.toolStripMenuItem27.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem29 + // + this.toolStripMenuItem29.Name = "toolStripMenuItem29"; + this.toolStripMenuItem29.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem29.Text = "2"; + this.toolStripMenuItem29.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem31 + // + this.toolStripMenuItem31.Name = "toolStripMenuItem31"; + this.toolStripMenuItem31.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem31.Text = "3"; + this.toolStripMenuItem31.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem32 + // + this.toolStripMenuItem32.Name = "toolStripMenuItem32"; + this.toolStripMenuItem32.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem32.Text = "4"; + this.toolStripMenuItem32.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem33 + // + this.toolStripMenuItem33.Name = "toolStripMenuItem33"; + this.toolStripMenuItem33.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem33.Text = "5"; + this.toolStripMenuItem33.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem34 + // + this.toolStripMenuItem34.Name = "toolStripMenuItem34"; + this.toolStripMenuItem34.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem34.Text = "6"; + this.toolStripMenuItem34.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem35 + // + this.toolStripMenuItem35.Name = "toolStripMenuItem35"; + this.toolStripMenuItem35.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem35.Text = "7"; + this.toolStripMenuItem35.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripMenuItem36 + // + this.toolStripMenuItem36.Name = "toolStripMenuItem36"; + this.toolStripMenuItem36.Size = new System.Drawing.Size(80, 22); + this.toolStripMenuItem36.Text = "8"; + this.toolStripMenuItem36.Click += new System.EventHandler(this.toolStripMenuItem27_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(6, 47); + // + // btHistory + // + this.btHistory.Image = ((System.Drawing.Image)(resources.GetObject("btHistory.Image"))); + this.btHistory.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btHistory.Name = "btHistory"; + this.btHistory.Size = new System.Drawing.Size(89, 44); + this.btHistory.Text = "History"; + this.btHistory.ToolTipText = "Check Work History"; + this.btHistory.Click += new System.EventHandler(this.button3_Click); + // + // panel24 + // + this.panel24.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.panel24.Controls.Add(this.tabControl1); + this.panel24.Controls.Add(this.panel25); + this.panel24.Controls.Add(this.groupBox1); + this.panel24.Controls.Add(this.panel26); + this.panel24.Controls.Add(this.grpProgress); + this.panel24.Controls.Add(this.panel27); + this.panel24.Controls.Add(this.groupBox2); + this.panel24.Controls.Add(this.panel28); + this.panel24.Controls.Add(this.groupBox4); + this.panel24.Controls.Add(this.groupBox3); + this.panel24.Dock = System.Windows.Forms.DockStyle.Right; + this.panel24.ForeColor = System.Drawing.Color.White; + this.panel24.Location = new System.Drawing.Point(1238, 48); + this.panel24.Name = "panel24"; + this.panel24.Padding = new System.Windows.Forms.Padding(10, 3, 10, 10); + this.panel24.Size = new System.Drawing.Size(345, 890); + this.panel24.TabIndex = 138; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(10, 613); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(325, 267); + this.tabControl1.TabIndex = 156; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.groupBox5); + this.tabPage1.Location = new System.Drawing.Point(4, 27); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(317, 236); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Operation Log"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.RtLog); + this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox5.Location = new System.Drawing.Point(3, 3); + this.groupBox5.Margin = new System.Windows.Forms.Padding(0); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Padding = new System.Windows.Forms.Padding(6, 5, 6, 6); + this.groupBox5.Size = new System.Drawing.Size(311, 230); + this.groupBox5.TabIndex = 138; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Operation Log"; + // + // RtLog + // + this.RtLog.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); + this.RtLog.BorderStyle = System.Windows.Forms.BorderStyle.None; + sLogMessageColor1.color = System.Drawing.Color.Black; + sLogMessageColor1.gubun = "NOR"; + sLogMessageColor2.color = System.Drawing.Color.Red; + sLogMessageColor2.gubun = "ERR"; + sLogMessageColor3.color = System.Drawing.Color.Tomato; + sLogMessageColor3.gubun = "WARN"; + sLogMessageColor4.color = System.Drawing.Color.Black; + sLogMessageColor4.gubun = "MSG"; + this.RtLog.ColorList = new arCtl.sLogMessageColor[] { + sLogMessageColor1, + sLogMessageColor2, + sLogMessageColor3, + sLogMessageColor4}; + this.RtLog.DateFormat = "MM/dd HH:mm"; + this.RtLog.DefaultColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.RtLog.Dock = System.Windows.Forms.DockStyle.Fill; + this.RtLog.EnableDisplayTimer = false; + this.RtLog.EnableGubunColor = true; + this.RtLog.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.RtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.RtLog.ListFormat = "[{0}] {1}"; + this.RtLog.Location = new System.Drawing.Point(6, 24); + this.RtLog.Margin = new System.Windows.Forms.Padding(0); + this.RtLog.MaxListCount = ((ushort)(1000)); + this.RtLog.MaxTextLength = ((uint)(99999999u)); + this.RtLog.MessageInterval = 50; + this.RtLog.Name = "RtLog"; + this.RtLog.Size = new System.Drawing.Size(299, 200); + this.RtLog.TabIndex = 136; + this.RtLog.Text = "adfasdfasdf"; + // + // panel25 + // + this.panel25.Dock = System.Windows.Forms.DockStyle.Top; + this.panel25.Location = new System.Drawing.Point(10, 608); + this.panel25.Name = "panel25"; + this.panel25.Padding = new System.Windows.Forms.Padding(0, 3, 10, 0); + this.panel25.Size = new System.Drawing.Size(325, 5); + this.panel25.TabIndex = 150; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.tableLayoutPanel3); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox1.Location = new System.Drawing.Point(10, 449); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(10, 5, 10, 10); + this.groupBox1.Size = new System.Drawing.Size(325, 159); + this.groupBox1.TabIndex = 138; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Equipment Operation"; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 3; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel3.Controls.Add(this.btStart, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.btReset, 2, 0); + this.tableLayoutPanel3.Controls.Add(this.btStop, 1, 0); + this.tableLayoutPanel3.Controls.Add(this.lbTime, 0, 1); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(10, 24); + this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 2; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(305, 125); + this.tableLayoutPanel3.TabIndex = 125; + // + // panel26 + // + this.panel26.Dock = System.Windows.Forms.DockStyle.Top; + this.panel26.Location = new System.Drawing.Point(10, 444); + this.panel26.Name = "panel26"; + this.panel26.Padding = new System.Windows.Forms.Padding(0, 3, 10, 0); + this.panel26.Size = new System.Drawing.Size(325, 5); + this.panel26.TabIndex = 152; + // + // grpProgress + // + this.grpProgress.Controls.Add(this.tableLayoutPanel5); + this.grpProgress.Dock = System.Windows.Forms.DockStyle.Top; + this.grpProgress.Location = new System.Drawing.Point(10, 394); + this.grpProgress.Name = "grpProgress"; + this.grpProgress.Padding = new System.Windows.Forms.Padding(5, 0, 5, 5); + this.grpProgress.Size = new System.Drawing.Size(325, 50); + this.grpProgress.TabIndex = 10; + this.grpProgress.TabStop = false; + this.grpProgress.Text = "Work Quantity"; + // + // tableLayoutPanel5 + // + this.tableLayoutPanel5.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel5.ColumnCount = 6; + this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel5.Controls.Add(this.label1, 0, 0); + this.tableLayoutPanel5.Controls.Add(this.lbCntLeft, 1, 0); + this.tableLayoutPanel5.Controls.Add(this.lbCntRight, 5, 0); + this.tableLayoutPanel5.Controls.Add(this.lbTitleNG, 4, 0); + this.tableLayoutPanel5.Controls.Add(this.label7, 2, 0); + this.tableLayoutPanel5.Controls.Add(this.lbCntPicker, 3, 0); + this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel5.Location = new System.Drawing.Point(5, 19); + this.tableLayoutPanel5.Name = "tableLayoutPanel5"; + this.tableLayoutPanel5.RowCount = 1; + this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel5.Size = new System.Drawing.Size(315, 26); + this.tableLayoutPanel5.TabIndex = 13; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label1.Location = new System.Drawing.Point(1, 1); + this.label1.Margin = new System.Windows.Forms.Padding(0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(50, 24); + this.label1.TabIndex = 2; + this.label1.Text = "LEFT"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbCntLeft + // + this.lbCntLeft.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.lbCntLeft.BackColor2 = System.Drawing.SystemColors.Control; + this.lbCntLeft.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbCntLeft.BorderColor = System.Drawing.Color.Black; + this.lbCntLeft.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbCntLeft.BorderSize = new System.Windows.Forms.Padding(0); + this.lbCntLeft.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbCntLeft.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbCntLeft.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbCntLeft.Font = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold); + this.lbCntLeft.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbCntLeft.GradientEnable = true; + this.lbCntLeft.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbCntLeft.GradientRepeatBG = false; + this.lbCntLeft.isButton = false; + this.lbCntLeft.Location = new System.Drawing.Point(52, 1); + this.lbCntLeft.Margin = new System.Windows.Forms.Padding(0); + this.lbCntLeft.MouseDownColor = System.Drawing.Color.Yellow; + this.lbCntLeft.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbCntLeft.msg = null; + this.lbCntLeft.Name = "lbCntLeft"; + this.lbCntLeft.ProgressBorderColor = System.Drawing.Color.Transparent; + this.lbCntLeft.ProgressColor1 = System.Drawing.Color.DimGray; + this.lbCntLeft.ProgressColor2 = System.Drawing.Color.Gray; + this.lbCntLeft.ProgressEnable = false; + this.lbCntLeft.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.lbCntLeft.ProgressForeColor = System.Drawing.Color.White; + this.lbCntLeft.ProgressMax = 100F; + this.lbCntLeft.ProgressMin = 0F; + this.lbCntLeft.ProgressPadding = new System.Windows.Forms.Padding(3); + this.lbCntLeft.ProgressValue = 50F; + this.lbCntLeft.ShadowColor = System.Drawing.Color.LightGray; + this.lbCntLeft.Sign = ""; + this.lbCntLeft.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbCntLeft.SignColor = System.Drawing.Color.Red; + this.lbCntLeft.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbCntLeft.Size = new System.Drawing.Size(52, 24); + this.lbCntLeft.TabIndex = 8; + this.lbCntLeft.Text = "--"; + this.lbCntLeft.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbCntLeft.TextShadow = true; + this.lbCntLeft.TextVisible = true; + // + // lbCntRight + // + this.lbCntRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.lbCntRight.BackColor2 = System.Drawing.SystemColors.Control; + this.lbCntRight.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbCntRight.BorderColor = System.Drawing.Color.Black; + this.lbCntRight.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbCntRight.BorderSize = new System.Windows.Forms.Padding(0); + this.lbCntRight.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbCntRight.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbCntRight.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbCntRight.Font = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold); + this.lbCntRight.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbCntRight.GradientEnable = true; + this.lbCntRight.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbCntRight.GradientRepeatBG = false; + this.lbCntRight.isButton = false; + this.lbCntRight.Location = new System.Drawing.Point(260, 1); + this.lbCntRight.Margin = new System.Windows.Forms.Padding(0); + this.lbCntRight.MouseDownColor = System.Drawing.Color.Yellow; + this.lbCntRight.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbCntRight.msg = null; + this.lbCntRight.Name = "lbCntRight"; + this.lbCntRight.ProgressBorderColor = System.Drawing.Color.Transparent; + this.lbCntRight.ProgressColor1 = System.Drawing.Color.Firebrick; + this.lbCntRight.ProgressColor2 = System.Drawing.Color.IndianRed; + this.lbCntRight.ProgressEnable = false; + this.lbCntRight.ProgressFont = new System.Drawing.Font("Consolas", 13F, System.Drawing.FontStyle.Bold); + this.lbCntRight.ProgressForeColor = System.Drawing.Color.White; + this.lbCntRight.ProgressMax = 100F; + this.lbCntRight.ProgressMin = 0F; + this.lbCntRight.ProgressPadding = new System.Windows.Forms.Padding(3); + this.lbCntRight.ProgressValue = 50F; + this.lbCntRight.ShadowColor = System.Drawing.Color.LightGray; + this.lbCntRight.Sign = ""; + this.lbCntRight.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbCntRight.SignColor = System.Drawing.Color.Red; + this.lbCntRight.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbCntRight.Size = new System.Drawing.Size(54, 24); + this.lbCntRight.TabIndex = 7; + this.lbCntRight.Text = "--"; + this.lbCntRight.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbCntRight.TextShadow = true; + this.lbCntRight.TextVisible = true; + // + // lbTitleNG + // + this.lbTitleNG.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.lbTitleNG.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbTitleNG.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.lbTitleNG.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbTitleNG.Location = new System.Drawing.Point(209, 1); + this.lbTitleNG.Margin = new System.Windows.Forms.Padding(0); + this.lbTitleNG.Name = "lbTitleNG"; + this.lbTitleNG.Size = new System.Drawing.Size(50, 24); + this.lbTitleNG.TabIndex = 2; + this.lbTitleNG.Text = "RIGHT"; + this.lbTitleNG.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.label7.Dock = System.Windows.Forms.DockStyle.Fill; + this.label7.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label7.Location = new System.Drawing.Point(105, 1); + this.label7.Margin = new System.Windows.Forms.Padding(0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(50, 24); + this.label7.TabIndex = 2; + this.label7.Text = "PICKER"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbCntPicker + // + this.lbCntPicker.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.lbCntPicker.BackColor2 = System.Drawing.SystemColors.Control; + this.lbCntPicker.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbCntPicker.BorderColor = System.Drawing.Color.Black; + this.lbCntPicker.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbCntPicker.BorderSize = new System.Windows.Forms.Padding(0); + this.lbCntPicker.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbCntPicker.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbCntPicker.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbCntPicker.Font = new System.Drawing.Font("Calibri", 15F, System.Drawing.FontStyle.Bold); + this.lbCntPicker.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbCntPicker.GradientEnable = true; + this.lbCntPicker.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbCntPicker.GradientRepeatBG = false; + this.lbCntPicker.isButton = false; + this.lbCntPicker.Location = new System.Drawing.Point(156, 1); + this.lbCntPicker.Margin = new System.Windows.Forms.Padding(0); + this.lbCntPicker.MouseDownColor = System.Drawing.Color.Yellow; + this.lbCntPicker.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbCntPicker.msg = null; + this.lbCntPicker.Name = "lbCntPicker"; + this.lbCntPicker.ProgressBorderColor = System.Drawing.Color.Transparent; + this.lbCntPicker.ProgressColor1 = System.Drawing.Color.Firebrick; + this.lbCntPicker.ProgressColor2 = System.Drawing.Color.IndianRed; + this.lbCntPicker.ProgressEnable = false; + this.lbCntPicker.ProgressFont = new System.Drawing.Font("Consolas", 13F, System.Drawing.FontStyle.Bold); + this.lbCntPicker.ProgressForeColor = System.Drawing.Color.White; + this.lbCntPicker.ProgressMax = 100F; + this.lbCntPicker.ProgressMin = 0F; + this.lbCntPicker.ProgressPadding = new System.Windows.Forms.Padding(3); + this.lbCntPicker.ProgressValue = 50F; + this.lbCntPicker.ShadowColor = System.Drawing.Color.LightGray; + this.lbCntPicker.Sign = ""; + this.lbCntPicker.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbCntPicker.SignColor = System.Drawing.Color.Red; + this.lbCntPicker.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbCntPicker.Size = new System.Drawing.Size(52, 24); + this.lbCntPicker.TabIndex = 7; + this.lbCntPicker.Text = "--"; + this.lbCntPicker.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbCntPicker.TextShadow = true; + this.lbCntPicker.TextVisible = true; + // + // panel27 + // + this.panel27.Dock = System.Windows.Forms.DockStyle.Top; + this.panel27.Location = new System.Drawing.Point(10, 389); + this.panel27.Name = "panel27"; + this.panel27.Padding = new System.Windows.Forms.Padding(0, 3, 10, 0); + this.panel27.Size = new System.Drawing.Size(325, 5); + this.panel27.TabIndex = 146; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.tableLayoutPanel4); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox2.Location = new System.Drawing.Point(10, 254); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(10, 0, 10, 10); + this.groupBox2.Size = new System.Drawing.Size(325, 135); + this.groupBox2.TabIndex = 153; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Barcode"; + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel4.ColumnCount = 2; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 58F)); + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4.Controls.Add(this.tbVisionL, 1, 2); + this.tableLayoutPanel4.Controls.Add(this.label5, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.tbBarcodeR, 1, 0); + this.tableLayoutPanel4.Controls.Add(this.label6, 0, 3); + this.tableLayoutPanel4.Controls.Add(this.tbVisionR, 1, 3); + this.tableLayoutPanel4.Controls.Add(this.label2, 0, 2); + this.tableLayoutPanel4.Controls.Add(this.label3, 0, 1); + this.tableLayoutPanel4.Controls.Add(this.tbBarcodeF, 1, 1); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4.Location = new System.Drawing.Point(10, 19); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 4; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 24.99813F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25.00062F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(305, 106); + this.tableLayoutPanel4.TabIndex = 14; + // + // tbVisionL + // + this.tbVisionL.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tbVisionL.BackColor2 = System.Drawing.SystemColors.Control; + this.tbVisionL.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.tbVisionL.BorderColor = System.Drawing.Color.Black; + this.tbVisionL.BorderColorOver = System.Drawing.Color.DarkBlue; + this.tbVisionL.BorderSize = new System.Windows.Forms.Padding(0); + this.tbVisionL.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.tbVisionL.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tbVisionL.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbVisionL.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbVisionL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.tbVisionL.GradientEnable = true; + this.tbVisionL.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.tbVisionL.GradientRepeatBG = false; + this.tbVisionL.isButton = false; + this.tbVisionL.Location = new System.Drawing.Point(60, 53); + this.tbVisionL.Margin = new System.Windows.Forms.Padding(0); + this.tbVisionL.MouseDownColor = System.Drawing.Color.Yellow; + this.tbVisionL.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbVisionL.msg = null; + this.tbVisionL.Name = "tbVisionL"; + this.tbVisionL.ProgressBorderColor = System.Drawing.Color.Transparent; + this.tbVisionL.ProgressColor1 = System.Drawing.Color.DimGray; + this.tbVisionL.ProgressColor2 = System.Drawing.Color.Gray; + this.tbVisionL.ProgressEnable = false; + this.tbVisionL.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.tbVisionL.ProgressForeColor = System.Drawing.Color.White; + this.tbVisionL.ProgressMax = 100F; + this.tbVisionL.ProgressMin = 0F; + this.tbVisionL.ProgressPadding = new System.Windows.Forms.Padding(3); + this.tbVisionL.ProgressValue = 50F; + this.tbVisionL.ShadowColor = System.Drawing.Color.LightGray; + this.tbVisionL.Sign = ""; + this.tbVisionL.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.tbVisionL.SignColor = System.Drawing.Color.Red; + this.tbVisionL.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbVisionL.Size = new System.Drawing.Size(244, 25); + this.tbVisionL.TabIndex = 9; + this.tbVisionL.Text = "{VISION RESULT}"; + this.tbVisionL.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.tbVisionL.TextShadow = true; + this.tbVisionL.TextVisible = true; + this.tbVisionL.Click += new System.EventHandler(this.tbBarcodeR_Click); + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.label5.Dock = System.Windows.Forms.DockStyle.Fill; + this.label5.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label5.Location = new System.Drawing.Point(1, 1); + this.label5.Margin = new System.Windows.Forms.Padding(0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(58, 25); + this.label5.TabIndex = 2; + this.label5.Text = "PICKER-R"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbBarcodeR + // + this.tbBarcodeR.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tbBarcodeR.BackColor2 = System.Drawing.SystemColors.Control; + this.tbBarcodeR.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.tbBarcodeR.BorderColor = System.Drawing.Color.Black; + this.tbBarcodeR.BorderColorOver = System.Drawing.Color.DarkBlue; + this.tbBarcodeR.BorderSize = new System.Windows.Forms.Padding(0); + this.tbBarcodeR.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.tbBarcodeR.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tbBarcodeR.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbBarcodeR.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbBarcodeR.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.tbBarcodeR.GradientEnable = true; + this.tbBarcodeR.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.tbBarcodeR.GradientRepeatBG = false; + this.tbBarcodeR.isButton = false; + this.tbBarcodeR.Location = new System.Drawing.Point(60, 1); + this.tbBarcodeR.Margin = new System.Windows.Forms.Padding(0); + this.tbBarcodeR.MouseDownColor = System.Drawing.Color.Yellow; + this.tbBarcodeR.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbBarcodeR.msg = null; + this.tbBarcodeR.Name = "tbBarcodeR"; + this.tbBarcodeR.ProgressBorderColor = System.Drawing.Color.Transparent; + this.tbBarcodeR.ProgressColor1 = System.Drawing.Color.DimGray; + this.tbBarcodeR.ProgressColor2 = System.Drawing.Color.Gray; + this.tbBarcodeR.ProgressEnable = false; + this.tbBarcodeR.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.tbBarcodeR.ProgressForeColor = System.Drawing.Color.White; + this.tbBarcodeR.ProgressMax = 100F; + this.tbBarcodeR.ProgressMin = 0F; + this.tbBarcodeR.ProgressPadding = new System.Windows.Forms.Padding(3); + this.tbBarcodeR.ProgressValue = 50F; + this.tbBarcodeR.ShadowColor = System.Drawing.Color.LightGray; + this.tbBarcodeR.Sign = ""; + this.tbBarcodeR.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.tbBarcodeR.SignColor = System.Drawing.Color.Red; + this.tbBarcodeR.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbBarcodeR.Size = new System.Drawing.Size(244, 25); + this.tbBarcodeR.TabIndex = 8; + this.tbBarcodeR.Text = "{BARCODE DATA}"; + this.tbBarcodeR.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.tbBarcodeR.TextShadow = true; + this.tbBarcodeR.TextVisible = true; + this.tbBarcodeR.Click += new System.EventHandler(this.tbBarcodeR_Click); + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.label6.Dock = System.Windows.Forms.DockStyle.Fill; + this.label6.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label6.Location = new System.Drawing.Point(1, 79); + this.label6.Margin = new System.Windows.Forms.Padding(0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(58, 26); + this.label6.TabIndex = 2; + this.label6.Text = "RIGHT"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbVisionR + // + this.tbVisionR.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tbVisionR.BackColor2 = System.Drawing.SystemColors.Control; + this.tbVisionR.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.tbVisionR.BorderColor = System.Drawing.Color.Black; + this.tbVisionR.BorderColorOver = System.Drawing.Color.DarkBlue; + this.tbVisionR.BorderSize = new System.Windows.Forms.Padding(0); + this.tbVisionR.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.tbVisionR.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tbVisionR.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbVisionR.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbVisionR.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.tbVisionR.GradientEnable = true; + this.tbVisionR.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.tbVisionR.GradientRepeatBG = false; + this.tbVisionR.isButton = false; + this.tbVisionR.Location = new System.Drawing.Point(60, 79); + this.tbVisionR.Margin = new System.Windows.Forms.Padding(0); + this.tbVisionR.MouseDownColor = System.Drawing.Color.Yellow; + this.tbVisionR.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbVisionR.msg = null; + this.tbVisionR.Name = "tbVisionR"; + this.tbVisionR.ProgressBorderColor = System.Drawing.Color.Transparent; + this.tbVisionR.ProgressColor1 = System.Drawing.Color.DimGray; + this.tbVisionR.ProgressColor2 = System.Drawing.Color.Gray; + this.tbVisionR.ProgressEnable = false; + this.tbVisionR.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.tbVisionR.ProgressForeColor = System.Drawing.Color.White; + this.tbVisionR.ProgressMax = 100F; + this.tbVisionR.ProgressMin = 0F; + this.tbVisionR.ProgressPadding = new System.Windows.Forms.Padding(3); + this.tbVisionR.ProgressValue = 50F; + this.tbVisionR.ShadowColor = System.Drawing.Color.LightGray; + this.tbVisionR.Sign = ""; + this.tbVisionR.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.tbVisionR.SignColor = System.Drawing.Color.Red; + this.tbVisionR.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbVisionR.Size = new System.Drawing.Size(244, 26); + this.tbVisionR.TabIndex = 8; + this.tbVisionR.Text = "{BARCODE DATA}"; + this.tbVisionR.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.tbVisionR.TextShadow = true; + this.tbVisionR.TextVisible = true; + this.tbVisionR.Click += new System.EventHandler(this.tbBarcodeR_Click); + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.label2.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label2.Location = new System.Drawing.Point(1, 53); + this.label2.Margin = new System.Windows.Forms.Padding(0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(58, 19); + this.label2.TabIndex = 2; + this.label2.Text = "LEFT"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 8F); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.label3.Location = new System.Drawing.Point(1, 27); + this.label3.Margin = new System.Windows.Forms.Padding(0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(58, 25); + this.label3.TabIndex = 2; + this.label3.Text = "PICKER-F"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbBarcodeF + // + this.tbBarcodeF.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.tbBarcodeF.BackColor2 = System.Drawing.SystemColors.Control; + this.tbBarcodeF.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.tbBarcodeF.BorderColor = System.Drawing.Color.Black; + this.tbBarcodeF.BorderColorOver = System.Drawing.Color.DarkBlue; + this.tbBarcodeF.BorderSize = new System.Windows.Forms.Padding(0); + this.tbBarcodeF.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.tbBarcodeF.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tbBarcodeF.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbBarcodeF.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbBarcodeF.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.tbBarcodeF.GradientEnable = true; + this.tbBarcodeF.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.tbBarcodeF.GradientRepeatBG = false; + this.tbBarcodeF.isButton = false; + this.tbBarcodeF.Location = new System.Drawing.Point(60, 27); + this.tbBarcodeF.Margin = new System.Windows.Forms.Padding(0); + this.tbBarcodeF.MouseDownColor = System.Drawing.Color.Yellow; + this.tbBarcodeF.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbBarcodeF.msg = null; + this.tbBarcodeF.Name = "tbBarcodeF"; + this.tbBarcodeF.ProgressBorderColor = System.Drawing.Color.Transparent; + this.tbBarcodeF.ProgressColor1 = System.Drawing.Color.DimGray; + this.tbBarcodeF.ProgressColor2 = System.Drawing.Color.Gray; + this.tbBarcodeF.ProgressEnable = false; + this.tbBarcodeF.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.tbBarcodeF.ProgressForeColor = System.Drawing.Color.White; + this.tbBarcodeF.ProgressMax = 100F; + this.tbBarcodeF.ProgressMin = 0F; + this.tbBarcodeF.ProgressPadding = new System.Windows.Forms.Padding(3); + this.tbBarcodeF.ProgressValue = 50F; + this.tbBarcodeF.ShadowColor = System.Drawing.Color.LightGray; + this.tbBarcodeF.Sign = ""; + this.tbBarcodeF.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.tbBarcodeF.SignColor = System.Drawing.Color.Red; + this.tbBarcodeF.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbBarcodeF.Size = new System.Drawing.Size(244, 25); + this.tbBarcodeF.TabIndex = 8; + this.tbBarcodeF.Text = "{BARCODE DATA}"; + this.tbBarcodeF.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.tbBarcodeF.TextShadow = true; + this.tbBarcodeF.TextVisible = true; + this.tbBarcodeF.Click += new System.EventHandler(this.tbBarcodeR_Click); + // + // panel28 + // + this.panel28.Dock = System.Windows.Forms.DockStyle.Top; + this.panel28.Location = new System.Drawing.Point(10, 249); + this.panel28.Name = "panel28"; + this.panel28.Padding = new System.Windows.Forms.Padding(0, 3, 10, 0); + this.panel28.Size = new System.Drawing.Size(325, 5); + this.panel28.TabIndex = 154; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.keyenceviewR); + this.groupBox4.Controls.Add(this.keyenceviewF); + this.groupBox4.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox4.Location = new System.Drawing.Point(10, 97); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Padding = new System.Windows.Forms.Padding(10, 0, 10, 10); + this.groupBox4.Size = new System.Drawing.Size(325, 152); + this.groupBox4.TabIndex = 7; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Vision (Picker)"; + // + // keyenceviewR + // + this.keyenceviewR.BackColor = System.Drawing.Color.Silver; + this.keyenceviewR.Dock = System.Windows.Forms.DockStyle.Left; + this.keyenceviewR.Location = new System.Drawing.Point(10, 19); + this.keyenceviewR.Name = "keyenceviewR"; + this.keyenceviewR.Size = new System.Drawing.Size(150, 123); + this.keyenceviewR.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.keyenceviewR.TabIndex = 9; + this.keyenceviewR.TabStop = false; + // + // keyenceviewF + // + this.keyenceviewF.Dock = System.Windows.Forms.DockStyle.Right; + this.keyenceviewF.Location = new System.Drawing.Point(165, 19); + this.keyenceviewF.Name = "keyenceviewF"; + this.keyenceviewF.Size = new System.Drawing.Size(150, 123); + this.keyenceviewF.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.keyenceviewF.TabIndex = 8; + this.keyenceviewF.TabStop = false; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.lbModelName); + this.groupBox3.Controls.Add(this.arLabel1); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox3.Location = new System.Drawing.Point(10, 3); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(10, 0, 10, 10); + this.groupBox3.Size = new System.Drawing.Size(325, 94); + this.groupBox3.TabIndex = 155; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Model Info"; + // + // lbModelName + // + this.lbModelName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.lbModelName.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.lbModelName.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbModelName.BorderColor = System.Drawing.Color.Black; + this.lbModelName.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbModelName.BorderSize = new System.Windows.Forms.Padding(0); + this.lbModelName.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbModelName.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbModelName.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbModelName.Font = new System.Drawing.Font("Consolas", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbModelName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.lbModelName.GradientEnable = true; + this.lbModelName.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbModelName.GradientRepeatBG = false; + this.lbModelName.isButton = false; + this.lbModelName.Location = new System.Drawing.Point(10, 19); + this.lbModelName.Margin = new System.Windows.Forms.Padding(0); + this.lbModelName.MouseDownColor = System.Drawing.Color.Yellow; + this.lbModelName.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbModelName.msg = null; + this.lbModelName.Name = "lbModelName"; + this.lbModelName.ProgressBorderColor = System.Drawing.Color.Transparent; + this.lbModelName.ProgressColor1 = System.Drawing.Color.DimGray; + this.lbModelName.ProgressColor2 = System.Drawing.Color.Gray; + this.lbModelName.ProgressEnable = false; + this.lbModelName.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.lbModelName.ProgressForeColor = System.Drawing.Color.White; + this.lbModelName.ProgressMax = 100F; + this.lbModelName.ProgressMin = 0F; + this.lbModelName.ProgressPadding = new System.Windows.Forms.Padding(3); + this.lbModelName.ProgressValue = 50F; + this.lbModelName.ShadowColor = System.Drawing.Color.LightGray; + this.lbModelName.Sign = ""; + this.lbModelName.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbModelName.SignColor = System.Drawing.Color.Red; + this.lbModelName.SignFont = new System.Drawing.Font("Consolas", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbModelName.Size = new System.Drawing.Size(305, 45); + this.lbModelName.TabIndex = 8; + this.lbModelName.Text = "{MODEL NAME}"; + this.lbModelName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbModelName.TextShadow = true; + this.lbModelName.TextVisible = true; + // + // arLabel1 + // + this.arLabel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.arLabel1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(228)))), ((int)(((byte)(233))))); + this.arLabel1.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.arLabel1.BorderColor = System.Drawing.Color.Black; + this.arLabel1.BorderColorOver = System.Drawing.Color.DarkBlue; + this.arLabel1.BorderSize = new System.Windows.Forms.Padding(0); + this.arLabel1.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.arLabel1.Cursor = System.Windows.Forms.Cursors.Arrow; + this.arLabel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.arLabel1.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.arLabel1.GradientEnable = true; + this.arLabel1.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.arLabel1.GradientRepeatBG = false; + this.arLabel1.isButton = false; + this.arLabel1.Location = new System.Drawing.Point(10, 64); + this.arLabel1.Margin = new System.Windows.Forms.Padding(0); + this.arLabel1.MouseDownColor = System.Drawing.Color.Yellow; + this.arLabel1.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.arLabel1.msg = null; + this.arLabel1.Name = "arLabel1"; + this.arLabel1.ProgressBorderColor = System.Drawing.Color.Transparent; + this.arLabel1.ProgressColor1 = System.Drawing.Color.DimGray; + this.arLabel1.ProgressColor2 = System.Drawing.Color.Gray; + this.arLabel1.ProgressEnable = false; + this.arLabel1.ProgressFont = new System.Drawing.Font("Consolas", 11F, System.Drawing.FontStyle.Bold); + this.arLabel1.ProgressForeColor = System.Drawing.Color.White; + this.arLabel1.ProgressMax = 100F; + this.arLabel1.ProgressMin = 0F; + this.arLabel1.ProgressPadding = new System.Windows.Forms.Padding(3); + this.arLabel1.ProgressValue = 50F; + this.arLabel1.ShadowColor = System.Drawing.Color.LightGray; + this.arLabel1.Sign = ""; + this.arLabel1.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.arLabel1.SignColor = System.Drawing.Color.Red; + this.arLabel1.SignFont = new System.Drawing.Font("Microsoft Sans Serif", 20.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.arLabel1.Size = new System.Drawing.Size(305, 20); + this.arLabel1.TabIndex = 9; + this.arLabel1.Text = "{CVMODE}"; + this.arLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.arLabel1.TextShadow = true; + this.arLabel1.TextVisible = true; + // + // panel9 + // + this.panel9.Controls.Add(this.lbMsg); + this.panel9.Dock = System.Windows.Forms.DockStyle.Top; + this.panel9.Location = new System.Drawing.Point(1, 48); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(1237, 42); + this.panel9.TabIndex = 144; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 3; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.Controls.Add(this.panel37, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.panel10, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.panel15, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.tableLayoutPanel1.Location = new System.Drawing.Point(1, 493); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1237, 56); + this.tableLayoutPanel1.TabIndex = 159; + // + // panel1 + // + this.panel1.Controls.Add(this.hmi1); + this.panel1.Controls.Add(this.listView21); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(1, 90); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1237, 403); + this.panel1.TabIndex = 160; + // + // hmi1 + // + this.hmi1.arAIRDetect = false; + this.hmi1.arConn_BCD = false; + this.hmi1.arConn_DIO = true; + this.hmi1.arConn_MOT = true; + this.hmi1.arConn_PLC = false; + this.hmi1.arConn_REM = false; + this.hmi1.arConvRun = false; + this.hmi1.arCountPrint0 = 0; + this.hmi1.arCountPrint1 = 0; + this.hmi1.arCountV0 = 0; + this.hmi1.arCountV1 = 0; + this.hmi1.arCountV2 = 0; + this.hmi1.arDebugMode = false; + this.hmi1.arDI_Cv_Detect = new bool[] { + false, + false, + false, + false, + false, + false, + false, + false}; + this.hmi1.arDI_Emergency = false; + this.hmi1.arDI_SaftyOk = true; + this.hmi1.arDIAir = false; + this.hmi1.arFG_CMD_YP_FPICKON = false; + this.hmi1.arFG_CMD_YP_RPICKON = false; + this.hmi1.arFG_RDY_YP_FPICKOF = false; + this.hmi1.arFG_RDY_YP_FPICKON = false; + this.hmi1.arFG_RDY_YP_RPICKOF = false; + this.hmi1.arFG_RDY_YP_RPICKON = false; + this.hmi1.arFGPrinter0END = false; + this.hmi1.arFGPrinter0RDY = false; + this.hmi1.arFGPrinter1END = false; + this.hmi1.arFGPrinter1RDY = false; + this.hmi1.arFGPrinter2END = false; + this.hmi1.arFGPrinter2RDY = false; + this.hmi1.arFGVision0END = false; + this.hmi1.arFGVision0RDY = false; + this.hmi1.arFGVision1END = false; + this.hmi1.arFGVision1RDY = false; + this.hmi1.arFGVision2END = false; + this.hmi1.arFGVision2RDY = false; + this.hmi1.arFlag_Minspace = false; + this.hmi1.arFlag_UnloaderBusy = false; + this.hmi1.arFlag_UnloaderErr = false; + this.hmi1.arFont_count = new System.Drawing.Font("Tahoma", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.hmi1.arFont_picker = new System.Drawing.Font("Consolas", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.hmi1.arFont_PortMessage = new System.Drawing.Font("맑은 고딕", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.hmi1.arFreespace = 0D; + this.hmi1.arHomeProgress = new double[] { + 10D, + 20D, + 30D, + 40D, + 50D, + 60D, + 100D}; + this.hmi1.arInitMOT = false; + this.hmi1.arIsRunning = false; + this.hmi1.arJobEND = false; + this.hmi1.arLastDetectIndex = 3; + this.hmi1.arLowDiskSpace = false; + this.hmi1.arMagnet0 = false; + this.hmi1.arMagnet1 = false; + this.hmi1.arMagnet2 = false; + this.hmi1.arMenus = new UIControl.CMenu[0]; + this.hmi1.arMotILockCVL = false; + this.hmi1.arMotILockCVR = false; + this.hmi1.arMotILockPKX = false; + this.hmi1.arMotILockPKZ = false; + this.hmi1.arMotILockPLM = false; + this.hmi1.arMotILockPLZ = false; + this.hmi1.arMotILockPRL = false; + this.hmi1.arMotILockPRM = false; + this.hmi1.arMotILockPRR = false; + this.hmi1.arMotILockPRZ = false; + this.hmi1.arMotILockVS0 = false; + this.hmi1.arMotILockVS1 = false; + this.hmi1.arMotILockVS2 = false; + this.hmi1.arMotorLengthY = 1000D; + this.hmi1.arMotorLengthZL = 600D; + this.hmi1.arMotorLengthZR = 600D; + this.hmi1.arMotorPosition = new double[] { + 0D, + 0D, + 0D, + 0D, + 0D, + 0D, + 0D}; + this.hmi1.arMotPosNameLM = null; + this.hmi1.arMotPosNameLZ = null; + this.hmi1.arMotPosNamePX = null; + this.hmi1.arMotPosNamePZ = null; + this.hmi1.arMotPosNameRM = null; + this.hmi1.arMotPosNameRZ = null; + this.hmi1.arPickerSafeZone = false; + this.hmi1.arPLItemON = false; + this.hmi1.arPortLItemOn = false; + this.hmi1.arPortRItemOn = false; + this.hmi1.arPRItemON = false; + this.hmi1.arUnloaderSeq = ((byte)(0)); + cPicker1.HasRealItemOn = false; + cPicker1.ItemOn = false; + cPicker1.Overload = true; + cPicker1.PortIndex = ((short)(-1)); + cPicker1.PortPos = "13"; + cPicker1.PreCheckItemOn = false; + cPicker1.PrintPos = null; + cPicker1.VacOutput = new bool[] { + false, + false, + false, + false}; + cPicker2.HasRealItemOn = false; + cPicker2.ItemOn = false; + cPicker2.Overload = false; + cPicker2.PortIndex = ((short)(-1)); + cPicker2.PortPos = "7"; + cPicker2.PreCheckItemOn = false; + cPicker2.PrintPos = null; + cPicker2.VacOutput = new bool[] { + false, + false, + false, + false}; + this.hmi1.arVar_Picker = new UIControl.CPicker[] { + cPicker1, + cPicker2}; + cPort1.AlignOK = ((byte)(0)); + cPort1.AnimationStepPort = 9; + cPort1.arrowIndex = 2; + cPort1.bgColor = System.Drawing.Color.Lime; + cPort1.CartSize = 0; + cPort1.DetectUp = true; + cPort1.Enable = true; + cPort1.errorCount = 0; + cPort1.fgColor = System.Drawing.Color.White; + cPort1.fgColorCount = System.Drawing.Color.Empty; + cPort1.LimitLower = true; + cPort1.LimitUpper = false; + cPort1.MotorDir = true; + cPort1.MotorRun = true; + cPort1.Ready = false; + cPort1.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cPort1.Rect"))); + cPort1.rect_count = new System.Drawing.Rectangle(0, 0, 0, 0); + cPort1.rect_title = new System.Drawing.Rectangle(0, 0, 0, 0); + cPort1.reelCount = 0; + cPort1.reelNo = -1; + cPort1.SaftyErr = false; + cPort1.State = ((ushort)(0)); + cPort1.title = "7\""; + cPort2.AlignOK = ((byte)(0)); + cPort2.AnimationStepPort = 9; + cPort2.arrowIndex = 2; + cPort2.bgColor = System.Drawing.Color.Lime; + cPort2.CartSize = 0; + cPort2.DetectUp = true; + cPort2.Enable = true; + cPort2.errorCount = 0; + cPort2.fgColor = System.Drawing.Color.White; + cPort2.fgColorCount = System.Drawing.Color.Empty; + cPort2.LimitLower = false; + cPort2.LimitUpper = true; + cPort2.MotorDir = false; + cPort2.MotorRun = true; + cPort2.Ready = false; + cPort2.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cPort2.Rect"))); + cPort2.rect_count = new System.Drawing.Rectangle(0, 0, 0, 0); + cPort2.rect_title = new System.Drawing.Rectangle(0, 0, 0, 0); + cPort2.reelCount = 0; + cPort2.reelNo = -1; + cPort2.SaftyErr = false; + cPort2.State = ((ushort)(0)); + cPort2.title = "13\""; + cPort3.AlignOK = ((byte)(0)); + cPort3.AnimationStepPort = 9; + cPort3.arrowIndex = 2; + cPort3.bgColor = System.Drawing.Color.Lime; + cPort3.CartSize = 0; + cPort3.DetectUp = true; + cPort3.Enable = true; + cPort3.errorCount = 0; + cPort3.fgColor = System.Drawing.Color.White; + cPort3.fgColorCount = System.Drawing.Color.Empty; + cPort3.LimitLower = false; + cPort3.LimitUpper = false; + cPort3.MotorDir = false; + cPort3.MotorRun = false; + cPort3.Ready = true; + cPort3.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cPort3.Rect"))); + cPort3.rect_count = new System.Drawing.Rectangle(0, 0, 0, 0); + cPort3.rect_title = new System.Drawing.Rectangle(0, 0, 0, 0); + cPort3.reelCount = 0; + cPort3.reelNo = -1; + cPort3.SaftyErr = false; + cPort3.State = ((ushort)(0)); + cPort3.title = "7\""; + this.hmi1.arVar_Port = new UIControl.CPort[] { + cPort1, + cPort2, + cPort3}; + this.hmi1.arVision_RID = null; + this.hmi1.arVision_SID = null; + this.hmi1.arVisionProcessC = false; + this.hmi1.arVisionProcessL = false; + this.hmi1.arVisionProcessR = false; + this.hmi1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.hmi1.Dock = System.Windows.Forms.DockStyle.Fill; + this.hmi1.Font = new System.Drawing.Font("Times New Roman", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.hmi1.ForeColor = System.Drawing.Color.LightGray; + this.hmi1.L_PICK_BW = false; + this.hmi1.L_PICK_FW = false; + this.hmi1.Location = new System.Drawing.Point(0, 0); + this.hmi1.Margin = new System.Windows.Forms.Padding(0); + this.hmi1.MessageBody = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold); + this.hmi1.MessageTitle = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold); + this.hmi1.MotionHome = false; + this.hmi1.Name = "hmi1"; + this.hmi1.PrintLPICK = false; + this.hmi1.PrintRPICK = false; + this.hmi1.R_PICK_BW = false; + this.hmi1.R_PICK_FW = false; + this.hmi1.Scean = UIControl.HMI.eScean.Nomal; + this.hmi1.Size = new System.Drawing.Size(546, 403); + this.hmi1.TabIndex = 0; + this.hmi1.ZoneItemClick += new System.EventHandler(this.hmi1_ZoneItemClick); + // + // listView21 + // + this.listView21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); + this.listView21.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + colorData1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + colorData1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + colorData1.ForeColor = System.Drawing.Color.White; + colorData1.Tag = ""; + colorData2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + colorData2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + colorData2.ForeColor = System.Drawing.Color.White; + colorData2.Tag = ""; + colorData3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(229)))), ((int)(((byte)(75)))), ((int)(((byte)(75))))); + colorData3.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(229)))), ((int)(((byte)(75)))), ((int)(((byte)(75))))); + colorData3.ForeColor = System.Drawing.Color.White; + colorData3.Tag = ""; + colorData4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(134)))), ((int)(((byte)(75)))), ((int)(((byte)(225))))); + colorData4.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(134)))), ((int)(((byte)(75)))), ((int)(((byte)(225))))); + colorData4.ForeColor = System.Drawing.Color.White; + colorData4.Tag = ""; + colorData5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(77)))), ((int)(((byte)(157))))); + colorData5.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(77)))), ((int)(((byte)(157))))); + colorData5.ForeColor = System.Drawing.Color.White; + colorData5.Tag = ""; + colorData6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(155)))), ((int)(((byte)(42))))); + colorData6.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(155)))), ((int)(((byte)(42))))); + colorData6.ForeColor = System.Drawing.Color.Black; + colorData6.Tag = ""; + colorData7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(22)))), ((int)(((byte)(124)))), ((int)(((byte)(128))))); + colorData7.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(22)))), ((int)(((byte)(124)))), ((int)(((byte)(128))))); + colorData7.ForeColor = System.Drawing.Color.WhiteSmoke; + colorData7.Tag = ""; + colorData8.BackColor = System.Drawing.Color.LimeGreen; + colorData8.BackColor2 = System.Drawing.Color.Lime; + colorData8.ForeColor = System.Drawing.Color.Black; + colorData8.Tag = ""; + this.listView21.ColorList = new arCtl.ListView2.ColorData[] { + colorData1, + colorData2, + colorData3, + colorData4, + colorData5, + colorData6, + colorData7, + colorData8}; + this.listView21.ColumnHeaderVisible = false; + this.listView21.ColumnHeight = 35; + column2.DataGridViewInternal = null; + column2.DisplayIndex = 0; + column2.IndexInternal = 0; + column2.Rect = ((System.Drawing.RectangleF)(resources.GetObject("column2.Rect"))); + column2.SizeOption = arCtl.ListView2.ColumnSizeOption.Pixel; + column2.State = System.Windows.Forms.DataGridViewElementStates.None; + column2.Style = null; + column2.Text = ""; + column2.Width = 80; + column3.DataGridViewInternal = null; + column3.DisplayIndex = 0; + column3.IndexInternal = 0; + column3.Rect = ((System.Drawing.RectangleF)(resources.GetObject("column3.Rect"))); + column3.SizeOption = arCtl.ListView2.ColumnSizeOption.Pixel; + column3.State = System.Windows.Forms.DataGridViewElementStates.None; + column3.Style = null; + column3.Text = ""; + column3.Width = 150; + column4.DataGridViewInternal = null; + column4.DisplayIndex = 0; + column4.IndexInternal = 0; + column4.Rect = ((System.Drawing.RectangleF)(resources.GetObject("column4.Rect"))); + column4.SizeOption = arCtl.ListView2.ColumnSizeOption.Pixel; + column4.State = System.Windows.Forms.DataGridViewElementStates.None; + column4.Style = null; + column4.Text = ""; + column4.Width = 80; + column5.DataGridViewInternal = null; + column5.DisplayIndex = 0; + column5.IndexInternal = 0; + column5.Rect = ((System.Drawing.RectangleF)(resources.GetObject("column5.Rect"))); + column5.SizeOption = arCtl.ListView2.ColumnSizeOption.Pixel; + column5.State = System.Windows.Forms.DataGridViewElementStates.None; + column5.Style = null; + column5.Text = ""; + column5.Width = 150; + column6.DataGridViewInternal = null; + column6.DisplayIndex = 0; + column6.IndexInternal = 0; + column6.Rect = ((System.Drawing.RectangleF)(resources.GetObject("column6.Rect"))); + column6.SizeOption = arCtl.ListView2.ColumnSizeOption.Pixel; + column6.State = System.Windows.Forms.DataGridViewElementStates.None; + column6.Style = null; + column6.Text = ""; + column6.Width = 80; + column7.DataGridViewInternal = null; + column7.DisplayIndex = 0; + column7.IndexInternal = 0; + column7.Rect = ((System.Drawing.RectangleF)(resources.GetObject("column7.Rect"))); + column7.SizeOption = arCtl.ListView2.ColumnSizeOption.Pixel; + column7.State = System.Windows.Forms.DataGridViewElementStates.None; + column7.Style = null; + column7.Text = ""; + column7.Width = 150; + this.listView21.Columns = new arCtl.ListView2.Column[] { + column2, + column3, + column4, + column5, + column6, + column7}; + itemStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + itemStyle1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + itemStyle1.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + itemStyle1.ForeColor = System.Drawing.Color.White; + this.listView21.ColumnStyle = itemStyle1; + this.listView21.Dock = System.Windows.Forms.DockStyle.Right; + this.listView21.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.listView21.ForeColor = System.Drawing.Color.White; + this.listView21.Location = new System.Drawing.Point(546, 0); + this.listView21.MinimumSize = new System.Drawing.Size(30, 30); + this.listView21.Name = "listView21"; + this.listView21.RowHeight = 25; + cell1.BackColor = System.Drawing.Color.White; + cell1.BackColor2 = System.Drawing.Color.White; + cell1.DataGridViewInternal = null; + cell1.DisplayIndex = 0; + cell1.ForeColor = System.Drawing.Color.Black; + cell1.IndexInternal = 0; + cell1.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell1.Rect"))); + cell1.Style = null; + cell1.Text = "LEFT"; + cell1.Valuetype = arCtl.ListView2.eCellValueType.String; + cell2.BackColor = System.Drawing.Color.White; + cell2.BackColor2 = System.Drawing.Color.White; + cell2.DataGridViewInternal = null; + cell2.DisplayIndex = 0; + cell2.ForeColor = System.Drawing.Color.Black; + cell2.IndexInternal = 0; + cell2.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell2.Rect"))); + cell2.Style = null; + cell2.Text = "7/13"; + cell2.Valuetype = arCtl.ListView2.eCellValueType.String; + cell3.BackColor = System.Drawing.Color.White; + cell3.BackColor2 = System.Drawing.Color.White; + cell3.DataGridViewInternal = null; + cell3.DisplayIndex = 0; + cell3.ForeColor = System.Drawing.Color.Black; + cell3.IndexInternal = 0; + cell3.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell3.Rect"))); + cell3.Style = null; + cell3.Text = "PICKER"; + cell3.Valuetype = arCtl.ListView2.eCellValueType.String; + cell4.BackColor = System.Drawing.Color.White; + cell4.BackColor2 = System.Drawing.Color.White; + cell4.DataGridViewInternal = null; + cell4.DisplayIndex = 0; + cell4.ForeColor = System.Drawing.Color.Black; + cell4.IndexInternal = 0; + cell4.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell4.Rect"))); + cell4.Style = null; + cell4.Text = "7/13"; + cell4.Valuetype = arCtl.ListView2.eCellValueType.String; + cell5.BackColor = System.Drawing.Color.White; + cell5.BackColor2 = System.Drawing.Color.White; + cell5.DataGridViewInternal = null; + cell5.DisplayIndex = 0; + cell5.ForeColor = System.Drawing.Color.Black; + cell5.IndexInternal = 0; + cell5.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell5.Rect"))); + cell5.Style = null; + cell5.Text = "RIGHT"; + cell5.Valuetype = arCtl.ListView2.eCellValueType.String; + cell6.BackColor = System.Drawing.Color.White; + cell6.BackColor2 = System.Drawing.Color.White; + cell6.DataGridViewInternal = null; + cell6.DisplayIndex = 0; + cell6.ForeColor = System.Drawing.Color.Black; + cell6.IndexInternal = 0; + cell6.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell6.Rect"))); + cell6.Style = null; + cell6.Text = "7/13"; + cell6.Valuetype = arCtl.ListView2.eCellValueType.String; + row1.Cells = new arCtl.ListView2.Cell[] { + cell1, + cell2, + cell3, + cell4, + cell5, + cell6}; + row1.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row1.Rect"))); + row1.Style = null; + cell7.BackColor = System.Drawing.Color.White; + cell7.BackColor2 = System.Drawing.Color.White; + cell7.DataGridViewInternal = null; + cell7.DisplayIndex = 0; + cell7.ForeColor = System.Drawing.Color.Black; + cell7.IndexInternal = 0; + cell7.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell7.Rect"))); + cell7.Style = null; + cell7.Text = "RID"; + cell7.Valuetype = arCtl.ListView2.eCellValueType.String; + cell8.BackColor = System.Drawing.Color.White; + cell8.BackColor2 = System.Drawing.Color.White; + cell8.DataGridViewInternal = null; + cell8.DisplayIndex = 0; + cell8.ForeColor = System.Drawing.Color.Black; + cell8.IndexInternal = 0; + cell8.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell8.Rect"))); + cell8.Style = null; + cell8.Text = "--"; + cell8.Valuetype = arCtl.ListView2.eCellValueType.String; + cell9.BackColor = System.Drawing.Color.White; + cell9.BackColor2 = System.Drawing.Color.White; + cell9.DataGridViewInternal = null; + cell9.DisplayIndex = 0; + cell9.ForeColor = System.Drawing.Color.Black; + cell9.IndexInternal = 0; + cell9.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell9.Rect"))); + cell9.Style = null; + cell9.Text = "RID"; + cell9.Valuetype = arCtl.ListView2.eCellValueType.String; + cell10.BackColor = System.Drawing.Color.White; + cell10.BackColor2 = System.Drawing.Color.White; + cell10.DataGridViewInternal = null; + cell10.DisplayIndex = 0; + cell10.ForeColor = System.Drawing.Color.Black; + cell10.IndexInternal = 0; + cell10.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell10.Rect"))); + cell10.Style = null; + cell10.Text = "--"; + cell10.Valuetype = arCtl.ListView2.eCellValueType.String; + cell11.BackColor = System.Drawing.Color.White; + cell11.BackColor2 = System.Drawing.Color.White; + cell11.DataGridViewInternal = null; + cell11.DisplayIndex = 0; + cell11.ForeColor = System.Drawing.Color.Black; + cell11.IndexInternal = 0; + cell11.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell11.Rect"))); + cell11.Style = null; + cell11.Text = "RID"; + cell11.Valuetype = arCtl.ListView2.eCellValueType.String; + cell12.BackColor = System.Drawing.Color.White; + cell12.BackColor2 = System.Drawing.Color.White; + cell12.DataGridViewInternal = null; + cell12.DisplayIndex = 0; + cell12.ForeColor = System.Drawing.Color.Black; + cell12.IndexInternal = 0; + cell12.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell12.Rect"))); + cell12.Style = null; + cell12.Text = "--"; + cell12.Valuetype = arCtl.ListView2.eCellValueType.String; + row2.Cells = new arCtl.ListView2.Cell[] { + cell7, + cell8, + cell9, + cell10, + cell11, + cell12}; + row2.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row2.Rect"))); + row2.Style = null; + cell13.BackColor = System.Drawing.Color.White; + cell13.BackColor2 = System.Drawing.Color.White; + cell13.DataGridViewInternal = null; + cell13.DisplayIndex = 0; + cell13.ForeColor = System.Drawing.Color.Black; + cell13.IndexInternal = 0; + cell13.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell13.Rect"))); + cell13.Style = null; + cell13.Text = "SID"; + cell13.Valuetype = arCtl.ListView2.eCellValueType.String; + cell14.BackColor = System.Drawing.Color.White; + cell14.BackColor2 = System.Drawing.Color.White; + cell14.DataGridViewInternal = null; + cell14.DisplayIndex = 0; + cell14.ForeColor = System.Drawing.Color.Black; + cell14.IndexInternal = 0; + cell14.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell14.Rect"))); + cell14.Style = null; + cell14.Text = ""; + cell14.Valuetype = arCtl.ListView2.eCellValueType.String; + cell15.BackColor = System.Drawing.Color.White; + cell15.BackColor2 = System.Drawing.Color.White; + cell15.DataGridViewInternal = null; + cell15.DisplayIndex = 0; + cell15.ForeColor = System.Drawing.Color.Black; + cell15.IndexInternal = 0; + cell15.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell15.Rect"))); + cell15.Style = null; + cell15.Text = "SID"; + cell15.Valuetype = arCtl.ListView2.eCellValueType.String; + cell16.BackColor = System.Drawing.Color.White; + cell16.BackColor2 = System.Drawing.Color.White; + cell16.DataGridViewInternal = null; + cell16.DisplayIndex = 0; + cell16.ForeColor = System.Drawing.Color.Black; + cell16.IndexInternal = 0; + cell16.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell16.Rect"))); + cell16.Style = null; + cell16.Text = ""; + cell16.Valuetype = arCtl.ListView2.eCellValueType.String; + cell17.BackColor = System.Drawing.Color.White; + cell17.BackColor2 = System.Drawing.Color.White; + cell17.DataGridViewInternal = null; + cell17.DisplayIndex = 0; + cell17.ForeColor = System.Drawing.Color.Black; + cell17.IndexInternal = 0; + cell17.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell17.Rect"))); + cell17.Style = null; + cell17.Text = "SID"; + cell17.Valuetype = arCtl.ListView2.eCellValueType.String; + cell18.BackColor = System.Drawing.Color.White; + cell18.BackColor2 = System.Drawing.Color.White; + cell18.DataGridViewInternal = null; + cell18.DisplayIndex = 0; + cell18.ForeColor = System.Drawing.Color.Black; + cell18.IndexInternal = 0; + cell18.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell18.Rect"))); + cell18.Style = null; + cell18.Text = ""; + cell18.Valuetype = arCtl.ListView2.eCellValueType.String; + row3.Cells = new arCtl.ListView2.Cell[] { + cell13, + cell14, + cell15, + cell16, + cell17, + cell18}; + row3.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row3.Rect"))); + row3.Style = null; + cell19.BackColor = System.Drawing.Color.White; + cell19.BackColor2 = System.Drawing.Color.White; + cell19.DataGridViewInternal = null; + cell19.DisplayIndex = 0; + cell19.ForeColor = System.Drawing.Color.Black; + cell19.IndexInternal = 0; + cell19.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell19.Rect"))); + cell19.Style = null; + cell19.Text = "QTY"; + cell19.Valuetype = arCtl.ListView2.eCellValueType.String; + cell20.BackColor = System.Drawing.Color.White; + cell20.BackColor2 = System.Drawing.Color.White; + cell20.DataGridViewInternal = null; + cell20.DisplayIndex = 0; + cell20.ForeColor = System.Drawing.Color.Black; + cell20.IndexInternal = 0; + cell20.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell20.Rect"))); + cell20.Style = null; + cell20.Text = ""; + cell20.Valuetype = arCtl.ListView2.eCellValueType.String; + cell21.BackColor = System.Drawing.Color.White; + cell21.BackColor2 = System.Drawing.Color.White; + cell21.DataGridViewInternal = null; + cell21.DisplayIndex = 0; + cell21.ForeColor = System.Drawing.Color.Black; + cell21.IndexInternal = 0; + cell21.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell21.Rect"))); + cell21.Style = null; + cell21.Text = "QTY"; + cell21.Valuetype = arCtl.ListView2.eCellValueType.String; + cell22.BackColor = System.Drawing.Color.White; + cell22.BackColor2 = System.Drawing.Color.White; + cell22.DataGridViewInternal = null; + cell22.DisplayIndex = 0; + cell22.ForeColor = System.Drawing.Color.Black; + cell22.IndexInternal = 0; + cell22.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell22.Rect"))); + cell22.Style = null; + cell22.Text = ""; + cell22.Valuetype = arCtl.ListView2.eCellValueType.String; + cell23.BackColor = System.Drawing.Color.White; + cell23.BackColor2 = System.Drawing.Color.White; + cell23.DataGridViewInternal = null; + cell23.DisplayIndex = 0; + cell23.ForeColor = System.Drawing.Color.Black; + cell23.IndexInternal = 0; + cell23.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell23.Rect"))); + cell23.Style = null; + cell23.Text = "QTY"; + cell23.Valuetype = arCtl.ListView2.eCellValueType.String; + cell24.BackColor = System.Drawing.Color.White; + cell24.BackColor2 = System.Drawing.Color.White; + cell24.DataGridViewInternal = null; + cell24.DisplayIndex = 0; + cell24.ForeColor = System.Drawing.Color.Black; + cell24.IndexInternal = 0; + cell24.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell24.Rect"))); + cell24.Style = null; + cell24.Text = ""; + cell24.Valuetype = arCtl.ListView2.eCellValueType.String; + row4.Cells = new arCtl.ListView2.Cell[] { + cell19, + cell20, + cell21, + cell22, + cell23, + cell24}; + row4.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row4.Rect"))); + row4.Style = null; + cell25.BackColor = System.Drawing.Color.White; + cell25.BackColor2 = System.Drawing.Color.White; + cell25.DataGridViewInternal = null; + cell25.DisplayIndex = 0; + cell25.ForeColor = System.Drawing.Color.Black; + cell25.IndexInternal = 0; + cell25.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell25.Rect"))); + cell25.Style = null; + cell25.Text = "VNAME"; + cell25.Valuetype = arCtl.ListView2.eCellValueType.String; + cell26.BackColor = System.Drawing.Color.White; + cell26.BackColor2 = System.Drawing.Color.White; + cell26.DataGridViewInternal = null; + cell26.DisplayIndex = 0; + cell26.ForeColor = System.Drawing.Color.Black; + cell26.IndexInternal = 0; + cell26.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell26.Rect"))); + cell26.Style = null; + cell26.Text = ""; + cell26.Valuetype = arCtl.ListView2.eCellValueType.String; + cell27.BackColor = System.Drawing.Color.White; + cell27.BackColor2 = System.Drawing.Color.White; + cell27.DataGridViewInternal = null; + cell27.DisplayIndex = 0; + cell27.ForeColor = System.Drawing.Color.Black; + cell27.IndexInternal = 0; + cell27.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell27.Rect"))); + cell27.Style = null; + cell27.Text = "VNAME"; + cell27.Valuetype = arCtl.ListView2.eCellValueType.String; + cell28.BackColor = System.Drawing.Color.White; + cell28.BackColor2 = System.Drawing.Color.White; + cell28.DataGridViewInternal = null; + cell28.DisplayIndex = 0; + cell28.ForeColor = System.Drawing.Color.Black; + cell28.IndexInternal = 0; + cell28.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell28.Rect"))); + cell28.Style = null; + cell28.Text = ""; + cell28.Valuetype = arCtl.ListView2.eCellValueType.String; + cell29.BackColor = System.Drawing.Color.White; + cell29.BackColor2 = System.Drawing.Color.White; + cell29.DataGridViewInternal = null; + cell29.DisplayIndex = 0; + cell29.ForeColor = System.Drawing.Color.Black; + cell29.IndexInternal = 0; + cell29.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell29.Rect"))); + cell29.Style = null; + cell29.Text = "VNAME"; + cell29.Valuetype = arCtl.ListView2.eCellValueType.String; + cell30.BackColor = System.Drawing.Color.White; + cell30.BackColor2 = System.Drawing.Color.White; + cell30.DataGridViewInternal = null; + cell30.DisplayIndex = 0; + cell30.ForeColor = System.Drawing.Color.Black; + cell30.IndexInternal = 0; + cell30.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell30.Rect"))); + cell30.Style = null; + cell30.Text = ""; + cell30.Valuetype = arCtl.ListView2.eCellValueType.String; + row5.Cells = new arCtl.ListView2.Cell[] { + cell25, + cell26, + cell27, + cell28, + cell29, + cell30}; + row5.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row5.Rect"))); + row5.Style = null; + cell31.BackColor = System.Drawing.Color.White; + cell31.BackColor2 = System.Drawing.Color.White; + cell31.DataGridViewInternal = null; + cell31.DisplayIndex = 0; + cell31.ForeColor = System.Drawing.Color.Black; + cell31.IndexInternal = 0; + cell31.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell31.Rect"))); + cell31.Style = null; + cell31.Text = "VLOT"; + cell31.Valuetype = arCtl.ListView2.eCellValueType.String; + cell32.BackColor = System.Drawing.Color.White; + cell32.BackColor2 = System.Drawing.Color.White; + cell32.DataGridViewInternal = null; + cell32.DisplayIndex = 0; + cell32.ForeColor = System.Drawing.Color.Black; + cell32.IndexInternal = 0; + cell32.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell32.Rect"))); + cell32.Style = null; + cell32.Text = ""; + cell32.Valuetype = arCtl.ListView2.eCellValueType.String; + cell33.BackColor = System.Drawing.Color.White; + cell33.BackColor2 = System.Drawing.Color.White; + cell33.DataGridViewInternal = null; + cell33.DisplayIndex = 0; + cell33.ForeColor = System.Drawing.Color.Black; + cell33.IndexInternal = 0; + cell33.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell33.Rect"))); + cell33.Style = null; + cell33.Text = "VLOT"; + cell33.Valuetype = arCtl.ListView2.eCellValueType.String; + cell34.BackColor = System.Drawing.Color.White; + cell34.BackColor2 = System.Drawing.Color.White; + cell34.DataGridViewInternal = null; + cell34.DisplayIndex = 0; + cell34.ForeColor = System.Drawing.Color.Black; + cell34.IndexInternal = 0; + cell34.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell34.Rect"))); + cell34.Style = null; + cell34.Text = ""; + cell34.Valuetype = arCtl.ListView2.eCellValueType.String; + cell35.BackColor = System.Drawing.Color.White; + cell35.BackColor2 = System.Drawing.Color.White; + cell35.DataGridViewInternal = null; + cell35.DisplayIndex = 0; + cell35.ForeColor = System.Drawing.Color.Black; + cell35.IndexInternal = 0; + cell35.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell35.Rect"))); + cell35.Style = null; + cell35.Text = "VLOT"; + cell35.Valuetype = arCtl.ListView2.eCellValueType.String; + cell36.BackColor = System.Drawing.Color.White; + cell36.BackColor2 = System.Drawing.Color.White; + cell36.DataGridViewInternal = null; + cell36.DisplayIndex = 0; + cell36.ForeColor = System.Drawing.Color.Black; + cell36.IndexInternal = 0; + cell36.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell36.Rect"))); + cell36.Style = null; + cell36.Text = ""; + cell36.Valuetype = arCtl.ListView2.eCellValueType.String; + row6.Cells = new arCtl.ListView2.Cell[] { + cell31, + cell32, + cell33, + cell34, + cell35, + cell36}; + row6.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row6.Rect"))); + row6.Style = null; + cell37.BackColor = System.Drawing.Color.White; + cell37.BackColor2 = System.Drawing.Color.White; + cell37.DataGridViewInternal = null; + cell37.DisplayIndex = 0; + cell37.ForeColor = System.Drawing.Color.Black; + cell37.IndexInternal = 0; + cell37.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell37.Rect"))); + cell37.Style = null; + cell37.Text = "MFG"; + cell37.Valuetype = arCtl.ListView2.eCellValueType.String; + cell38.BackColor = System.Drawing.Color.White; + cell38.BackColor2 = System.Drawing.Color.White; + cell38.DataGridViewInternal = null; + cell38.DisplayIndex = 0; + cell38.ForeColor = System.Drawing.Color.Black; + cell38.IndexInternal = 0; + cell38.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell38.Rect"))); + cell38.Style = null; + cell38.Text = ""; + cell38.Valuetype = arCtl.ListView2.eCellValueType.String; + cell39.BackColor = System.Drawing.Color.White; + cell39.BackColor2 = System.Drawing.Color.White; + cell39.DataGridViewInternal = null; + cell39.DisplayIndex = 0; + cell39.ForeColor = System.Drawing.Color.Black; + cell39.IndexInternal = 0; + cell39.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell39.Rect"))); + cell39.Style = null; + cell39.Text = "MFG"; + cell39.Valuetype = arCtl.ListView2.eCellValueType.String; + cell40.BackColor = System.Drawing.Color.White; + cell40.BackColor2 = System.Drawing.Color.White; + cell40.DataGridViewInternal = null; + cell40.DisplayIndex = 0; + cell40.ForeColor = System.Drawing.Color.Black; + cell40.IndexInternal = 0; + cell40.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell40.Rect"))); + cell40.Style = null; + cell40.Text = ""; + cell40.Valuetype = arCtl.ListView2.eCellValueType.String; + cell41.BackColor = System.Drawing.Color.White; + cell41.BackColor2 = System.Drawing.Color.White; + cell41.DataGridViewInternal = null; + cell41.DisplayIndex = 0; + cell41.ForeColor = System.Drawing.Color.Black; + cell41.IndexInternal = 0; + cell41.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell41.Rect"))); + cell41.Style = null; + cell41.Text = "MFG"; + cell41.Valuetype = arCtl.ListView2.eCellValueType.String; + cell42.BackColor = System.Drawing.Color.White; + cell42.BackColor2 = System.Drawing.Color.White; + cell42.DataGridViewInternal = null; + cell42.DisplayIndex = 0; + cell42.ForeColor = System.Drawing.Color.Black; + cell42.IndexInternal = 0; + cell42.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell42.Rect"))); + cell42.Style = null; + cell42.Text = ""; + cell42.Valuetype = arCtl.ListView2.eCellValueType.String; + row7.Cells = new arCtl.ListView2.Cell[] { + cell37, + cell38, + cell39, + cell40, + cell41, + cell42}; + row7.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row7.Rect"))); + row7.Style = null; + cell43.BackColor = System.Drawing.Color.White; + cell43.BackColor2 = System.Drawing.Color.White; + cell43.DataGridViewInternal = null; + cell43.DisplayIndex = 0; + cell43.ForeColor = System.Drawing.Color.Black; + cell43.IndexInternal = 0; + cell43.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell43.Rect"))); + cell43.Style = null; + cell43.Text = "PART"; + cell43.Valuetype = arCtl.ListView2.eCellValueType.String; + cell44.BackColor = System.Drawing.Color.White; + cell44.BackColor2 = System.Drawing.Color.White; + cell44.DataGridViewInternal = null; + cell44.DisplayIndex = 0; + cell44.ForeColor = System.Drawing.Color.Black; + cell44.IndexInternal = 0; + cell44.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell44.Rect"))); + cell44.Style = null; + cell44.Text = ""; + cell44.Valuetype = arCtl.ListView2.eCellValueType.String; + cell45.BackColor = System.Drawing.Color.White; + cell45.BackColor2 = System.Drawing.Color.White; + cell45.DataGridViewInternal = null; + cell45.DisplayIndex = 0; + cell45.ForeColor = System.Drawing.Color.Black; + cell45.IndexInternal = 0; + cell45.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell45.Rect"))); + cell45.Style = null; + cell45.Text = "PART"; + cell45.Valuetype = arCtl.ListView2.eCellValueType.String; + cell46.BackColor = System.Drawing.Color.White; + cell46.BackColor2 = System.Drawing.Color.White; + cell46.DataGridViewInternal = null; + cell46.DisplayIndex = 0; + cell46.ForeColor = System.Drawing.Color.Black; + cell46.IndexInternal = 0; + cell46.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell46.Rect"))); + cell46.Style = null; + cell46.Text = ""; + cell46.Valuetype = arCtl.ListView2.eCellValueType.String; + cell47.BackColor = System.Drawing.Color.White; + cell47.BackColor2 = System.Drawing.Color.White; + cell47.DataGridViewInternal = null; + cell47.DisplayIndex = 0; + cell47.ForeColor = System.Drawing.Color.Black; + cell47.IndexInternal = 0; + cell47.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell47.Rect"))); + cell47.Style = null; + cell47.Text = "PART"; + cell47.Valuetype = arCtl.ListView2.eCellValueType.String; + cell48.BackColor = System.Drawing.Color.White; + cell48.BackColor2 = System.Drawing.Color.White; + cell48.DataGridViewInternal = null; + cell48.DisplayIndex = 0; + cell48.ForeColor = System.Drawing.Color.Black; + cell48.IndexInternal = 0; + cell48.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell48.Rect"))); + cell48.Style = null; + cell48.Text = ""; + cell48.Valuetype = arCtl.ListView2.eCellValueType.String; + row8.Cells = new arCtl.ListView2.Cell[] { + cell43, + cell44, + cell45, + cell46, + cell47, + cell48}; + row8.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row8.Rect"))); + row8.Style = null; + cell49.BackColor = System.Drawing.Color.White; + cell49.BackColor2 = System.Drawing.Color.White; + cell49.DataGridViewInternal = null; + cell49.DisplayIndex = 0; + cell49.ForeColor = System.Drawing.Color.Black; + cell49.IndexInternal = 0; + cell49.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell49.Rect"))); + cell49.Style = null; + cell49.Text = "SIZE"; + cell49.Valuetype = arCtl.ListView2.eCellValueType.String; + cell50.BackColor = System.Drawing.Color.White; + cell50.BackColor2 = System.Drawing.Color.White; + cell50.DataGridViewInternal = null; + cell50.DisplayIndex = 0; + cell50.ForeColor = System.Drawing.Color.Black; + cell50.IndexInternal = 0; + cell50.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell50.Rect"))); + cell50.Style = null; + cell50.Text = ""; + cell50.Valuetype = arCtl.ListView2.eCellValueType.String; + cell51.BackColor = System.Drawing.Color.White; + cell51.BackColor2 = System.Drawing.Color.White; + cell51.DataGridViewInternal = null; + cell51.DisplayIndex = 0; + cell51.ForeColor = System.Drawing.Color.Black; + cell51.IndexInternal = 0; + cell51.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell51.Rect"))); + cell51.Style = null; + cell51.Text = "SIZE"; + cell51.Valuetype = arCtl.ListView2.eCellValueType.String; + cell52.BackColor = System.Drawing.Color.White; + cell52.BackColor2 = System.Drawing.Color.White; + cell52.DataGridViewInternal = null; + cell52.DisplayIndex = 0; + cell52.ForeColor = System.Drawing.Color.Black; + cell52.IndexInternal = 0; + cell52.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell52.Rect"))); + cell52.Style = null; + cell52.Text = ""; + cell52.Valuetype = arCtl.ListView2.eCellValueType.String; + cell53.BackColor = System.Drawing.Color.White; + cell53.BackColor2 = System.Drawing.Color.White; + cell53.DataGridViewInternal = null; + cell53.DisplayIndex = 0; + cell53.ForeColor = System.Drawing.Color.Black; + cell53.IndexInternal = 0; + cell53.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell53.Rect"))); + cell53.Style = null; + cell53.Text = "SIZE"; + cell53.Valuetype = arCtl.ListView2.eCellValueType.String; + cell54.BackColor = System.Drawing.Color.White; + cell54.BackColor2 = System.Drawing.Color.White; + cell54.DataGridViewInternal = null; + cell54.DisplayIndex = 0; + cell54.ForeColor = System.Drawing.Color.Black; + cell54.IndexInternal = 0; + cell54.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell54.Rect"))); + cell54.Style = null; + cell54.Text = ""; + cell54.Valuetype = arCtl.ListView2.eCellValueType.String; + row9.Cells = new arCtl.ListView2.Cell[] { + cell49, + cell50, + cell51, + cell52, + cell53, + cell54}; + row9.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row9.Rect"))); + row9.Style = null; + cell55.BackColor = System.Drawing.Color.White; + cell55.BackColor2 = System.Drawing.Color.White; + cell55.DataGridViewInternal = null; + cell55.DisplayIndex = 0; + cell55.ForeColor = System.Drawing.Color.Black; + cell55.IndexInternal = 0; + cell55.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell55.Rect"))); + cell55.Style = null; + cell55.Text = "RID"; + cell55.Valuetype = arCtl.ListView2.eCellValueType.String; + cell56.BackColor = System.Drawing.Color.White; + cell56.BackColor2 = System.Drawing.Color.White; + cell56.DataGridViewInternal = null; + cell56.DisplayIndex = 0; + cell56.ForeColor = System.Drawing.Color.Black; + cell56.IndexInternal = 0; + cell56.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell56.Rect"))); + cell56.Style = null; + cell56.Text = ""; + cell56.Valuetype = arCtl.ListView2.eCellValueType.String; + cell57.BackColor = System.Drawing.Color.White; + cell57.BackColor2 = System.Drawing.Color.White; + cell57.DataGridViewInternal = null; + cell57.DisplayIndex = 0; + cell57.ForeColor = System.Drawing.Color.Black; + cell57.IndexInternal = 0; + cell57.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell57.Rect"))); + cell57.Style = null; + cell57.Text = "DEG"; + cell57.Valuetype = arCtl.ListView2.eCellValueType.String; + cell58.BackColor = System.Drawing.Color.White; + cell58.BackColor2 = System.Drawing.Color.White; + cell58.DataGridViewInternal = null; + cell58.DisplayIndex = 0; + cell58.ForeColor = System.Drawing.Color.Black; + cell58.IndexInternal = 0; + cell58.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell58.Rect"))); + cell58.Style = null; + cell58.Text = ""; + cell58.Valuetype = arCtl.ListView2.eCellValueType.String; + cell59.BackColor = System.Drawing.Color.White; + cell59.BackColor2 = System.Drawing.Color.White; + cell59.DataGridViewInternal = null; + cell59.DisplayIndex = 0; + cell59.ForeColor = System.Drawing.Color.Black; + cell59.IndexInternal = 0; + cell59.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell59.Rect"))); + cell59.Style = null; + cell59.Text = "RID"; + cell59.Valuetype = arCtl.ListView2.eCellValueType.String; + cell60.BackColor = System.Drawing.Color.White; + cell60.BackColor2 = System.Drawing.Color.White; + cell60.DataGridViewInternal = null; + cell60.DisplayIndex = 0; + cell60.ForeColor = System.Drawing.Color.Black; + cell60.IndexInternal = 0; + cell60.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell60.Rect"))); + cell60.Style = null; + cell60.Text = ""; + cell60.Valuetype = arCtl.ListView2.eCellValueType.String; + row10.Cells = new arCtl.ListView2.Cell[] { + cell55, + cell56, + cell57, + cell58, + cell59, + cell60}; + row10.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row10.Rect"))); + row10.Style = null; + cell61.BackColor = System.Drawing.Color.White; + cell61.BackColor2 = System.Drawing.Color.White; + cell61.DataGridViewInternal = null; + cell61.DisplayIndex = 0; + cell61.ForeColor = System.Drawing.Color.Black; + cell61.IndexInternal = 0; + cell61.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell61.Rect"))); + cell61.Style = null; + cell61.Text = "SID"; + cell61.Valuetype = arCtl.ListView2.eCellValueType.String; + cell62.BackColor = System.Drawing.Color.White; + cell62.BackColor2 = System.Drawing.Color.White; + cell62.DataGridViewInternal = null; + cell62.DisplayIndex = 0; + cell62.ForeColor = System.Drawing.Color.Black; + cell62.IndexInternal = 0; + cell62.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell62.Rect"))); + cell62.Style = null; + cell62.Text = ""; + cell62.Valuetype = arCtl.ListView2.eCellValueType.String; + cell63.BackColor = System.Drawing.Color.White; + cell63.BackColor2 = System.Drawing.Color.White; + cell63.DataGridViewInternal = null; + cell63.DisplayIndex = 0; + cell63.ForeColor = System.Drawing.Color.Black; + cell63.IndexInternal = 0; + cell63.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell63.Rect"))); + cell63.Style = null; + cell63.Text = "QR"; + cell63.Valuetype = arCtl.ListView2.eCellValueType.String; + cell64.BackColor = System.Drawing.Color.White; + cell64.BackColor2 = System.Drawing.Color.White; + cell64.DataGridViewInternal = null; + cell64.DisplayIndex = 0; + cell64.ForeColor = System.Drawing.Color.Black; + cell64.IndexInternal = 0; + cell64.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell64.Rect"))); + cell64.Style = null; + cell64.Text = ""; + cell64.Valuetype = arCtl.ListView2.eCellValueType.String; + cell65.BackColor = System.Drawing.Color.White; + cell65.BackColor2 = System.Drawing.Color.White; + cell65.DataGridViewInternal = null; + cell65.DisplayIndex = 0; + cell65.ForeColor = System.Drawing.Color.Black; + cell65.IndexInternal = 0; + cell65.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell65.Rect"))); + cell65.Style = null; + cell65.Text = "SID"; + cell65.Valuetype = arCtl.ListView2.eCellValueType.String; + cell66.BackColor = System.Drawing.Color.White; + cell66.BackColor2 = System.Drawing.Color.White; + cell66.DataGridViewInternal = null; + cell66.DisplayIndex = 0; + cell66.ForeColor = System.Drawing.Color.Black; + cell66.IndexInternal = 0; + cell66.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell66.Rect"))); + cell66.Style = null; + cell66.Text = ""; + cell66.Valuetype = arCtl.ListView2.eCellValueType.String; + row11.Cells = new arCtl.ListView2.Cell[] { + cell61, + cell62, + cell63, + cell64, + cell65, + cell66}; + row11.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row11.Rect"))); + row11.Style = null; + cell67.BackColor = System.Drawing.Color.White; + cell67.BackColor2 = System.Drawing.Color.White; + cell67.DataGridViewInternal = null; + cell67.DisplayIndex = 0; + cell67.ForeColor = System.Drawing.Color.Black; + cell67.IndexInternal = 0; + cell67.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell67.Rect"))); + cell67.Style = null; + cell67.Text = "QTY"; + cell67.Valuetype = arCtl.ListView2.eCellValueType.String; + cell68.BackColor = System.Drawing.Color.White; + cell68.BackColor2 = System.Drawing.Color.White; + cell68.DataGridViewInternal = null; + cell68.DisplayIndex = 0; + cell68.ForeColor = System.Drawing.Color.Black; + cell68.IndexInternal = 0; + cell68.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell68.Rect"))); + cell68.Style = null; + cell68.Text = ""; + cell68.Valuetype = arCtl.ListView2.eCellValueType.String; + cell69.BackColor = System.Drawing.Color.White; + cell69.BackColor2 = System.Drawing.Color.White; + cell69.DataGridViewInternal = null; + cell69.DisplayIndex = 0; + cell69.ForeColor = System.Drawing.Color.Black; + cell69.IndexInternal = 0; + cell69.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell69.Rect"))); + cell69.Style = null; + cell69.Text = ""; + cell69.Valuetype = arCtl.ListView2.eCellValueType.String; + cell70.BackColor = System.Drawing.Color.White; + cell70.BackColor2 = System.Drawing.Color.White; + cell70.DataGridViewInternal = null; + cell70.DisplayIndex = 0; + cell70.ForeColor = System.Drawing.Color.Black; + cell70.IndexInternal = 0; + cell70.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell70.Rect"))); + cell70.Style = null; + cell70.Text = ""; + cell70.Valuetype = arCtl.ListView2.eCellValueType.String; + cell71.BackColor = System.Drawing.Color.White; + cell71.BackColor2 = System.Drawing.Color.White; + cell71.DataGridViewInternal = null; + cell71.DisplayIndex = 0; + cell71.ForeColor = System.Drawing.Color.Black; + cell71.IndexInternal = 0; + cell71.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell71.Rect"))); + cell71.Style = null; + cell71.Text = ""; + cell71.Valuetype = arCtl.ListView2.eCellValueType.String; + cell72.BackColor = System.Drawing.Color.White; + cell72.BackColor2 = System.Drawing.Color.White; + cell72.DataGridViewInternal = null; + cell72.DisplayIndex = 0; + cell72.ForeColor = System.Drawing.Color.Black; + cell72.IndexInternal = 0; + cell72.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell72.Rect"))); + cell72.Style = null; + cell72.Text = ""; + cell72.Valuetype = arCtl.ListView2.eCellValueType.String; + row12.Cells = new arCtl.ListView2.Cell[] { + cell67, + cell68, + cell69, + cell70, + cell71, + cell72}; + row12.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row12.Rect"))); + row12.Style = null; + cell73.BackColor = System.Drawing.Color.White; + cell73.BackColor2 = System.Drawing.Color.White; + cell73.DataGridViewInternal = null; + cell73.DisplayIndex = 0; + cell73.ForeColor = System.Drawing.Color.Black; + cell73.IndexInternal = 0; + cell73.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell73.Rect"))); + cell73.Style = null; + cell73.Text = "MANU"; + cell73.Valuetype = arCtl.ListView2.eCellValueType.String; + cell74.BackColor = System.Drawing.Color.White; + cell74.BackColor2 = System.Drawing.Color.White; + cell74.DataGridViewInternal = null; + cell74.DisplayIndex = 0; + cell74.ForeColor = System.Drawing.Color.Black; + cell74.IndexInternal = 0; + cell74.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell74.Rect"))); + cell74.Style = null; + cell74.Text = ""; + cell74.Valuetype = arCtl.ListView2.eCellValueType.String; + cell75.BackColor = System.Drawing.Color.White; + cell75.BackColor2 = System.Drawing.Color.White; + cell75.DataGridViewInternal = null; + cell75.DisplayIndex = 0; + cell75.ForeColor = System.Drawing.Color.Black; + cell75.IndexInternal = 0; + cell75.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell75.Rect"))); + cell75.Style = null; + cell75.Text = ""; + cell75.Valuetype = arCtl.ListView2.eCellValueType.String; + cell76.BackColor = System.Drawing.Color.White; + cell76.BackColor2 = System.Drawing.Color.White; + cell76.DataGridViewInternal = null; + cell76.DisplayIndex = 0; + cell76.ForeColor = System.Drawing.Color.Black; + cell76.IndexInternal = 0; + cell76.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell76.Rect"))); + cell76.Style = null; + cell76.Text = ""; + cell76.Valuetype = arCtl.ListView2.eCellValueType.String; + cell77.BackColor = System.Drawing.Color.White; + cell77.BackColor2 = System.Drawing.Color.White; + cell77.DataGridViewInternal = null; + cell77.DisplayIndex = 0; + cell77.ForeColor = System.Drawing.Color.Black; + cell77.IndexInternal = 0; + cell77.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell77.Rect"))); + cell77.Style = null; + cell77.Text = ""; + cell77.Valuetype = arCtl.ListView2.eCellValueType.String; + cell78.BackColor = System.Drawing.Color.White; + cell78.BackColor2 = System.Drawing.Color.White; + cell78.DataGridViewInternal = null; + cell78.DisplayIndex = 0; + cell78.ForeColor = System.Drawing.Color.Black; + cell78.IndexInternal = 0; + cell78.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell78.Rect"))); + cell78.Style = null; + cell78.Text = ""; + cell78.Valuetype = arCtl.ListView2.eCellValueType.String; + row13.Cells = new arCtl.ListView2.Cell[] { + cell73, + cell74, + cell75, + cell76, + cell77, + cell78}; + row13.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row13.Rect"))); + row13.Style = null; + cell79.BackColor = System.Drawing.Color.White; + cell79.BackColor2 = System.Drawing.Color.White; + cell79.DataGridViewInternal = null; + cell79.DisplayIndex = 0; + cell79.ForeColor = System.Drawing.Color.Black; + cell79.IndexInternal = 0; + cell79.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell79.Rect"))); + cell79.Style = null; + cell79.Text = "VLOT"; + cell79.Valuetype = arCtl.ListView2.eCellValueType.String; + cell80.BackColor = System.Drawing.Color.White; + cell80.BackColor2 = System.Drawing.Color.White; + cell80.DataGridViewInternal = null; + cell80.DisplayIndex = 0; + cell80.ForeColor = System.Drawing.Color.Black; + cell80.IndexInternal = 0; + cell80.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell80.Rect"))); + cell80.Style = null; + cell80.Text = ""; + cell80.Valuetype = arCtl.ListView2.eCellValueType.String; + cell81.BackColor = System.Drawing.Color.White; + cell81.BackColor2 = System.Drawing.Color.White; + cell81.DataGridViewInternal = null; + cell81.DisplayIndex = 0; + cell81.ForeColor = System.Drawing.Color.Black; + cell81.IndexInternal = 0; + cell81.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell81.Rect"))); + cell81.Style = null; + cell81.Text = ""; + cell81.Valuetype = arCtl.ListView2.eCellValueType.String; + cell82.BackColor = System.Drawing.Color.White; + cell82.BackColor2 = System.Drawing.Color.White; + cell82.DataGridViewInternal = null; + cell82.DisplayIndex = 0; + cell82.ForeColor = System.Drawing.Color.Black; + cell82.IndexInternal = 0; + cell82.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell82.Rect"))); + cell82.Style = null; + cell82.Text = ""; + cell82.Valuetype = arCtl.ListView2.eCellValueType.String; + cell83.BackColor = System.Drawing.Color.White; + cell83.BackColor2 = System.Drawing.Color.White; + cell83.DataGridViewInternal = null; + cell83.DisplayIndex = 0; + cell83.ForeColor = System.Drawing.Color.Black; + cell83.IndexInternal = 0; + cell83.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell83.Rect"))); + cell83.Style = null; + cell83.Text = ""; + cell83.Valuetype = arCtl.ListView2.eCellValueType.String; + cell84.BackColor = System.Drawing.Color.White; + cell84.BackColor2 = System.Drawing.Color.White; + cell84.DataGridViewInternal = null; + cell84.DisplayIndex = 0; + cell84.ForeColor = System.Drawing.Color.Black; + cell84.IndexInternal = 0; + cell84.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell84.Rect"))); + cell84.Style = null; + cell84.Text = ""; + cell84.Valuetype = arCtl.ListView2.eCellValueType.String; + row14.Cells = new arCtl.ListView2.Cell[] { + cell79, + cell80, + cell81, + cell82, + cell83, + cell84}; + row14.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row14.Rect"))); + row14.Style = null; + cell85.BackColor = System.Drawing.Color.White; + cell85.BackColor2 = System.Drawing.Color.White; + cell85.DataGridViewInternal = null; + cell85.DisplayIndex = 0; + cell85.ForeColor = System.Drawing.Color.Black; + cell85.IndexInternal = 0; + cell85.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell85.Rect"))); + cell85.Style = null; + cell85.Text = "MFG"; + cell85.Valuetype = arCtl.ListView2.eCellValueType.String; + cell86.BackColor = System.Drawing.Color.White; + cell86.BackColor2 = System.Drawing.Color.White; + cell86.DataGridViewInternal = null; + cell86.DisplayIndex = 0; + cell86.ForeColor = System.Drawing.Color.Black; + cell86.IndexInternal = 0; + cell86.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell86.Rect"))); + cell86.Style = null; + cell86.Text = ""; + cell86.Valuetype = arCtl.ListView2.eCellValueType.String; + cell87.BackColor = System.Drawing.Color.White; + cell87.BackColor2 = System.Drawing.Color.White; + cell87.DataGridViewInternal = null; + cell87.DisplayIndex = 0; + cell87.ForeColor = System.Drawing.Color.Black; + cell87.IndexInternal = 0; + cell87.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell87.Rect"))); + cell87.Style = null; + cell87.Text = ""; + cell87.Valuetype = arCtl.ListView2.eCellValueType.String; + cell88.BackColor = System.Drawing.Color.White; + cell88.BackColor2 = System.Drawing.Color.White; + cell88.DataGridViewInternal = null; + cell88.DisplayIndex = 0; + cell88.ForeColor = System.Drawing.Color.Black; + cell88.IndexInternal = 0; + cell88.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell88.Rect"))); + cell88.Style = null; + cell88.Text = ""; + cell88.Valuetype = arCtl.ListView2.eCellValueType.String; + cell89.BackColor = System.Drawing.Color.White; + cell89.BackColor2 = System.Drawing.Color.White; + cell89.DataGridViewInternal = null; + cell89.DisplayIndex = 0; + cell89.ForeColor = System.Drawing.Color.Black; + cell89.IndexInternal = 0; + cell89.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell89.Rect"))); + cell89.Style = null; + cell89.Text = ""; + cell89.Valuetype = arCtl.ListView2.eCellValueType.String; + cell90.BackColor = System.Drawing.Color.White; + cell90.BackColor2 = System.Drawing.Color.White; + cell90.DataGridViewInternal = null; + cell90.DisplayIndex = 0; + cell90.ForeColor = System.Drawing.Color.Black; + cell90.IndexInternal = 0; + cell90.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell90.Rect"))); + cell90.Style = null; + cell90.Text = ""; + cell90.Valuetype = arCtl.ListView2.eCellValueType.String; + row15.Cells = new arCtl.ListView2.Cell[] { + cell85, + cell86, + cell87, + cell88, + cell89, + cell90}; + row15.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row15.Rect"))); + row15.Style = null; + cell91.BackColor = System.Drawing.Color.White; + cell91.BackColor2 = System.Drawing.Color.White; + cell91.DataGridViewInternal = null; + cell91.DisplayIndex = 0; + cell91.ForeColor = System.Drawing.Color.Black; + cell91.IndexInternal = 0; + cell91.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell91.Rect"))); + cell91.Style = null; + cell91.Text = "PART"; + cell91.Valuetype = arCtl.ListView2.eCellValueType.String; + cell92.BackColor = System.Drawing.Color.White; + cell92.BackColor2 = System.Drawing.Color.White; + cell92.DataGridViewInternal = null; + cell92.DisplayIndex = 0; + cell92.ForeColor = System.Drawing.Color.Black; + cell92.IndexInternal = 0; + cell92.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell92.Rect"))); + cell92.Style = null; + cell92.Text = ""; + cell92.Valuetype = arCtl.ListView2.eCellValueType.String; + cell93.BackColor = System.Drawing.Color.White; + cell93.BackColor2 = System.Drawing.Color.White; + cell93.DataGridViewInternal = null; + cell93.DisplayIndex = 0; + cell93.ForeColor = System.Drawing.Color.Black; + cell93.IndexInternal = 0; + cell93.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell93.Rect"))); + cell93.Style = null; + cell93.Text = ""; + cell93.Valuetype = arCtl.ListView2.eCellValueType.String; + cell94.BackColor = System.Drawing.Color.White; + cell94.BackColor2 = System.Drawing.Color.White; + cell94.DataGridViewInternal = null; + cell94.DisplayIndex = 0; + cell94.ForeColor = System.Drawing.Color.Black; + cell94.IndexInternal = 0; + cell94.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell94.Rect"))); + cell94.Style = null; + cell94.Text = ""; + cell94.Valuetype = arCtl.ListView2.eCellValueType.String; + cell95.BackColor = System.Drawing.Color.White; + cell95.BackColor2 = System.Drawing.Color.White; + cell95.DataGridViewInternal = null; + cell95.DisplayIndex = 0; + cell95.ForeColor = System.Drawing.Color.Black; + cell95.IndexInternal = 0; + cell95.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell95.Rect"))); + cell95.Style = null; + cell95.Text = "PART"; + cell95.Valuetype = arCtl.ListView2.eCellValueType.String; + cell96.BackColor = System.Drawing.Color.White; + cell96.BackColor2 = System.Drawing.Color.White; + cell96.DataGridViewInternal = null; + cell96.DisplayIndex = 0; + cell96.ForeColor = System.Drawing.Color.Black; + cell96.IndexInternal = 0; + cell96.Rect = ((System.Drawing.RectangleF)(resources.GetObject("cell96.Rect"))); + cell96.Style = null; + cell96.Text = ""; + cell96.Valuetype = arCtl.ListView2.eCellValueType.String; + row16.Cells = new arCtl.ListView2.Cell[] { + cell91, + cell92, + cell93, + cell94, + cell95, + cell96}; + row16.Rect = ((System.Drawing.RectangleF)(resources.GetObject("row16.Rect"))); + row16.Style = null; + this.listView21.Rows = new arCtl.ListView2.Row[] { + row1, + row2, + row3, + row4, + row5, + row6, + row7, + row8, + row9, + row10, + row11, + row12, + row13, + row14, + row15, + row16}; + itemStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45))))); + itemStyle2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + itemStyle2.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + itemStyle2.ForeColor = System.Drawing.Color.Black; + this.listView21.RowStyle = itemStyle2; + this.listView21.Size = new System.Drawing.Size(691, 403); + this.listView21.TabIndex = 7; + this.listView21.Text = "listView21"; + // + // FMain + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(1584, 985); + this.Controls.Add(this.panBottom); + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.panel9); + this.Controls.Add(this.panel24); + this.Controls.Add(this.panTopMenu); + this.Controls.Add(this.panStatusBar); + this.DoubleBuffered = true; + this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Name = "FMain"; + this.Padding = new System.Windows.Forms.Padding(1); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.@__Load); + this.panBottom.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.arDatagridView1)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + this.cmCam.ResumeLayout(false); + this.panel37.ResumeLayout(false); + this.panel10.ResumeLayout(false); + this.panel15.ResumeLayout(false); + this.cmBarcode.ResumeLayout(false); + this.cmDebug.ResumeLayout(false); + this.panStatusBar.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panTopMenu.ResumeLayout(false); + this.panTopMenu.PerformLayout(); + this.panel24.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.tableLayoutPanel3.ResumeLayout(false); + this.grpProgress.ResumeLayout(false); + this.tableLayoutPanel5.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.tableLayoutPanel4.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.keyenceviewR)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.keyenceviewF)).EndInit(); + this.groupBox3.ResumeLayout(false); + this.panel9.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ToolStripMenuItem systemParameterToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; + private System.Windows.Forms.ToolStripMenuItem demoRunToolStripMenuItem; + private arCtl.arLabel btStart; + private arCtl.arLabel btStop; + private System.Windows.Forms.ContextMenuStrip cmDebug; + private arCtl.arLabel btReset; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.DataGridViewTextBoxColumn idxDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn stripIdDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn oKDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn nGDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn mISSDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn fileMapDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn dataPathDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn mapOriginDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn mapArrayDataGridViewTextBoxColumn; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem9; + private System.Windows.Forms.ToolStripMenuItem testmenuToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sMResetToolStripMenuItem; + private UIControl.HMI hmi1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem8; + private System.Windows.Forms.ToolStripMenuItem motionEmulatorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem dIOMonitorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem refreshControklToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 작업선택화면ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem historyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem testToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem menusToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sampleToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem debugModeToolStripMenuItem; + private System.Windows.Forms.Panel panBottom; + private System.Windows.Forms.ProgressBar progressBarRefresh; + private System.Windows.Forms.ContextMenuStrip cmBarcode; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem22; + private System.Windows.Forms.ToolStripMenuItem detectCountToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem countToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem screenToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem jOBStartToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem motionParameterToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis0ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis1ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis2ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis3ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis4ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem processListToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip cmCam; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem readBarcodeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem livetaskToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem zoomFitToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem keyenceTrigOnToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem keyenceTrigOffToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem keyenceSaveImageToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5; + private System.Windows.Forms.ToolStripMenuItem liveViewProcessOnOffToolStripMenuItem; + private arCtl.arLabel lbLock2; + private arCtl.arLabel lbLock1; + private arCtl.arLabel lbLock0; + private arCtl.arDatagridView arDatagridView1; + private DataSet1 dataSet1; + private System.Windows.Forms.BindingSource bs; + private System.Windows.Forms.Panel panel10; + private System.Windows.Forms.Panel panel37; + private System.Windows.Forms.Panel panel15; + private arCtl.arLabel arLabel6; + private arCtl.arLabel arLabel11; + private arCtl.arLabel arLabel75; + private arCtl.arLabel arLabel73; + private arCtl.arLabel arLabel76; + private arCtl.arLabel arLabel74; + private System.Windows.Forms.ToolStripMenuItem jObEndToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem7; + private System.Windows.Forms.ToolStripMenuItem visionProcess1ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem visionProcess0ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem customerRuleToolStripMenuItem; + private System.Windows.Forms.Panel panStatusBar; + private System.Windows.Forms.ToolStrip panTopMenu; + private System.Windows.Forms.ToolStripLabel toolStripLabel2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripButton toolStripButton23; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; + private System.Windows.Forms.ToolStripButton btSetting; + private System.Windows.Forms.ToolStripButton toolStripButton9; + private System.Windows.Forms.ToolStripButton btMReset; + private System.Windows.Forms.ToolStripButton toolStripButton16; + private System.Windows.Forms.ToolStripButton btLogViewer; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripButton btHistory; + private System.Windows.Forms.ToolStripButton btLightRoom; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator9; + private System.Windows.Forms.ToolStripButton btJobCancle; + private System.Windows.Forms.ToolStripButton btDebug; + private System.Windows.Forms.Panel panel24; + private System.Windows.Forms.GroupBox groupBox5; + private arCtl.LogTextBox RtLog; + private System.Windows.Forms.Panel panel25; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private arCtl.arLabel lbTime; + private System.Windows.Forms.Panel panel26; + private System.Windows.Forms.GroupBox grpProgress; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5; + private arCtl.arLabel lbCntRight; + private System.Windows.Forms.Label lbTitleNG; + private System.Windows.Forms.Label label1; + private arCtl.arLabel lbCntLeft; + private System.Windows.Forms.Panel panel27; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private arCtl.arLabel tbVisionL; + private System.Windows.Forms.Label label5; + private arCtl.arLabel tbBarcodeR; + private System.Windows.Forms.Label label6; + private arCtl.arLabel tbVisionR; + private System.Windows.Forms.Panel panel28; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.Panel panel9; + private arCtl.arLabel lbMsg; + private System.Windows.Forms.ToolStripButton btCheckInfo; + private System.Windows.Forms.ToolStripButton toolStripButton8; + private System.Windows.Forms.ToolStripDropDownButton toolStripButton3; + private System.Windows.Forms.ToolStripMenuItem 바코드LToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 새로고침ToolStripMenuItem; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel3; + private arFrame.Control.GridView IOState; + private arFrame.Control.GridView HWState; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ToolStripMenuItem systemParameterMotorToolStripMenuItem; + private System.Windows.Forms.Label label7; + private arCtl.arLabel lbCntPicker; + private System.Windows.Forms.ToolStripMenuItem speedLimitToolStripMenuItem; + private System.Windows.Forms.ToolStripDropDownButton toolStripButton10; + private System.Windows.Forms.ToolStripMenuItem 빠른실행ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem btManage; + private System.Windows.Forms.ToolStripMenuItem regExTestToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem10; + private System.Windows.Forms.ToolStripDropDownButton toolStripButton11; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15; + private System.Windows.Forms.ToolStripMenuItem bcdRegProcessClearToolStripMenuItem; + private System.Windows.Forms.ToolStripDropDownButton toolStripButton7; + private System.Windows.Forms.ToolStripMenuItem 모델선택ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 바코드룰ToolStripMenuItem; + private System.Windows.Forms.GroupBox groupBox3; + private arCtl.arLabel lbModelName; + private System.Windows.Forms.ToolStripMenuItem displayVARToolStripMenuItem; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem12; + private System.Windows.Forms.ToolStripMenuItem sID정보ToolStripMenuItem; + private arCtl.ListView2 listView21; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem16; + private System.Windows.Forms.ToolStripMenuItem getImageToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 바코드키엔스ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem17; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem18; + private System.Windows.Forms.ToolStripMenuItem triggerOnToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem triggerOffToolStripMenuItem1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem19; + private System.Windows.Forms.ToolStripMenuItem connectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem disConnectToolStripMenuItem; + private System.Windows.Forms.PictureBox keyenceviewF; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem20; + private System.Windows.Forms.ToolStripMenuItem resetToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem webManagerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem btModelMot; + private System.Windows.Forms.PictureBox keyenceviewR; + private System.Windows.Forms.Label label3; + private arCtl.arLabel tbBarcodeF; + private System.Windows.Forms.ToolStripMenuItem 연결ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem21; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem24; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem26; + private System.Windows.Forms.ToolStripMenuItem inboundToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem postDataToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem manualPrintToolStripMenuItem; + private System.Windows.Forms.ToolStripSplitButton toolStripButton6; + private System.Windows.Forms.ToolStripMenuItem apiCheckToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem barcodeTestToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem6; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem28; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem30; + private System.Windows.Forms.ToolStripMenuItem 프로그램열기ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 인바운드데이터업데이트ToolStripMenuItem; + private arCtl.arLabel arLabel1; + private System.Windows.Forms.ToolStripButton btManualPrint; + private System.Windows.Forms.ToolStripMenuItem multiSIDSelectToolStripMenuItem; + private System.Windows.Forms.DataGridViewTextBoxColumn target; + private System.Windows.Forms.DataGridViewTextBoxColumn JTYPE; + private System.Windows.Forms.DataGridViewTextBoxColumn sTIMEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn PTIME; + private System.Windows.Forms.DataGridViewTextBoxColumn sIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn rIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn VNAME; + private System.Windows.Forms.DataGridViewTextBoxColumn dvc_loc; + private System.Windows.Forms.DataGridViewTextBoxColumn qTYDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn qtymax; + private System.Windows.Forms.DataGridViewTextBoxColumn MFGDATE; + private System.Windows.Forms.DataGridViewTextBoxColumn VLOT; + private System.Windows.Forms.DataGridViewTextBoxColumn PNO; + private System.Windows.Forms.DataGridViewTextBoxColumn MCN; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewCheckBoxColumn PRNATTACH; + private System.Windows.Forms.DataGridViewCheckBoxColumn PRNVALID; + private System.Windows.Forms.DataGridViewTextBoxColumn LOC; + private System.Windows.Forms.DataGridViewTextBoxColumn SID0; + private System.Windows.Forms.DataGridViewTextBoxColumn RID0; + private System.Windows.Forms.DataGridViewTextBoxColumn QTY0; + private System.Windows.Forms.DataGridViewTextBoxColumn ETIME; + private System.Windows.Forms.DataGridViewTextBoxColumn JGUID; + private System.Windows.Forms.DataGridViewTextBoxColumn GUID; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem23; + private System.Windows.Forms.ToolStripMenuItem loadMemoryToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem27; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem29; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem31; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem32; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem33; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem34; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem35; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem36; + private System.Windows.Forms.ToolStripButton btAutoReelOut; + } +} + diff --git a/Handler/Project/fMain.cs b/Handler/Project/fMain.cs new file mode 100644 index 0000000..3f56d9e --- /dev/null +++ b/Handler/Project/fMain.cs @@ -0,0 +1,2254 @@ +using AR; +using Project.Dialog; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security.Permissions; +using System.Threading.Tasks; +using System.Windows.Forms; +using UIControl; +using static Project.Dialog.Debug.fSendInboutData; + +namespace Project +{ + public partial class FMain : Form + { + Boolean camliveBusy = false; + bool liveviewprocesson = false; + Stopwatch watFps = new Stopwatch(); + Stopwatch watFps0 = new Stopwatch(); + Stopwatch watFps1 = new Stopwatch(); + Stopwatch watFps2 = new Stopwatch(); + + System.Threading.Thread thConnection; //Connection check + byte ConnectSeq = 0; + DateTime AirOffStart = DateTime.Parse("1982-11-23"); + DateTime EmergencyTime = DateTime.Now; + Dialog.fLog logForm = null; + + Dialog.fSystem_Setting frmSysParam = null; + Dialog.fSystem_MotParameter frmSysMotParam = null; + delegate void SelectModelHandler(string modelName, bool bUploadConfig); + + + public FMain() + { + InitializeComponent(); + PUB.initCore(); + + + + //AddLiveviewControl(); + + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) this.Close(); + else if (e1.KeyCode == Keys.F1 && e1.Control && e1.Shift) + { + Boolean debug = PUB.flag.get(eVarBool.FG_DEBUG); + PUB.flag.set(eVarBool.FG_DEBUG, !debug, "FMAIN_SECRETKEY"); + ShowDebugMenu(); + } + else if (e1.KeyCode == Keys.F2 && e1.Control && e1.Shift) menu_logform(); + else if (e1.KeyCode == Keys.F5) btStart.PerformClick(); + else if (e1.KeyCode == Keys.F8) btJobCancle.PerformClick(); + else if (e1.KeyCode == Keys.F9) btStart.PerformClick(); + + if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; + }; + + //dotList = new List(); + //dotList.AddRange(new arCtl.arLabel[] { lbDot1, lbDot2, lbDot3, lbDot4, lbDot5, lbDot6, lbDot7, lbDot8, lbDot9, lbDot10 }); + + this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; }; + this.FormClosing += __Closing; + + if (AR.SETTING.Data.FullScreen) this.WindowState = FormWindowState.Maximized; + else this.Size = new Size(1280, 1024); + + //this.lbTitle.MouseMove += LbTitle_MouseMove; + //this.lbTitle.MouseUp += LbTitle_MouseUp; + //this.lbTitle.MouseDown += LbTitle_MouseDown; + //this.lbTitle.DoubleClick += LbTitle_DoubleClick; + } + + void ShowDebugMenu() + { + Boolean debug = PUB.flag.get(eVarBool.FG_DEBUG); + this.btDebug.Visible = debug; + this.hmi1.arDebugMode = debug; + //this.rtStatusMessage.Visible = debug; + //this.panel1.Visible = debug; + } + + private void __Closing(object sender, FormClosingEventArgs e) + { + PUB.popup.needClose = true; + if (PUB.sm.Step == eSMStep.RUN) + { + UTIL.MsgE("Cannot exit while system is running."); + e.Cancel = true; + return; + } + if (PUB.sm.Step < eSMStep.CLOSING) + { + var rlt = UTIL.MsgQ("Do you want to exit?"); + if (rlt != System.Windows.Forms.DialogResult.Yes) + { + e.Cancel = true; + return; + } + _Close_Start(); + } + } + + void UpdateControl() + { + this.RtLog.DateFormat = "HH:mm:ss"; + this.RtLog.BackColor = SystemColors.Window; + this.RtLog.ColorList = new arCtl.sLogMessageColor[] { + new arCtl.sLogMessageColor("BARCODE",Color.DarkMagenta), + new arCtl.sLogMessageColor("ERR",Color.Red), + new arCtl.sLogMessageColor("NORMAL", Color.Black), + new arCtl.sLogMessageColor("WARN", Color.DarkMagenta), + new arCtl.sLogMessageColor("ATT", Color.Tomato), + new arCtl.sLogMessageColor("INFO", Color.MidnightBlue), + new arCtl.sLogMessageColor("VIS", Color.Blue), + new arCtl.sLogMessageColor("SM", Color.Indigo), + new arCtl.sLogMessageColor("WATCH", Color.Indigo), + }; + + var colname = new string[] { "RID", "SID", "QTY", "VNAME", "VLOT", "MFG", "PART" }; + var row = 1; + foreach (var col in colname) + { + listView21.SetText(row, 0, col); + listView21.SetText(row, 2, col); + listView21.SetText(row, 4, col); + + listView21.SetText(row, 1, string.Empty); + listView21.SetText(row, 3, string.Empty); + listView21.SetText(row, 5, string.Empty); + + row += 1; + } + listView21.SetText(row, 0, "SIZE"); + listView21.SetText(row, 2, "SIZE"); + row += 1; + + var row2 = row; + foreach (var col in colname) + { + listView21.SetText(row2, 0, col); + //listView21.SetText(row, 2, col); + listView21.SetText(row2, 4, col); + + listView21.SetText(row2, 1, string.Empty); + listView21.SetText(row2, 3, string.Empty); + listView21.SetText(row2, 5, string.Empty); + + row2 += 1; + } + + colname = new string[] { "DEG", "QR", "BCD", "REGEX", "", "", "" }; + foreach (var col in colname) + { + listView21.SetText(row, 2, col); + listView21.SetText(row, 3, string.Empty); + row += 1; + } + + TowerLamp.Enable = !AR.SETTING.Data.Disable_TowerLamp; + + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + hmi1.arVar_Port[0].MotorDir = true; + hmi1.arVar_Port[2].MotorDir = true; + } + + //UI changes based on whether 2 Keyence units are used + if (SETTING.Data.Keyence_IPR.isEmpty()) + { + keyenceviewR.Visible = false; + keyenceviewF.Dock = DockStyle.Fill; + } + else + { + keyenceviewR.Visible = true; + keyenceviewF.Dock = DockStyle.Right; + } + if (VAR.BOOL[eVarBool.Use_Conveyor]) + { + lbLock0.Visible = false; + lbLock2.Visible = false; + arLabel6.Text = "▲"; + arLabel11.Text = "■"; + arLabel74.Text = "▲"; + arLabel76.Text = "■"; + SETTING.Data.Disable_PortL = true; + SETTING.Data.Disable_PortR = true; + } + else + { + lbLock0.Visible = true; + lbLock2.Visible = true; + arLabel6.Text = "▼"; + arLabel11.Text = "▲"; + arLabel74.Text = "▼"; + arLabel76.Text = "▲"; + SETTING.Data.Disable_PortL = false; + SETTING.Data.Disable_PortR = false; + + } + } + + + //void RefreshList() + //{ + // // 비동기로 실행 + // Task.Run(async () => await RefreshListAsync()); + //} + + async Task RefreshList() + { + //if (COMM.SETTING.Data.OnlineMode == false) return; + + // ProgressBar 표시 + this.BeginInvoke(new Action(() => + { + if (progressBarRefresh != null) + { + progressBarRefresh.Visible = true; + progressBarRefresh.Style = ProgressBarStyle.Marquee; + progressBarRefresh.MarqueeAnimationSpeed = 30; + } + })); + + VAR.TIME[eVarTime.REFRESHLIST] = DateTime.Now; + + try + { + var dtstr = DateTime.Now.ToShortDateString(); + + if (AR.SETTING.Data.OnlineMode) + { + try + { + await Task.Run(() => + { + var ta = new DataSet1TableAdapters.K4EE_Component_Reel_ResultTableAdapter(); + ta.FillByLen7(this.dataSet1.K4EE_Component_Reel_Result, dtstr, dtstr, AR.SETTING.Data.McName); + }); + } + catch (Exception ex) + { + PUB.log.AddE($"DB History Request Error" + ex.Message); + } + } + + // UI 업데이트는 UI 스레드에서 + this.BeginInvoke(new Action(() => ListFormmatData())); + + var TS1 = VAR.TIME.RUN(eVarTime.REFRESHLIST); + PUB.log.AddI(string.Format($"List refresh({0} items) {TS1.TotalSeconds:N1}s", dataSet1.K4EE_Component_Reel_Result.Count)); + } + catch (Exception ex) + { + PUB.log.AddE("List refresh failed:" + ex.Message); + } + finally + { + // ProgressBar 숨기기 + this.BeginInvoke(new Action(() => + { + if (progressBarRefresh != null) + { + progressBarRefresh.Visible = false; + } + })); + } + } + + void ListFormmatData() + { + if (this.InvokeRequired) + { + this.BeginInvoke(new MethodInvoker(ListFormmatData)); + return; + } + + PUB.log.Add($"ListFormmatData"); + + arDatagridView1.SuspendLayout(); + + try + { + foreach (DataGridViewRow item in this.arDatagridView1.Rows) + { + var drv = item.DataBoundItem as System.Data.DataRowView; + var dr = drv.Row as DataSet1.K4EE_Component_Reel_ResultRow; + + if (dr.REMARK.StartsWith("(BYPASS")) + { + item.DefaultCellStyle.BackColor = Color.LightSkyBlue; + } + else + { + if (dr.LOC == "L") + item.DefaultCellStyle.BackColor = Color.FromArgb(220, 220, 220); + else + item.DefaultCellStyle.BackColor = Color.FromArgb(250, 250, 250); + } + + if (dr.REMARK.StartsWith("(BYPASS")) + item.DefaultCellStyle.ForeColor = Color.Black; + else if (dr.PRNATTACH == false) + item.DefaultCellStyle.ForeColor = Color.FromArgb(0xfe, 0x2a, 0x00); + else if (dr.PRNVALID == false) + item.DefaultCellStyle.ForeColor = Color.FromArgb(0x1f, 0x3b, 0x34); + else + item.DefaultCellStyle.ForeColor = Color.Black; + } + } + catch (Exception ex) + { + + } + + arDatagridView1.ResumeLayout(); + } + async private void __Load(object sender, EventArgs e) + { + + + this.Text = Application.ProductName + " ver " + Application.ProductVersion + " " + Application.CompanyName; + PUB.init(); //public initialize + + VAR.BOOL[eVarBool.Use_Conveyor] = SETTING.User.useConv; + groupBox3.Text = $"Model Info({AR.SETTING.Data.McName})"; + + UpdateControl(); + PUB.log.RaiseMsg += Log_RaiseMsg; + PUB.logKeyence.RaiseMsg += Log_RaiseMsg; + PUB.logWS.RaiseMsg += LogWS_RaiseMsg; + + + this.Show(); + Application.DoEvents(); + // sbDevice.Text = ""; + SetStatusMessage("Program initialization", Color.White, Color.White, Color.Tomato, Color.Black); + + + + //Initialize picker status + foreach (var item in this.hmi1.arVar_Picker) + item.Clear(); + + //Initialize port status + foreach (var item in this.hmi1.arVar_Port) + item.Clear(); + + + PUB.flag.set(eVarBool.FG_DEBUG, true, "Under development"); + ShowDebugMenu(); + + ////'Application.DoEvents(); + + //setting dio events + PUB.dio.IOValueChanged += Dio_IOValueChanged; + PUB.dio.Message += _DIO_IOMessage; + + //setting mot events + PUB.mot.Message += mot_Message; + PUB.mot.HomeStatusChanged += mot_HomeStatusChanged; + PUB.mot.AxisMoveValidateCheck += mot_AxisMoveValidateCheck; + PUB.mot.PositionChanged += Mot_PositionChanged; + PUB.mot.StatusChanged += mot_StatusChanged; + PUB.mot.EndStatusChanged += Mot_EndStatusChanged; + + //remote control + PUB.remocon = new arDev.RS232("R"); + PUB.remocon.Terminal = arDev.RS232.eTerminal.LF; + //Pub.remocon.ReceiveData += remocon_ReceiveData; + + PUB.BarcodeFix = new arDev.RS232("B"); + PUB.BarcodeFix.Terminal = arDev.RS232.eTerminal.LF; + PUB.BarcodeFix.ReceiveData += BarcodeFix_ReceiveData; + + var portinfo = AR.SETTING.Data.Serial_Remocon.Split(':'); + PUB.remocon.PortName = portinfo[0]; + if (portinfo.Length > 1) PUB.remocon.BaudRate = int.Parse(portinfo[1]); + else PUB.remocon.BaudRate = 9600; + if (PUB.remocon.Open() == false) PUB.log.AddAT("Debug port open failed(" + AR.SETTING.Data.Serial_Remocon + ")"); + else PUB.log.Add("Debug port open successful(" + AR.SETTING.Data.Serial_Remocon + ")"); + + + PUB.log.Add("State machine started"); + PUB.sm.SetMsgOptOff(); //Disable all message output. (Events still function) + PUB.sm.Running += SM_Loop; + PUB.sm.SPS += SM_SPS; + + //###################################################### + //########## The following events are defined in _11_SM_Events.cs file + //###################################################### + PUB.sm.StepChanged += SM_StepChanged; + PUB.sm.Message += SM_Message; + PUB.sm.InitControl += SM_InitControl; + PUB.sm.StepStarted += SM_StepStarted; + PUB.sm.StepCompleted += SM_StepCompleted; + PUB.sm.StateProgress += SM_StateProgress; + PUB.sm.Start(); + + //Flag value changes + //PUB.flag.ValueChanged += Flag_ValueChanged; + VAR.BOOL.ValueChanged += Flag_ValueChanged; + + //ILock value changes + for (int i = 0; i < PUB.iLock.Length; i++) + PUB.iLock[i].ValueChanged += Lock_ValueChanged; + + //ILock value changes + PUB.iLockPRL.ValueChanged += Lock_ValueChanged; + PUB.iLockPRR.ValueChanged += Lock_ValueChanged; + PUB.iLockVS0.ValueChanged += Lock_ValueChanged; + PUB.iLockVS1.ValueChanged += Lock_ValueChanged; + PUB.iLockVS2.ValueChanged += Lock_ValueChanged; + + PUB.iLockCVL.ValueChanged += Lock_ValueChanged; + PUB.iLockCVR.ValueChanged += Lock_ValueChanged; + + hmi1.ClearMenu(); + hmi1.Message += loader1_Message; + hmi1.IConClick += loader1_IConClick; + hmi1.ButtonClick += Loader1_ButtonClick; + + PUB.plc = new AR.MemoryMap.Client(SETTING.Data.swplc_name, SETTING.Data.swplc_size); + PUB.plc.ValueChanged += Plc_ValueChanged; + PUB.plc.Start(); + + VAR.I32[eVarInt32.Front_Laser_Cleaning] += 1; + + //Keyence connection + if (SETTING.Data.Keyence_IPF.isEmpty() == false) + { + PUB.keyenceF = new Device.KeyenceBarcode(AR.SETTING.Data.Keyence_IPF); + PUB.keyenceF.Tag = "F"; + PUB.keyenceF.Connect(); + PUB.keyenceF.BarcodeRecv += Keyence_BarcodeRecv; + PUB.keyenceF.ImageRecv += Keyence_ImageRecv; + } + + if (SETTING.Data.Keyence_IPR.isEmpty() == false) + { + PUB.keyenceR = new Device.KeyenceBarcode(AR.SETTING.Data.Keyence_IPR); + PUB.keyenceR.Tag = "R"; + PUB.keyenceR.Connect(); + PUB.keyenceR.BarcodeRecv += Keyence_BarcodeRecv; + PUB.keyenceR.ImageRecv += Keyence_ImageRecv; + } + + tmDisplay.Start(); //start Display + + PUB.AddSystemLog(Application.ProductVersion, "SCREEN", "Message"); + + PUB.log.Add("Program Start"); + if (SETTING.Data.OnlineMode) + PUB.CheckNRegister3(Application.ProductName, "chi", Application.ProductVersion); + else PUB.GetIPMac(); + + if (SETTING.Data.EnableDebugMode) + { + btDebug.Visible = true; + PUB.flag.set(eVarBool.FG_DEBUG, true, "FMAIN_STARTUP"); + // menu_logform(); + } + + //swPLC program execution + var swplcfile = UTIL.MakePath("swplc", "SoftwarePLC.exe"); + if (System.IO.File.Exists(swplcfile)) + { + UTIL.RunProcess(swplcfile); + } + else PUB.log.AddE($"No SoftwarePLC Execute File({swplcfile})"); + + await RefreshList(); + UpdateControl(); + PUB.flag.set(eVarBool.FG_ENABLE_LEFT, !AR.SETTING.Data.Disable_Left, "LOAD"); + PUB.flag.set(eVarBool.FG_ENABLE_RIGHT, !AR.SETTING.Data.Disable_Right, "LOAD"); + + //Connection check thread + var thStart = new System.Threading.ThreadStart(bwDeviceConnection); + thConnection = new System.Threading.Thread(thStart); + thConnection.IsBackground = true; + thConnection.Start(); + + } + + + private void Plc_ValueChanged(object sender, AR.MemoryMap.Core.monitorvalueargs e) + { + // + } + + private void BarcodeFix_ReceiveData(object sender, arDev.RS232.ReceiveDataEventArgs e) + { + var data = e.StrValue.Replace("\r", "").Replace("\n", ""); + bool findregex = false; + PUB.log.Add($"Fixed barcode received\n{data}"); + + Tuple> cnt = null; + bool IgnoreBarcode = false; + lock (PUB.Result.BCDPatternLock) + { + cnt = BarcodeRegExProcess( + PUB.Result.BCDPattern, + PUB.Result.BCDIgnorePattern, + PUB.Result.ItemDataC.VisionData, string.Empty, data, out IgnoreBarcode, out findregex); + } + + + if (IgnoreBarcode) PUB.log.AddE("This is an ignore barcode"); + else if (cnt.Item1 == 0) PUB.log.AddAT("(Manual) No applicable barcode value"); + else PUB.log.Add($"(Manual) Barcode applied count:{cnt.Item1}"); + + //Find patterns that are compatible with other models + if ((cnt?.Item1 ?? 0) == 0) + { + var patterns = PUB.GetPatterns("%", false); + PUB.log.Add("=============="); + cnt = BarcodeRegExProcess(patterns, new System.Collections.Generic.List(), null, string.Empty, data, out bool igBarcode, out findregex); + if (cnt.Item1 > 0) + { + PUB.log.AddI("Compatible with the following barcode"); + foreach (var item in cnt.Item2) + { + PUB.log.Add($"Model:{item}"); + } + + //If there is 1 data item and the name is different from current model, recommend it + if (cnt.Item2.Count == 1 && AR.SETTING.Data.Enable_AutoChangeModelbyHandBarcode) + { + var modelname = cnt.Item2[0].Split('|')[0]; + if (PUB.Result.isSetvModel && modelname.Equals(PUB.Result.vModel.Title)) + { + //Same barcode, no additional work needed + } + else + { + if (PUB.mdm.dataSet.OPModel.Where(t => t.Title.Equals(modelname)).Any()) + { + PUB.log.Add($"Model auto-switch (fixed barcode)"); + PUB.SelectModelV(modelname); + } + } + } + + } + } + } + + void loader1_Message(object sender, HMI.MessageArgs e) + { + //Message generated from loader + if (e.isError) PUB.log.AddE(e.Message); + else PUB.log.Add(e.Message); + } + + private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + if (Message.Contains("ignore")) return; + if (Message.StartsWith("1:")) return; + if (Message.StartsWith("11:")) return; + + this.RtLog.AddMsg(LogTime, TypeStr, Message); + } + private void LogWS_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + this.RtLog.AddMsg(LogTime, TypeStr, Message); + } + + + /// + /// soft reset value & use + /// + void UpdateSoftLimit() + { + PUB.log.Add("Motion SOFT-LIMIT setting"); + + for (short i = 0; i < PUB.mot.DeviceCount; i++) + { + if (PUB.system_mot.UseAxis(i) == false) + { + PUB.mot.SetUse(i, false); + } + else + { + PUB.mot.SetUse(i, true); + if (PUB.system_mot.SWLimit(i) > 0) + PUB.mot.SetSoftLimit((short)i, true, PUB.system_mot.SWLimit(i), -9999); + else + PUB.mot.SetSoftLimit((short)i, false, 0, 0); + } + } + + } + + void Func_sw_initialize() + { + PUB.Result.ResetButtonDownTime = DateTime.Now; + if (PUB.sm.Step == eSMStep.RUN) + { + PUB.popup.setMessage("SYSTEM INNITIALIZE\n" + + "Cannot execute [Initialize] during operation\n" + + "Method #1 => Use [Stop] button to stop system then retry\n" + + "Method #2 => Switch to [Manual Execution] mode then retry"); + } + else if ( + PUB.sm.getNewStep != eSMStep.HOME_FULL && + PUB.sm.Step != eSMStep.HOME_FULL) + { + PUB.log.Add("Switching system status to RESET"); + PUB.AddSystemLog(Application.ProductVersion, "MAIN", "SYSTEM RESET"); + PUB.sm.SetNewStep(eSMStep.HOME_FULL); + } + else PUB.log.AddAT("RESET button ignored because system is already in RESET state."); + } + + + /// + /// Task selection before starting work + /// + void Func_start_job_select() + { + if (this.InvokeRequired) + { + this.BeginInvoke(new MethodInvoker(Func_start_job_select), null); + } + else + { + //Clear log window + if (this.RtLog.InvokeRequired) RtLog.BeginInvoke(new Action(() => { RtLog.Clear(); })); + else this.RtLog.Clear(); + + //PUB.popup.needClose = true; + //PUB.flag.set(eVarBool.RUN_INIT, false, "FN_JOBSELECT"); + //PUB.ClearRunStep(0); + //PUB.ClearRunStep(1); + + if (DIO.GetIOInput(eDIName.PICKER_SAFE) == false) + { + PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NEED_JOBCANCEL, eNextStep.ERROR); + return; + } + + + var sb = new System.Text.StringBuilder(); + if (PUB.mot.IsInit == false) sb.AppendLine("▶ Motion board not initialized.\nPlease contact support"); + if (PUB.dio.IsInit == false) sb.AppendLine("▶ I/O board not initialized.\nPlease contact support"); + if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) sb.AppendLine("▶ AIR output not active (Press the AIR button on the front panel)"); + if (DIO.GetIOInput(eDIName.AIR_DETECT) == false) sb.AppendLine("▶ AIR not detected (Check AIR input and output status)"); + + if (PUB.mot.HasHomeSetOff == true) sb.AppendLine("▶ There are axes that have not completed home search (Execute device initialization first)"); + + if (sb.Length > 0) + { + PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.MESSAGE_ERROR, eNextStep.ERROR, sb.ToString()); + return; + } + + //Allow user to select work type + + Form f; + + using (f = new Dialog.fSelectJob()) + if (f.ShowDialog() == DialogResult.OK) + { + PUB.sm.SetNewStep(eSMStep.RUN); + } + else + { + PUB.log.AddAT("User cancelled at task selection screen before starting work"); + + } + } + } + + + private void systemParameterToolStripMenuItem_Click(object sender, EventArgs e) + { + if (frmSysParam == null || frmSysParam.IsDisposed || frmSysParam.Disposing) + { + if (frmSysParam != null) frmSysParam.FormClosed -= frmSysParam_FormClosed; + frmSysParam = new Dialog.fSystem_Setting(); + frmSysParam.FormClosed += frmSysParam_FormClosed; + } + frmSysParam.Show(); + frmSysParam.Activate(); + if (frmSysParam.WindowState == FormWindowState.Minimized) + frmSysParam.WindowState = FormWindowState.Normal; + } + + void frmSysParam_FormClosed(object sender, FormClosedEventArgs e) + { + var f = sender as Form; + if (f.DialogResult == System.Windows.Forms.DialogResult.OK) + { + UpdateSoftLimit(); + } + } + + void CheckFreeSpace() + { + try + { + double freeSpaceRate_ = 0; + var path = PUB.getSavePath(out freeSpaceRate_); + if (path.StartsWith("\\")) + { + hmi1.arFreespace = 0.0; + } + else + { + hmi1.arFreespace = freeSpaceRate_;// + if (freeSpaceRate_ < AR.SETTING.Data.AutoDeleteThreshold) + { + PUB.flag.set(eVarBool.FG_MINSPACE, true, "CheckFreeSpace"); + hmi1.arLowDiskSpace = true; + } + else + { + PUB.flag.set(eVarBool.FG_MINSPACE, false, "CheckFreeSpace"); + hmi1.arLowDiskSpace = false; + } + } + } + catch (Exception ex) + { + hmi1.arFreespace = 0.0; + PUB.log.AddE("check free space : " + ex.Message); + } + } + private void demoRunToolStripMenuItem_Click(object sender, EventArgs e) + { + var item = new Class.JobData(0) { }; + SaveData_EE(item, "L", "TEST", "debug"); + + } + private void arLabel2_Click_1(object sender, EventArgs e) + { + var ctl = sender as arCtl.arLabel; + if (ctl.Enabled == false) return; + PUB.log.Add("User Click : Start", false); + _BUTTON_START(); + } + + private void arLabel4_Click_1(object sender, EventArgs e) + { + PUB.log.Add("User Click : Stop", false); + _BUTTON_STOP(); + } + + private void btReset_Click(object sender, EventArgs e) + { + PUB.log.Add("User Click : Reset", false); + _BUTTON_RESET(); + } + + void menu_logform() + { + if (logForm == null || logForm.IsDisposed == true || logForm.Disposing == true) + logForm = new Dialog.fLog(); + if (logForm.WindowState == FormWindowState.Minimized) logForm.WindowState = FormWindowState.Normal; + logForm.Show(); + } + + + private void toolStripMenuItem9_Click(object sender, EventArgs e) + { + menu_logform(); + } + + + + private void arLabel10_Click_1(object sender, EventArgs e) + { + if (PUB.sm.isRunning == true) + { + UTIL.MsgE("AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + return; + } + + this.Close(); + } + + private void button7_Click(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + var cur = DIO.GetIOOutput(eDOName.ROOMLIGHT); + DIO.SetRoomLight(!cur, true); + } + + Dialog.fHistory fhist = null; + private void button3_Click(object sender, EventArgs e) + { + if (fhist == null || fhist.IsDisposed) + fhist = new Dialog.fHistory(); + + fhist.Show(); + fhist.Activate(); + if (fhist.WindowState == FormWindowState.Minimized) + fhist.WindowState = FormWindowState.Maximized; + + //f.Show(); + //var file = System.IO.Path.Combine(UTIL.CurrentPath, "ResultView", "ResultView.exe"); + //if (System.IO.File.Exists(file) == false) + //{ + + // PUB.popup.setMessage("Result Viewer Error\nResult viewer file does not exist\nPlease contact developer (T.8567)\nFile : " + file); + // return; + //} + //UTIL.RunProcess(file); + } + + private void button4_Click(object sender, EventArgs e) + { + + } + + + private void button5_Click(object sender, EventArgs e) + { + + } + + private void button6_Click(object sender, EventArgs e) + { + + } + + private void arLabel13_Click(object sender, EventArgs e) + { + UTIL.ScreenCapture(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height, new Point(0, 0)); + } + + void menu_cancel() + { + + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + + var msg = new System.Text.StringBuilder(); + + + if (PUB.mot.HasHomeSetOff) + { + msg.AppendLine("! Device initialization is not complete\n! Execute device initialization"); + } + + if (PUB.sm.isRunning == true) + { + msg.AppendLine("! " + "AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + } + + ////if (PUB.sm.Step == eSMStep.PAUSE) + ////{ + //// msg.AppendLine("! Press RESET and try again"); + ////} + + if (DIO.IsEmergencyOn() == true) + { + msg.AppendLine("! Release emergency stop"); + } + + if (DIO.isSaftyDoorF() == false) + { + msg.AppendLine("! Front door is open"); + } + + if (DIO.isSaftyDoorR() == false) + { + msg.AppendLine("! Rear door is open"); + } + + if (msg.Length > 0) + { + UTIL.MsgE(msg.ToString()); + PUB.log.AddE(msg.ToString()); + return; + } + + msg.Clear(); + msg.AppendLine("Q. Cancel work and execute motion position initialization?"); + var dlgresult = UTIL.MsgQ(msg.ToString()); + if (dlgresult != System.Windows.Forms.DialogResult.Yes) return; + + PUB.log.Add("User Click : tray out & clear position", false); + Run_MotionPositionReset(); + } + + void Run_MotionPositionReset() + { + PUB.flag.set(eVarBool.FG_USERSTEP, false, "Run_MotionPositionReset"); + PUB.log.AddAT("Starting discharge and home movement"); + PUB.AddSystemLog(Application.ProductVersion, "MAIN", "Cancel Work"); + PUB.sm.SetNewStep(eSMStep.HOME_QUICK);//Change to execution mode + } + + private void arLabel14_Click(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + var msg = new System.Text.StringBuilder(); + + if (PUB.sm.isRunning == true) + msg.AppendLine("*" + "AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + + if (DIO.GetIOOutput(eDOName.SOL_AIR) == false) + msg.AppendLine("* Press the AIR button on the front to supply AIR"); + + //if (DIO.GetIOOutput(eDOName.SOL_AIR) && DIO.GetIOInput(eDIName.AIR_DETECT) == false) + // msg.AppendLine("* AIR not detected, please check AIR supply status"); + if (DIO.GetIOInput(eDIName.L_PICK_BW) == false) + { + msg.AppendLine("* Left printer picker is not in reverse position."); + } + if (DIO.GetIOInput(eDIName.R_PICK_BW) == false) + { + msg.AppendLine("* Right printer picker is not in reverse position."); + } + + if (AR.SETTING.Data.Enable_PickerCylinder) + { + if (DIO.GetIOInput(eDIName.L_CYLUP) == false) + { + msg.AppendLine("* Left printer picker cylinder is not in UP position."); + } + if (DIO.GetIOInput(eDIName.R_CYLUP) == false) + { + msg.AppendLine("* Right printer picker cylinder is not in UP position."); + } + } + + + if (DIO.IsEmergencyOn() == true) + msg.AppendLine("* Cannot move when in emergency stop state."); + + if (PUB.sm.Step == eSMStep.RUN) + msg.AppendLine("* Cannot initialize while in operation"); + + if (msg.Length > 0) + { + UTIL.MsgE(msg.ToString()); + return; + } + + //CMenuButton btYes = new CMenuButton + //{ + // Text = "Initialize", + // Tag = "yes", + // BackColor = Color.Tomato, + // OverColor = Color.Gold + //}; + + //CMenuButton btNo = new CMenuButton("Cancel", "NO"); + //var menu = new CMenu("Do you want to execute motion home and status initialization?", "Device Initialization", "init", eMsgIcon.Alert, btYes, btNo); + //loader1.AddMenu(menu); + + msg.Clear(); + msg.AppendLine("Execute motion home and status initialization?"); + var dlgresult = UTIL.MsgQ(msg.ToString()); + if (dlgresult != System.Windows.Forms.DialogResult.Yes) return; + + PUB.log.Add("User Click : initialize", false); + Func_sw_initialize(); + } + + private void arLabel11_Click(object sender, EventArgs e) + { + if (PUB.sm.isRunning == true) + { + UTIL.MsgE("AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + return; + } + + var popmsg = PUB.popup.Visible; + using (fSetting f = new fSetting()) + if (f.ShowDialog() == DialogResult.OK) + { + DIO.InitDIOSensitive(); + + //Pin definition file update + DIO.Pin.SetInputData(PUB.mdm.dataSet.InputDescription); + DIO.Pin.SetOutputData(PUB.mdm.dataSet.OutputDescription); + + if (AR.SETTING.Data.Disable_RoomLight == true) + DIO.SetRoomLight(false); + if (AR.SETTING.Data.Disable_TowerLamp == true) + { + DIO.SetTwGrn(false); + DIO.SetTwRed(false); + DIO.SetTwYel(false); + } + if (AR.SETTING.Data.Serial_Remocon.isEmpty() == false) + { + var portinfo = AR.SETTING.Data.Serial_Remocon.Split(':'); + var portName = portinfo[0]; + int baud = 9600; + if (portinfo.Length > 1) baud = int.Parse(portinfo[1]); + if (PUB.remocon.PortName != portName) + { + PUB.remocon.Close(); + PUB.remocon.PortName = portName; + PUB.remocon.BaudRate = baud; + if (PUB.remocon.Open() == false) + PUB.log.AddE("Remote Control Port Open Error : " + PUB.remocon.errorMessage); + } + } + + groupBox3.Text = $"Model Info ({PUB.MCCode}/{AR.SETTING.Data.McName})"; + + //Printer setting - 201223 + //PUB.PrinterL.printerName = COMM.SETTING.Data.PrintLeftName; + //PUB.PrinterR.printerName = COMM.SETTING.Data.PrintRightName; + UpdateControl(); + } + if (popmsg) PUB.popup.Visible = true; + } + + private void arLabel12_Click(object sender, EventArgs e) + { + + string file = System.IO.Path.Combine(UTIL.CurrentPath, "Manual", "Manual.pdf");// "manual.pdf"); + if (System.IO.File.Exists(file) == false) + { + UTIL.MsgE("User manual file does not exist\n" + + "Contact : T8567 (Equipment Technology Team 1)\n" + + "File name : " + file); + return; + } + UTIL.RunExplorer(file); + } + + private void arLabel16_Click(object sender, EventArgs e) + { + + } + + private void viewMapDataToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void openSaveFolderToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void CaptureToolStripMenuItem1_Click(object sender, EventArgs e) + { + + } + + private void saveToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void btDebug_Click(object sender, EventArgs e) + { + arCtl.arLabel ctl = sender as arCtl.arLabel; + this.cmDebug.Show(this, new Point(100, 100)); + } + + private void sMResetToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.sm.isRunning == true) + { + UTIL.MsgE("AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + return; + } + + if (PUB.sm.Step != eSMStep.IDLE) + { + var dlg = UTIL.MsgQ( + "Initialize program status?\n\n" + + "All ongoing processes will be cancelled.\n" + + "[System initialization] may be required if necessary"); + if (dlg != System.Windows.Forms.DialogResult.Yes) return; + } + else PUB.log.AddAT("Cannot initialize while in standby state"); + + PUB.log.Add("User Click : initialize", false); + PUB.sm.SetNewStep(eSMStep.IDLE, true); + PUB.flag.set(eVarBool.FG_USERSTEP, false, "sMResetToolStripMenuItem_Click"); + } + + private void dIOMonitorToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var f = new fManualPrint0()) + { + f.Text = "Barcode Process Test"; + if (f.ShowDialog() == DialogResult.OK) + { + var reelinfo = f.reelinfo; + var vdata = new Class.JobData(9); + PUB.Result.ItemDataC.CopyTo(ref vdata); + vdata.Clear("TEST"); + vdata.VisionData.BarcodeTouched = true; + if (reelinfo.SID.isEmpty() == false) + { + vdata.VisionData.SID = reelinfo.SID; + vdata.VisionData.SID_Trust = true; + } + if (reelinfo.venderLot.isEmpty() == false) + { + vdata.VisionData.VLOT = reelinfo.venderLot; + vdata.VisionData.VLOT_Trust = true; + } + if (reelinfo.id.isEmpty() == false) + { + vdata.VisionData.SetRID(reelinfo.id, "TEST"); + vdata.VisionData.RID_Trust = true; + } + if (reelinfo.mfg.isEmpty() == false) + { + vdata.VisionData.MFGDATE = reelinfo.mfg; + vdata.VisionData.MFGDATE_Trust = true; + } + if (reelinfo.qty > 0) + { + vdata.VisionData.QTY = reelinfo.qty.ToString(); + vdata.VisionData.QTY_Trust = true; + } + //vdata.VisionData.VLOT = reelinfo.venderLot; + + BCDProcess_ALL(vdata, "TEST", true); + var msg = vdata.VisionData.ToString(); + PUB.log.Add(msg); + UTIL.MsgE(msg); + } + } + } + + private void refreshControklToolStripMenuItem_Click(object sender, EventArgs e) + { + this.hmi1.RemakeRect(); + UpdateControl(); + PUB.Result.DTSidConvertEmptyList.Clear(); + PUB.Result.DTSidConvertMultiList.Clear(); + PUB.Result.DTSidConvert.Clear(); + PUB.Result.DTSidConvert.AcceptChanges(); + if (PUB.Result.ItemDataC.VisionData != null) + PUB.Result.ItemDataC.VisionData.barcodelist.Clear(); + } + + + void loader1_IConClick(object sender, UIControl.HMI.IconClickEventargs e) + { + //throw new NotImplementedException(); + PUB.log.Add("Loader Icon Click : " + e.item.Tag.ToString()); + if (e.item.Tag == "air") + { + var buttonOk = new CMenuButton("ON", "1"); + var buttonNo = new CMenuButton("OFF", "0"); + var newmenu = new CMenu("Change AIR supply status", "AIR CONTROL", "air", eMsgIcon.Error, buttonOk, buttonNo) + { + BorderColor = Color.Gray, + }; + hmi1.AddMenu(newmenu); + } + + else if (e.item.Tag == "emg") + { + btMReset.PerformClick(); + } + + else if (e.item.Tag == "debug") + { + PUB.flag.set(eVarBool.FG_DEBUG, !PUB.flag.get(eVarBool.FG_DEBUG), ""); + ShowDebugMenu(); + } + } + + private void Loader1_ButtonClick(object sender, UIControl.HMI.MenuItemClickEventargs e) + { + //Button was pressed, so remove the corresponding menu + PUB.log.Add("Menu Button Click : " + e.item.Tag); + if (e.item.menutag == null) + { + //This is a regular button, not a menu + if (e.item.Tag == "INPUTL") + { + + } + + return; + } + else + { + switch (e.item.menutag) + { + case "init": + if (e.item.Tag == "yes") + { + PUB.log.Add("User Click : initialize", false); + Func_sw_initialize(); + } + break; + case "sample": + if (e.item.Tag == "1") + PUB.log.Add("ok button clicked"); + else + PUB.log.Add("no button clicked"); + break; + + case "air": + if (e.item.Tag == "1") + { + DIO.SetAIR(true); + PUB.log.Add("User air on"); + } + else + { + DIO.SetAIR(false); + PUB.log.Add("User air off"); + } + break; + } + + } + + //Remove the last menu + hmi1.DelMenu(); + } + + private void sampleToolStripMenuItem_Click(object sender, EventArgs e) + { + var buttonOk = new CMenuButton("OK", "1"); + var buttonNo = new CMenuButton("CANCLE", "0"); + var newmenu = new CMenu("body str", "title", "sample", eMsgIcon.Error, buttonOk, buttonNo) + { + BorderColor = Color.Gray + }; + hmi1.AddMenu(newmenu); + } + + private void debugModeToolStripMenuItem_Click(object sender, EventArgs e) + { + this.hmi1.arDebugMode = !this.hmi1.arDebugMode; + this.hmi1.Invalidate(); + + } + + + + private void countToolStripMenuItem_Click(object sender, EventArgs e) + { + var f = new Dialog.fDebug(); + f.TopMost = true; + f.Show(); + } + + #region "System Parameter" + + #region "Motion Parameter" + private void axis0ToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.mot.ShowParameter(0); + } + + private void axis1ToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.mot.ShowParameter(1); + } + + private void axis2ToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.mot.ShowParameter(2); + } + + private void axis3ToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void axis4ToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + #endregion + + private void clearToolStripMenuItem1_Click(object sender, EventArgs e) + { + hmi1.ClearMenu(); + } + + #endregion + + private void processListToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.log.Add("process list"); + foreach (var prc in System.Diagnostics.Process.GetProcesses()) + { + if (prc.ProcessName.StartsWith("svchost")) continue; + if (prc.ProcessName.Contains(".host")) continue; + PUB.log.Add(prc.ProcessName); + } + } + + + + Control GetContextOwnerControl(object sender) + { + var menuitem = sender as ToolStripMenuItem; + if (menuitem != null) + { + var menu = menuitem.Owner as ContextMenuStrip; + if (menu != null) + { + return menu.SourceControl; + } + } + return null; + } + + private void workSelectionScreenToolStripMenuItem_Click(object sender, EventArgs e) + { + var f = new Dialog.fDataBufferSIDRef(); + f.TopMost = true; + f.Show(); + } + + private void button3_Click_2(object sender, EventArgs e) + { + + } + + private void pictureBox1_Click(object sender, EventArgs e) + { + + if (PUB.flag.get(eVarBool.FG_DEBUG) == true) + { + PUB.flag.set(eVarBool.FG_DEBUG, false, "Under development"); + } + else + { + PUB.flag.set(eVarBool.FG_DEBUG, true, "Under development"); + } + + ShowDebugMenu(); + + } + + private void cmCam_Opening(object sender, CancelEventArgs e) + { + if (PUB.sm.Step < eSMStep.IDLE) + cmCam.Enabled = false; + else + cmCam.Enabled = true; + } + + + + private void toolStripMenuItem2_Click(object sender, EventArgs e) + { + + var selectContorol = GetContextOwnerControl(sender); + if (selectContorol == null) return; + var selectedtag = selectContorol.Tag.ToString(); + var vidx = int.Parse(selectedtag); + + using (SaveFileDialog sd = new SaveFileDialog()) + { + sd.Filter = "bitmap|*.bmp"; + sd.FileName = $"vision{vidx}.bmp"; + + + if (sd.ShowDialog() == DialogResult.OK) + { + if (vidx == 1) + { + SaveImage(sd.FileName); + } + } + } + + } + + //private void sbVisTitle1_Click(object sender, EventArgs e) + //{ + // //Need to download from Keyence and process + // var tempfile = System.IO.Path.Combine(Util.CurrentPath, "Temp", "Keyence", DateTime.Now.ToString("HHmmss_fff") + ".bmp"); + // var fi = new System.IO.FileInfo(tempfile); + // if (fi.Directory.Exists == false) fi.Directory.Create(); + // this.iv1Keyence.DownloadRecentImage(fi.FullName); + + //} + + //private void livetaskToolStripMenuItem_Click(object sender, EventArgs e) + //{ + // //SetVisionTask(); + // //PUB.flag.set(eVarBool.LIVIEWVIEW0, true, ""); + //} + + private void zoomFitToolStripMenuItem_Click(object sender, EventArgs e) + { + var selectContorol = GetContextOwnerControl(sender); + if (selectContorol == null) return; + var selectedtag = selectContorol.Tag.ToString(); + var vidx = int.Parse(selectedtag); + } + + private void keyenceTrigOnToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.keyenceF.Trigger(true); //Keyence_Trigger(true); + PUB.keyenceR.Trigger(true); //Keyence_Trigger(true); + + } + + private void keyenceTrigOffToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.keyenceF.Trigger(false); //Keyence_Trigger(false); + PUB.keyenceR.Trigger(false); //Keyence_Trigger(false); + } + + private void keyenceSaveImageToolStripMenuItem_Click(object sender, EventArgs e) + { + var fn = System.IO.Path.Combine(UTIL.CurrentPath, "Images", "keyence.bmp"); + SaveImage(fn); + } + + void menu_barcodeconfirm() + { + //Save image + if (PUB.sm.Step != eSMStep.RUN && PUB.sm.Step != eSMStep.PAUSE && PUB.sm.Step != eSMStep.WAITSTART) + { + var tempfilF = System.IO.Path.Combine(UTIL.CurrentPath, "Temp", "keyenceF.bmp"); + var tempfilR = System.IO.Path.Combine(UTIL.CurrentPath, "Temp", "keyenceR.bmp"); + + var fiF = new System.IO.FileInfo(tempfilF); + var fiR = new System.IO.FileInfo(tempfilR); + + if (fiF.Directory.Exists == false) fiF.Directory.Create(); + if (fiR.Directory.Exists == false) fiR.Directory.Create(); + + var nimagF = PUB.keyenceF.SaveImage(fiF.FullName); + var nimagR = false; + + if (PUB.keyenceR != null) + nimagR = PUB.keyenceR.SaveImage(fiR.FullName); + ///this.pictureBox1.Image = nimag; + + + } + using (var f = new Dialog.fLoaderInfo(PUB.Result.ItemDataC.VisionData.bcdMessage)) + f.ShowDialog(); + } + + private void lbSize1_Click(object sender, EventArgs e) + { + + } + + + private void liveViewProcessOnOffToolStripMenuItem_Click(object sender, EventArgs e) + { + liveviewprocesson = !liveviewprocesson; + } + + private void lbLock2_Click(object sender, EventArgs e) + { + var ctl = sender as arCtl.arLabel; + var index = int.Parse(ctl.Tag.ToString()); + // bool cur = false; + + if (PUB.sm.isRunning) + { + UTIL.MsgE("Cannot perform cart exchange during operation\nPress 'STOP' button then try again"); + return; + } + + bool curMag = DIO.GetIOOutput(eDOName.PORTL_MAGNET); + bool curLim = DIO.GetIOInput(eDIName.PORTL_LIM_DN); + if (index == 1) + { + curMag = DIO.GetIOOutput(eDOName.PORTC_MAGNET); + curLim = DIO.GetIOInput(eDIName.PORTC_LIM_DN); + } + else if (index == 2) + { + curMag = DIO.GetIOOutput(eDOName.PORTR_MAGNET); + curLim = DIO.GetIOInput(eDIName.PORTR_LIM_DN); + } + + // cur = Util_DO.GetIOOutput(eDOName.CART_MAG0); + if (curMag == false) + { + PUB.log.Add($"MAGNET{index} ON by USER"); + DIO.SetPortMagnet(index, true); //Allow immediate turn on + } + else + { + if (curLim == false) + { + UTIL.MsgE("Lower all ports then try again"); + DIO.SetPortMotor(index, eMotDir.CCW, true, "Cart Exchange"); //Automatically lower the port + return; + } + DIO.SetPortMagnet(index, false); + PUB.log.Add($"MAGNET{index} OFF by USER"); + } + } + + private void arDatagridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + // + } + + private void arLabel6_Click(object sender, EventArgs e) + { + //Lower port + if (PUB.sm.isRunning) + { + UTIL.MsgE("Cannot use during operation"); + return; + } + var index = int.Parse((sender as arCtl.arLabel).Tag.ToString()); + + + if (VAR.BOOL[eVarBool.Use_Conveyor] && (index == 0 || index == 2)) + { + if (index == 0) DIO.SetOutput(eDOName.LEFT_CONV, true); + if (index == 2) DIO.SetOutput(eDOName.RIGHT_CONV, true); + } + else + { + if (DIO.GetPortMotorRun(index) == true) DIO.SetPortMotor(index, eMotDir.CW, false, "UI"); + else + { + if (UTIL.MsgQ("Lower the port?") == DialogResult.Yes) + DIO.SetPortMotor(index, eMotDir.CCW, true, "UI Port Lower"); + } + } + + + } + + private void arLabel11_Click_1(object sender, EventArgs e) + { + //Raise port + if (PUB.sm.isRunning) + { + UTIL.MsgE("Cannot use during operation"); + return; + } + var index = int.Parse((sender as arCtl.arLabel).Tag.ToString()); + + if (VAR.BOOL[eVarBool.Use_Conveyor] && (index == 0 || index == 2)) + { + if (index == 0) DIO.SetOutput(eDOName.LEFT_CONV, false); + if (index == 2) DIO.SetOutput(eDOName.RIGHT_CONV, false); + } + else + { + if (DIO.GetPortMotorRun(index) == true) DIO.SetPortMotor(index, eMotDir.CCW, false, "UI"); + else + { + if (UTIL.MsgQ("Raise the port?") == DialogResult.Yes) + DIO.SetPortMotor(index, eMotDir.CW, true, "UI"); + } + } + + + } + + private void jObEndToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + ShowSummary(); + } + + private void button3_Click_4(object sender, EventArgs e) + { + + } + + private void jOBStartToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var f = new Dialog.fSelectJob()) + f.ShowDialog(); + } + + + + private void button1_Click_1(object sender, EventArgs e) + { + + } + + + private void visionProcess0ToolStripMenuItem_Click(object sender, EventArgs e) + { + WS_Send(eWorkPort.Left, PUB.wsL, Guid.NewGuid().ToString(), "STATUS", ""); + } + + private void visionProcess1ToolStripMenuItem_Click(object sender, EventArgs e) + { + WS_Send(eWorkPort.Right, PUB.wsR, Guid.NewGuid().ToString(), "STATUS", ""); + } + + private void customerRuleToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void toolStripButton13_Click(object sender, EventArgs e) + { + menu_cancel(); + } + + private void toolStripButton15_Click(object sender, EventArgs e) + { + menu_barcodeconfirm(); + } + + private void btLogViewer_Click(object sender, EventArgs e) + { + var exename = UTIL.MakePath("LogView.exe"); + if (System.IO.File.Exists(exename) == false) + { + UTIL.MsgE("Log viewer file not found\nPlease contact support (T8567)"); + return; + } + + UTIL.RunProcess(exename); + } + + private void toolStripButton16_Click(object sender, EventArgs e) + { + var file = UTIL.ScreenCapture(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height, new Point(0, 0), false); + using (var f = new AR.Dialog.fMailReport("", file, "", AR.SETTING.Data.Bugreport_mail)) + f.ShowDialog(); + } + + async private void refreshToolStripMenuItem_Click_1(object sender, EventArgs e) + { + await RefreshList(); + } + + private void systemParameterMotorToolStripMenuItem_Click(object sender, EventArgs e) + { + if (frmSysMotParam == null || frmSysMotParam.IsDisposed || frmSysMotParam.Disposing) + { + if (frmSysMotParam != null) frmSysMotParam.FormClosed -= frmSysParam_FormClosed; + frmSysMotParam = new Dialog.fSystem_MotParameter(); + frmSysMotParam.FormClosed += frmSysParam_FormClosed; + } + frmSysMotParam.Show(); + frmSysMotParam.Activate(); + if (frmSysMotParam.WindowState == FormWindowState.Minimized) + frmSysMotParam.WindowState = FormWindowState.Normal; + } + + private void speedLimitToolStripMenuItem_Click(object sender, EventArgs e) + { + AR.SETTING.Data.Enable_SpeedLimit = !AR.SETTING.Data.Enable_SpeedLimit; + } + + private void triggerOnToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.keyenceF.Trigger(true); + PUB.keyenceR.Trigger(true); + } + + private void triggerOffToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.keyenceF.Trigger(false); + PUB.keyenceR.Trigger(false); + } + + + private void quickExecutionToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + if (PUB.sm.isRunning == true) + { + UTIL.MsgE("AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + return; + } + + var f = new Dialog.Quick_Control(); + f.StartPosition = FormStartPosition.CenterScreen; + f.Show(); + } + + async private void managementToolStripMenuItem_Click_1(object sender, EventArgs e) + { + if (PUB.sm.isRunning) + { + UTIL.MsgE("Cannot use during operation"); + return; + } + + if (PUB.flag.get(eVarBool.FG_MOVE_PICKER)) + { + UTIL.MsgE("The window is already open"); + } + else + { + using (var f = new Dialog.fPickerMove()) + f.ShowDialog(); + + //If home position is not set and sensor is in center, ask for initialization + if (PUB.mot.HasHomeSetOff == true && DIO.GetIOInput(eDIName.PICKER_SAFE)) + { + btMReset.PerformClick(); + } + + await RefreshList(); + } + } + + private void regExTestToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var f = new Dialog.RegExTest()) + f.ShowDialog(); + } + + private void toolStripMenuItem11_Click(object sender, EventArgs e) + { + UTIL.RunExplorer(UTIL.CurrentPath); + } + + private void toolStripMenuItem13_Click(object sender, EventArgs e) + { + PUB.LogFlush(); + var fi = new System.IO.FileInfo(PUB.log.FileName); + UTIL.RunExplorer(fi.Directory.FullName); + } + + private void toolStripMenuItem14_Click(object sender, EventArgs e) + { + string savefile = System.IO.Path.Combine(UTIL.CurrentPath, "ScreenShot", DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"); + var grpath = new System.IO.FileInfo(savefile); + UTIL.RunExplorer(grpath.Directory.FullName); + } + + private void toolStripMenuItem15_Click(object sender, EventArgs e) + { + var basepath = AR.SETTING.Data.GetDataPath(); + var path = System.IO.Path.Combine( + basepath, "History", + DateTime.Now.Year.ToString("0000"), + DateTime.Now.Month.ToString("00"), + DateTime.Now.Day.ToString("00")); + if (System.IO.Directory.Exists(path)) + UTIL.RunExplorer(path); + else + UTIL.RunExplorer(System.IO.Path.Combine(AR.SETTING.Data.GetDataPath(), "History")); + } + + private void bcdRegProcessClearToolStripMenuItem_Click(object sender, EventArgs e) + { + lock (PUB.Result.BCDPatternLock) + { + PUB.Result.BCDPattern.Clear(); + PUB.Result.BCDIgnorePattern.Clear(); + } + + + + if (PUB.Result.ItemDataC.VisionData == null) return; + + + lock (PUB.Result.ItemDataC.VisionData.barcodelist) + { + foreach (var item in PUB.Result.ItemDataC.VisionData.barcodelist) + { + item.Value.RegExConfirm = false; + } + } + } + + private void BarcodeRuleToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var f = new Dialog.RegExRule()) + f.ShowDialog(); + + if (PUB.sm.Step != eSMStep.IDLE) + { + lock (PUB.Result.BCDPatternLock) + { + var modelName = PUB.Result.vModel.Title; + PUB.Result.BCDPattern = PUB.GetPatterns(modelName, false); + PUB.Result.BCDIgnorePattern = PUB.GetPatterns(modelName, true); + PUB.log.Add($"Model pattern loading: {PUB.Result.BCDPattern.Count}/{PUB.Result.BCDIgnorePattern.Count}"); + } + + } + } + + + async private void ModelSelectionToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.sm.isRunning == true) + { + UTIL.MsgE("AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + return; + } + + using (var f = new Model_Operation()) + if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + if (SETTING.Data.SystemBypass) + { + UTIL.MsgI("BYPASS is enabled in settings\n" + + "Equipment will operate in BYPASS mode regardless of selected model\n" + + "[SYSTEM BYPASS]\n" + + "1. Camera function will be OFF\n" + + "2. Printer function will be OFF"); + } + if (f.Value != "") + { + var ok = PUB.SelectModelV(f.Value); + var motionmode = VAR.BOOL[eVarBool.Use_Conveyor] ? "Conveyor" : "Default"; + var changeMot = PUB.SelectModelM(motionmode); + if (changeMot == false) + { + PUB.log.AddE($"No Motion model (Conveyor)"); + } + UpdateControl(); + } + } + + } + + private void displayVARToolStripMenuItem_Click(object sender, EventArgs e) + { + var f = new Dialog.fVAR(); + f.TopMost = true; + f.Show(); + } + + private void lbMsg_Click(object sender, EventArgs e) + { + //reset function + PUB.Result.ItemDataC.VisionData.Clear("USER UI CLICK", true); + PUB.flag.set(eVarBool.FG_END_VISIONL, false, "USER UI CLICK"); + } + + + + private void toolStripMenuItem17_Click(object sender, EventArgs e) + { + // + var curimageF = PUB.keyenceF.GetImage(); + PUB.keyenceF.UpdateBitmap((Bitmap)curimageF, (Bitmap)this.keyenceviewF.Image); + + var curimageR = PUB.keyenceR.GetImage(); + PUB.keyenceR.UpdateBitmap((Bitmap)curimageR, (Bitmap)this.keyenceviewR.Image); + + } + + private void triggerOnToolStripMenuItem1_Click(object sender, EventArgs e) + { + PUB.keyenceF.Trigger(true); + PUB.keyenceR.Trigger(true); + } + + private void triggerOffToolStripMenuItem1_Click(object sender, EventArgs e) + { + PUB.keyenceF.Trigger(false); + PUB.keyenceR.Trigger(false); + } + + private void connectToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.keyenceF != null) + { + PUB.keyenceF.Connect(); + PUB.flag.set(eVarBool.FG_KEYENCE_OFFF, false, "USER"); + } + if (PUB.keyenceR != null) + { + PUB.keyenceR.Connect(); + PUB.flag.set(eVarBool.FG_KEYENCE_OFFR, false, "USER"); + } + } + + private void disConnectToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.keyenceF != null) + { + PUB.keyenceF.Disconnect(); + PUB.flag.set(eVarBool.FG_KEYENCE_OFFF, true, "USER"); + } + if (PUB.keyenceR != null) + { + PUB.keyenceR.Disconnect(); + PUB.flag.set(eVarBool.FG_KEYENCE_OFFR, true, "USER"); + } + } + + + + private void resetToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.keyenceF.Reset(); + PUB.keyenceR.Reset(); + } + + private void webManagerToolStripMenuItem_Click(object sender, EventArgs e) + { + UTIL.RunExplorer("http://" + AR.SETTING.Data.Keyence_IPF); + UTIL.RunExplorer("http://" + AR.SETTING.Data.Keyence_IPR); + } + + private void toolStripMenuItem23_Click(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + + if (PUB.sm.isRunning == true) + { + UTIL.MsgE("AUTO-RUN MODE\\nCannot be used during automatic execution\\nPlease stop and try again"); + return; + } + + using (var f = new Model_Motion()) + if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + if (f.Value != "") + { + PUB.SelectModelM(f.Value); + } + } + } + + private void motionEmulatorToolStripMenuItem_Click(object sender, EventArgs e) + { + needShowSummary = true; + } + + private void ConnectToolStripMenuItem_Click(object sender, EventArgs e) + { + if (PUB.wsL != null && PUB.wsL.Connected) + { + UTIL.MsgI("Program is currently connected"); + return; + } + + //camera execution + if (AR.SETTING.Data.CameraLFile.isEmpty() == true) + { + UTIL.MsgE("Barcode program filename not specified", true); + return; + } + + var fi = new System.IO.FileInfo(AR.SETTING.Data.CameraLFile); + if (fi.Exists == false) + { + UTIL.MsgE("Vision program file does not exist\n" + fi.FullName); + return; + } + + //var prc = null;// Util.CheckExistProcess("CrevisQRCode"); + //if (prc == null) + { + //Util.MsgI("Barcode program has been launched\nIt will run after a moment"); + UTIL.RunProcess(fi.FullName); + } + //else + //{ + + // SetActiveWindow((int)prc.MainWindowHandle); + // SetForegroundWindow(prc.MainWindowHandle); + // ShowWindow(prc.MainWindowHandle, (int)CmdShow.Normal); + //} + } + + + private void toolStripMenuItem21_Click(object sender, EventArgs e) + { + PUB.flag.set(eVarBool.FG_PRC_VISIONL, true, "USER"); + PUB.flag.set(eVarBool.FG_END_VISIONL, false, "USER"); + WS_Send(eWorkPort.Left, PUB.wsL, PUB.Result.ItemDataL.guid, "TRIG", PUB.Result.ItemDataL.VisionData.PrintQRData); + } + + private void toolStripMenuItem24_Click(object sender, EventArgs e) + { + WS_Send(eWorkPort.Left, PUB.wsL, string.Empty, "OFF", string.Empty); + } + + private void postDataToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var f = new Dialog.Debug.fSendInboutData()) + f.ShowDialog(); + } + + private void manualPrintToolStripMenuItem_Click(object sender, EventArgs e) + { + using (var f = new Dialog.fManualPrint0()) + if (f.ShowDialog() == DialogResult.OK) + { + var rlt = PUB.PrinterR.Print(f.reelinfo, true, false); + PUB.log.Add($"manual print:{PUB.PrinterR.qrData}"); + } + } + + private void arDatagridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + + } + + private void toolStripButton6_ButtonClick(object sender, EventArgs e) + { + if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) + { + UTIL.MsgE("Motion not initialized\nPlease try again later"); + return; + } + //show io panerl + using (var f = new Dialog.fIOMonitor()) + f.ShowDialog(); + } + + + private void apiCheckToolStripMenuItem_Click(object sender, EventArgs e) + { + + PUB.UpdateSIDInfo().Wait(); + + } + + private void barcodeTestToolStripMenuItem_Click(object sender, EventArgs e) + { + var bcd = "21PMULTILAYER CHIP INDUCTORS,P110-50933-01R5,1T5015326894,1J083476968109,16D20230908,14D20250821,Q20000,1PMHQ0402PSA1N5BT000"; + //var d = UTIL.InputBox("barcode input", bcd); + + PUB.Result.ItemDataC.VisionData.barcodelist.Clear(); + PUB.Result.ItemDataC.VisionData.barcodelist.TryAdd(bcd, new Class.KeyenceBarcodeData + { + barcodeSymbol = "2", + Data = bcd, + }); + //BarcodeFix_ReceiveData(null, new arDev.RS232.ReceiveDataEventArgs(System.Text.Encoding.Default.GetBytes(d.Item2))); + } + + private void toolStripMenuItem28_Click(object sender, EventArgs e) + { + PUB.flag.set(eVarBool.FG_PRC_VISIONR, true, "USER"); + PUB.flag.set(eVarBool.FG_END_VISIONR, false, "USER"); + WS_Send(eWorkPort.Right, PUB.wsR, PUB.Result.ItemDataR.guid, "TRIG", PUB.Result.ItemDataR.VisionData.PrintQRData); + } + + private void toolStripMenuItem30_Click(object sender, EventArgs e) + { + WS_Send(eWorkPort.Right, PUB.wsR, string.Empty, "OFF", string.Empty); + } + + private void OpenProgramToolStripMenuItem_Click(object sender, EventArgs e) + { + var fn = AR.SETTING.Data.Sidinfofilename; + var fi = new System.IO.FileInfo(fn); + if (fi.Exists == false) + { + PUB.log.AddE($"No Sid info file:{fn}"); + return; ; + } + + //var file = @"d:\amkor\sidinfo\update.exe " + COMM.SETTING.Data.McName;// System.IO.Path.Combine(Util.CurrentPath, "Module", "SidInfo", "amkor.exe"); + UTIL.RunProcess(fi.FullName); + } + + async private void InboundDataUpdateToolStripMenuItem_Click(object sender, EventArgs e) + { + var rlt = await PUB.UpdateSIDInfo(); + if (rlt.Item1 == false) + { + PUB.log.AddE($"SID Information update failed: " + rlt.Item2); + } + else PUB.log.AddI($"SID Information update successful"); + } + + private void hmi1_ZoneItemClick(object sender, HMI.ZoneItemClickEventargs e) + { + var buttontag = e.item.Tag; + var buttonidx = e.item.index; + + //In conveyor mode, buffer is initialized when clicked. + var cv = VAR.BOOL[eVarBool.Use_Conveyor]; + if (cv && buttontag.StartsWith("PORT")) + { + //Remove buffer quantity when clicked + if (buttonidx == 0) VAR.I32[eVarInt32.LEFT_ITEM_COUNT] = 0; + else if (buttonidx == 2) VAR.I32[eVarInt32.RIGT_ITEM_COUNT] = 0; + PUB.log.AddAT($"User buffer removed {buttontag}:{buttonidx}"); + } + + } + + + private void toolStripButton1_Click(object sender, EventArgs e) + { + using (var f = new Dialog.fManualPrint()) + f.ShowDialog(); + } + + private void multiSIDSelectToolStripMenuItem_Click(object sender, EventArgs e) + { + //select columns + List fields = new List(); + VAR.STR[eVarString.JOB_CUSTOMER_CODE] = "0000000001"; + var vCustCode = VAR.STR[eVarString.JOB_CUSTOMER_CODE]; + var vPartNo = ""; + var vVname = ""; + var vSID = ""; + var vBatch = ""; + var vLot = ""; + var vMFG = ""; + + if (PUB.Result.ItemDataC.VisionData.VLOT.isEmpty()) PUB.Result.ItemDataC.VisionData.VLOT = "4CB24QK1G"; + if (PUB.Result.ItemDataC.VisionData.MFGDATE.isEmpty()) PUB.Result.ItemDataC.VisionData.MFGDATE = "2501"; + if (PUB.Result.ItemDataC.VisionData.PARTNO.isEmpty()) PUB.Result.ItemDataC.VisionData.PARTNO = "parno"; + if (PUB.Result.ItemDataC.VisionData.QTY.isEmpty()) PUB.Result.ItemDataC.VisionData.QTY = "1000"; + + + using (var f = new Dialog.fManualPrint0( + fManualPrint0.eOpt.sid | fManualPrint0.eOpt.vlot | fManualPrint0.eOpt.partno | fManualPrint0.eOpt.vname)) + { + f.Text = "Input Data"; + if (f.ShowDialog() != DialogResult.OK) return; + vPartNo = f.reelinfo.PartNo; + vVname = f.reelinfo.venderName; + vSID = f.reelinfo.SID; + vLot = f.reelinfo.venderLot; + vMFG = f.reelinfo.mfg; + } + + if (VAR.BOOL[eVarBool.Opt_SID_Apply_CustCode]) fields.Add("CUST_CODE"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_PartNo]) fields.Add("PART_NO"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_VenderName]) fields.Add("VENDOR_NM"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_SID]) fields.Add("SID"); + if (VAR.BOOL[eVarBool.Opt_SID_Apply_batch]) fields.Add("BATCH_NO"); //220921 + + //where coluns + var Apply = true; + List wheres = new List(); + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_CustCode]) + { + if (vCustCode.isEmpty() == false) wheres.Add($"CUST_CODE='{vCustCode}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_PartNo]) + { + if (vPartNo.isEmpty() == false) wheres.Add($"PART_NO='{vPartNo}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_SID]) + { + if (vSID.isEmpty() == false) wheres.Add($"SID='{vSID}'"); + else Apply = false; + } + if (Apply && VAR.BOOL[eVarBool.Opt_SID_Where_VLOT]) //221013 + { + if (vLot.isEmpty() == false) wheres.Add($"VENDOR_LOT = '{vLot}'"); + else Apply = false; + } + + if (Apply == false) + { + UTIL.MsgE("Cannot proceed as condition data is not met"); + return; + } + if (fields.Any() == false) + { + UTIL.MsgE("Update column does not exist"); + return; + } + if (wheres.Any() == false) + { + UTIL.MsgE("Condition column does not exist"); + return; + } + + //if query data . no error + var mcname = VAR.BOOL[eVarBool.Use_Conveyor] ? PUB.MCCode : SETTING.Data.McName; + + var TableName = "VW_GET_MAX_QTY_VENDOR_LOT"; + var whereState = " where " + string.Join(" and ", wheres); + var selectFields = string.Join(",", fields); + + var SQL = $"select top 1 {selectFields} from {TableName} WITH(NOLOCK) {whereState}"; + var SQLC = $"select count(*) from {TableName} WITH(NOLOCK) {whereState}"; + + //If multiple information exists, it should be handled with selection screen + + VAR.STR[eVarString.MULTISID_QUERY] = $"select * from {TableName} WITH(NOLOCK) {whereState}"; + VAR.STR[eVarString.MULTISID_FIELDS] = selectFields; + + PUB.Result.ItemDataC.VisionData.CUSTCODE = VAR.STR[eVarString.JOB_CUSTOMER_CODE]; + using (var f = new fSelectSIDInformation()) + if (f.ShowDialog() == DialogResult.OK) + { + + } + } + + private void toolStripMenuItem27_Click(object sender, EventArgs e) + { + var bt = sender as ToolStripMenuItem; + var txt = bt.Text; + if (int.TryParse(txt, out int memno) == false) + { + UTIL.MsgE($"Keyence MemoryNo Error : {txt}"); + return; + } + PUB.log.Add($"Keyence Send BLOAD({memno})"); + if (PUB.keyenceF != null) PUB.keyenceF.BLoad(memno); + if (PUB.keyenceR != null) PUB.keyenceR.BLoad(memno); + } + + private void btAutoReelOut_Click(object sender, EventArgs e) + { + PUB.Result.AutoReelOut = !PUB.Result.AutoReelOut; + } + + private void tbBarcodeR_Click(object sender, EventArgs e) + { + var lb = sender as arCtl.arLabel; + if (lb == null) return; + var txt = lb.Text.Trim(); + if(txt.isEmpty()==false) + { + Clipboard.SetText(txt); + PUB.log.AddI($"Clipboard copy : {txt}"); + } + } + } +} \ No newline at end of file diff --git a/Handler/Project/fMain.resx b/Handler/Project/fMain.resx new file mode 100644 index 0000000..ccec18b --- /dev/null +++ b/Handler/Project/fMain.resx @@ -0,0 +1,1828 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 124, 17 + + + Stop equipment operation. +Same as the "STOP" button at the bottom of the front panel. +If pressed while motion is moving, motion will also stop. +(When motion stops, it cannot be restarted. Please return to origin and initialize before starting work again) + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 143, 56 + + + 634, 17 + + + 534, 17 + + + 441, 17 + + + 327, 17 + + + 221, 17 + + + 17, 56 + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQWSURBVFhH7dZvTBNnHAdw3kxfLVmyoV75o0UEghpfmSUG + FRNFlLa0dMBINn2hsoxMjS8GoZIc0IKKW5BtRdnMTBZBpYdSA1cRIwa12QuTTVRiJ0URFBORK63Bv+Hn + 8zTPYe96rUc55pt+k2/o0evz+6T3rzHRRBONQtF12L7UsLYjGpbp07LMuPYc80LLnnZrOplWrcNWVHyj + 6ROyq2TSaZhHXiob3cV2VQ7LtCMUhK/NpXMwG8nHghJf9/g6ddCdQTaVSc6FtlVo+AgG5DraoKCrHb6+ + aPf/xdtCIAPpLPNWw7aWkI9PZ4nVV5h4+AksMN0bJv+afQyONkprPz2MBxd222FHDws7exzTxdsYK0Zq + aXoKHfZCskxM6vGnn6p/8YxgIFXaB/HVgzR5a3bRdNrsPC4QJm6hBHIze4rTd5/9HK+zxOr9Sd3oAx5I + lfe/XlzPfeYfEmnwBYEH4cMo/ubE3XHZIXm40QV1KPGoN52iH70WAFHjKu91k1GRRdvJNOAhBejbkUKJ + m4/OSTEQdUTdOHEZ48RAquwWLDIPriPjZh5yK/ng4eWL9xPhYG2r0w+TBKKqTK5RMm7mwecQHoKvVimQ + uHi/QFxORzuk/D4WFogbZxmqIiNnliyWmcSDZJ+DrPAcXH3ytgAXCkiZIrxg8BOCH4ZvJTxmd3eHAIcr + vtVk2S9A0tEJeUBUFT1whYyVH//jiwzMRa2yNcO1Y7+Bt9YC93+ug1MnT8DervOSt5gVfw4F4cIBqbI+ + SKgdyiKj5QU/W3eda4GW443w6NABeF5jDqoHYXt/rQdL8wnQd9r8uIwzwgsjsCGBqHHl/z0lo8NnqqFh + vs9iyZ+oNV/ySaBC9WHdAWj+4xhsaByUxOGGA+LGmwdrCUM63PZv9F7TjzekAHL7gK6Byj1NEQGp7Xfe + LKQHFhBOcDhjbiVn1ANnzOv3lBT3+mj6uRRCqv+Um6DF8B1cWbEKbGu2RgZEjaPd1wgnOO+BpHl6L/dt + Ue9oxf4RKdRodRV0/fA9sJnrwJmWNt3ZAKnSW+hQ388mJGGCgAF9ZjS6+vftG6bRL5V/TWVgLyqA3pUr + BTBlgH3wRYVrjJCECQfkO5C53imFCuxsgbiJVQ9KCet95ADdmRlzClRV3PUmVLvNhCSMUkB6zZapmQLD + wvgoBbyavtyltnob1PXciw8BVftlwPgoBXSmpNzG6yU1TSYGQgOBqtKbE7JhfJQG8llqnUzAUPzLOiIY + n7kC8kmueRxLXkYWj8GwiTNqh6VgfGUAX15PS6shSyofyM+f58nTF4eChgL2xMa+cqam/nV12bIkstTc + JhRUDPzfYeJg6PhXum1jRp07EPjRYeJMZWfPHzfklgysz7AjmPXv5OR48lY00UTzcRMT8w7v8y50hSqQ + nAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAI0SURBVFhH7ZjNTttAFIXzGoU+BT8WQpQIG1RF/AlVlA2q + 8l4IEFtQaXkCWJEAQoJ1S1i0qwahQjJZAMmQO9yJbOc4146wVz7St4h9z5yjcSZKUsiVK9eQUkXn46M7 + sdecce6anqNTot7wnF3lTo1ybDxRuf/e+F+wYCpQVqKSZufAQmlCO8nxslJ+rBjX+cfxsuACGcDxspA5 + CzheFjL7UctzurW5Bu9BSjP4egiOl4XMFirXPq3ozk1Nt8rrcMaPma9U9NPOFrzvh+NlITOhloqmnK7f + Gzq/bnTr2xc4S9hydl4qyfGykNmwMKWfv+/3Ak3JiJ1UK65un1UDs/R60OPmeFnI3CNGyfDOEe2Lc61W + veBaITheFjIHGFBy2HIEx8tC5j5Qydqtbl9eBq7FLUdwvCxkhoCSfpKUIzheFjJHQiV/HvaXu75KVI7g + eFnIHIV5z1WDp5Wgx90qf4WeKDheFjIj0IHw83Zw4pfkeFnIHAaf1gv9fPQjcC1JSY6Xhcx+YLlzPhCR + H0FySY6XhcyWgeXs3JAlOV4WMhOxylmo5OFBYLbzu6bVxlL/LMPxspDZUPqkX06O5XKW0E7S+5Ouwdku + HC8LmXtwSbGchUtK5QiOl4XMftTirPm2gu5BqNj84HIEx8tC5izgeFnInAUcL6s7XA+bUyfJz076EQ0X + SZGGO7nN8bLob4gs//p48Mb+ND+PfeD4eFLz0yNmJ7tbjxZ9F7pr084lLpcrVy6rQuEVBSwdzqFOWm0A + AAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAcRSURBVFhH7ZjtU1N3Fsf9C7qd7v4NO/tiX3TH/Te269qp + Y6s7ascS5cEKUSCGEAgE8kCA8CCIorRon7TOTq0drVWEpWAl8pRLIBAIIoEAyoOAor747jm/m3tzE8Bc + X+xMX3hnPsNMBu79cM73nPuDHW+vt9fv7XJWNv69vOr03fLK075SQW0iniQqZEoUnLU+m7MmAavTm0Rl + HIeMxeFps5R7d8Y0tr/snvp2h7cRZy5cUmlkzjMX0ZBAK04rNLeiXsu5VtSd+zLOWYUvBLVNCi2CYqcX + 5rLKuzGN7a9St1dikZcvX6m8UHjx8o3YeB0bLxLwnrkAk90txTS2v6wkyBXZ6oHbsaWAQpKIlucaqhrP + w1SiR9Dllbg9/y+R7ag63Yx8q0uHoL1a4oxsKaFAN1To6RvA2tr6JplV+ux+X3+CxCaeb6hU1J9DntWe + WrCQcsChTRZJ5peOLlTUNoEmHhe+urzp4c0Xv4PdUwdHVQNut3erIs+2wV3XBKMeQQ4qB1YRSX7w0tNV + mtiLcFQ3CDmFyvpmXL12A1cIT905IVdaUYcSdx1s7lo00CZYXnmaILX+jHkucNacgbFQj2CpW+LAJosp + /Obr2yRXVsnUk5RColyxqwZFtEY67z1QhdbWmWcqvNpyTKU6BEtcEgc2QYx+W217nHSzN5WzEYrM6prC + ugrfK9tUklow3+qUOLDaViTjpnZo5RpoMV/76SY6OrvQ+Ws3btxqE4tckbM6qkm2Rog8XVVYU1l5ugY7 + 3SfLZE0tyEHlwGqFlLYwEw+nVTlu9bXrN9Df3w+/349AIIBgMIhQKIRwOIw77Z2wkWRheRUKyioxOh4W + MjKrguUVmRKqfFa+HkEKKgc2npV4TqJzj8W+UiqnlesdkPDd7Qe40taH4dFxTE1NIRKJoL2zW8iZ7R4U + U9unI3NiWJil5Tgch8w8PYIWEqSMxbOyjlt3O3Gm5StRMW1bFbnLt3348+dX8M6BS0Qr/pL1DW7cCyAa + jWJhYUG0+1Sph94UFQIXraer129hcWlFhd/FBmNhasFsmiRuoTYn1Y3NmwaCM6dUTiv3h3+34N19zfhr + eisis3NYXFxER9dvQizf5kZukRMnCh2wUNufLC7HWBI5NRhNqQU5qBxYbU54IWvlmI7OX0XmvqW2Jsu9 + 93ET/ri3Ab/0BLGysoLR0ESCXI6lDCetTjx+siRYeLyIQkclDDk6BTmwSk4YVw0LxuV4lXR23RMDwZnb + Su5Pe2pxt3cM6+vrCE1MJsgdN9txwlKO+YUnKgWU0bRsPYIUVA7s0vKKgPPBg6GV4z3Hq4SnlQeCM5cs + 977hLBbp5zc2NtDd05cgd8xUgjyqaHT+MQ3eAmYJzuihrPzUghkU1GKXl8SUfCyTTAcdSi9RFeNLmIPP + q4SnlQeCM6eV6/aHhdyrV6/o8HpRlTtuLkVxRS2+vvojZqLzmJmdF1k12VwkmJda0GC0SBxYJR/anISn + puHynlXfELzneJXwtPJDOHN3fKNq5Vjufu+gKpdb5MYI5ZG/d3qGieIRE4lSRZ0kaNQjaJI4sCzEzDOx + nMwR0vBY/PVFX3nP8SrhaeWB4Mxp5XKLnWpb7/dLQmYqMiszPYuH0zOC3CIHDmToEEyjSSoo82CO8sHI + OYlnZTa6IFrMVVbeENzujq77CI6Ni4HgzGnbynLHzWWyzKMZTAoimJyKUFeYaTrJlGGfQYfgZ1kmyUyB + lWUoIzEisawwvFQVOX5DKEs4eZUocpn5NgGLMPy6ZMYfPsL4pEyOxU6COakFeZLoRJOQE5EVag1z885/ + 31guPbcYR05YceWHnxGanEIoLDPGTDwUZJtLSDBLj6BR4sA+2iIn3B6+cXXjhU1yhY4qNH3xDRpavkY+ + fZYoV4SC8hoM0UoaJRnB+CSCMUZCYXx+yoaP03QIHsw0ShzYrXKibc9lOjlbqIos56HTdLwqckVK6ajP + chl5NrR8+x9ZhkRYhhkemxAESJrJyi/CR4d0CPIknaDAKiITmpwktydIIj/cbKMHhBMqwkgj4/j+2s8a + EVlmKMiEIDEjY/Azw6P0y1hJMDO1IAeVA6vIiJzEqrJde7aqCrdzs8gYBklmMDCKgUAQA0NB9A+NoF8a + QfpJCwlm6BHMlrJp2yeLvK49alVGYjIkwlWRZUgkSaZPGkaffxi9/gB6BwN4MDiEI8YC7DpoSC34CQWV + A5so8vr2bFeVzSLEwBB8Agk9tLh7+v3097MfaTmnsGufDsG9hzPb9x/JFqFlMvOIXJkMyglnJf2kgiWB + oycLZKgajEFgpmOUmQQUTvGpBZ9pOW7ChwfT8cE+Q+p/Hn10+NhOmqa2PYcyfFooHyq7BekyBxWO+nYf + 0JLm271f5l8adiXxjxj/3H/4zgd7P/1bTOPt9fb6nVw7dvwPMbN6Z8UyA40AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMDSURBVFhH7ZhZT1NRFIX74B/wz/iIw4tCVIrBB36FLyZA + ueVCESiDdGBoKQVbKJEKKFNpsWATUeNA0GiMqGEqREBKqWW0ULZdN7cE5EhuaWIJuStZuT1n77PX15u+ + 9ChkyTqNyitvOJ9fbVWq9Q/MfJ39o7qmOVjAt2znVVkJz1y9bVXY19vN6EO/eHRf8RmFupZG9OLMwRmY + if0Cnc30rxlHlFtlucIb7cMYYOl0/+J5fm9y9gethMK0ubVN0O9IhELhdZryL5DP54s22vtCd2p0W7zB + 9jS/wnoZM4r0rd5iXdtW98jLdcyYWVqluUCY/IE1ml2OPZfXhPXMYpA+fZ+jfs/bzVjudnFtqxczRJyj + wrfDwEhkR4CRKkDjHN/wcL2+qW/z6+ziPoxUox/nwCDiHBWKyWh3Nxp7O2wAqWYCKjnXdSXnDiYLCLFC + EzEYbuT1rmRygxkinkKBDbXTLxSTFSs0EYOBc85RFucKiHgKxU2Vi6rcoVMDCBYwiXj/D7Dc2ERpV7NJ + a7Ay63BKAdOuZdOFSzcoLf02sw6nFBBvDpAVxmZmHU4poBTLgKxQGL+9g2b1wCl9gzKgFLFC45YBpYgV + GrcMKEWs0LhlQClihcIH4Y6DTOkblGIZkBWaiGVAVmgiPhuA0WiUcOXhef6OzE4PlZmdVGhoo/zqZioy + Okhr6SRzh5u8L8bp2/Q87ezsCuegeJA/EKbphVUan5ihLu9rMsX6tY2dpLrfQqWmDqpz9NPj4Tc09nmK + cDUiGdDR+4z4WgdpzE9IYxul0kdfSNszT5UDy0IPnlhjv8Q+KvSp9a1k7xmhiUl/DCpI7tH3pKlrF2ro + OW4GMtBXZnHS0KsPxwOq67uopH2MKvuXhLVUo1/jGKNiU7dgfD7JDGSDAetDgLhZwL/5vw+lyuoO/+Gb + BdyDABLUJ3Gmit8r7f25H4DP2GP1SjHglCpXuoiXvDI5jyGn0rdxLwYG51T4Nm5xQzqxnHpd5H3nsgoG + azPuDqxlce4wgLEnls+yFIo/ehrF0/p8G5AAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJdSURBVFhH7ZbNTxNBGIf756l/h1FMvClGoHgwGNMGBUxJ + jQgNJWGDklgvftRIqqINHwdKevIAB5RyAC9eIEFe9zfO2s3wm5Jp2YmNfZMnm52+7+zT+dpN9eK/ivLU + BYmQo62/+GzXKjzMQt90vyAr8o1W4cEKfKNVeLAC32gVHr1NcgbdL8iKfKNVeLAC32gVHqzAN1qFR2+T + nEH3C7Kidvi+U5Prdx7JlYExK/gdeWatVuFhJrfD4c+vkh6dklzwTkof6lZy82WVh/x4vVbhEU9sl+lg + Ue7mAiplMjK5oPLj9VqFh8sarNWrcmMkf2rq+u8/kcWlGhUyQR7yzT6u3Z44uJoev6S1muEiePNeXgov + P9MHd0qhtCyX06P7WqsZLoL4p6zzOMXXG5IJ1mToaVX688vqmp1fU+0sPw7611rNYCI2Wgm+qNTlwcK6 + DBdWpFhtSHn7SCq7J+o6F94Pz6zIw/B35EU18mNOEd0nKgi5zPNNWfp2LB/35BRozzzbVJKsHiQmOPtq + Ixy5VatcxPud4z8jbJluKngeaxBrDtPKpEyKXxqSDfgoJiaIjYC1xoRM3m4fqnzWj1UwIi7D2m2C2K2V + xgkVMqns/pJbj/lRRQVdotUIYmSYkMmbrXAEpx1G0CVsgtlwDeIoYUImzmvQJWyC2JVuu5i/FhMTBDjf + cM5BwibX1jnoEq0E8YbAw9UIhdOINYmNgyvu0W6+SUwSFYzAdGONYSOod3F4xb1tWuN4EeyEjgXxzYbP + ItZ5p8yUPvHPLZfAByUk8U/PG8j1DY5d1I/6lyOV+g2T8J9wZbIwpwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQWSURBVFhH3VhLa1NBFI4vdKXiThRBfCyKzZ2baMEHdFPT + O5OW+qrgSrdi66MKBTd17WvvHxHrCxc+EUp1IW3Fbmx1W6tp7r2FXs83mZs06cnNTZqI9IOPQObMnC8z + 55w5k8SaR5Du2uZb2Q5XOOc8S10CXVue9YVzBGPG7N/CS/WkPKEe+EJ9HrHVkm+rgKMeIxvPlve8pGOb + 6a2DK1Rf3pYfODFx6Iru967t9JrlmgdXZA/Qjr3gnDZCz1ZP8ylnn1l+dSBhF3Kia55ztBrm2tUvL6XO + GzeNwRfyWlSMrZZYm+LzjnFXH0jcbW7RFnHYuI0HHGu9O/fbVn/oc4I4OX+wM7d8rBb1TsY9biRE3Jij + jHxD9e5yzsruMtOLyLU7u8lm0E3Kt5XzOCImYyUOFdrn3ALldKYWU7IH9kF//wY/7ZzwbTnkCflQ18eU + c9235PEgMbIeNq6tztD4dDh/dqfy/WT3l/I1dXaPwr4qUOcqJ1WSRDwJrL7tS/udzRDiWSd/cnYFZmbo + czDo7NyIOST0FcS5qexpV8hHK+1VEP5wFrWKsBZHzhbSPXtoR8Y5myocQxjoH0W7DV/VBKKYazGVwPXF + TSjRmcIuQJzXrn7wNhFMqq/047YYd1UFguy1qGOHMQ6Jrdc7UN/OaepjpTg0rjQiBdLdbcxKwKXOGYO0 + +Gttg+BnxqPIiQOiBPqW+mTMCkBbFFn3qJQgW6MTonmElqUOZ6uRRztD/RxnGFLXNF1K+PGWkPpJI4+2 + W9cpxoiIog0buvpucuOtYllYoAvmjAwntA0VYWasZfRE9qIWB9QQ2HSGWYrSw42DZQKjjrg1lEPwaxoM + ZpyOmG4bLQ5AQHJGrWPP0cJtxI2FlIeNvBhlppk8JGfRRJCAAXacuKLMACiOnDGIomrMikBY6K6EsY9k + Sl7R8y31jh3XlOPayXJQq3OfN14psFFx+aT6GKTTm1xLnuLGQ1IS3TWuSsAFzRmDywXiwo/KvurMzKDg + L7Vldvii+xtvUyBVFWHclQOtDjchFIgmFA0DWif6fqzSrhqxcxCHVg1PTs4mJDpwLYYDHtXsJBKItMex + erbzEkkFZybQv1faF0kJgZjDsWLn6OiesXbLuCgcZeTwYH8hteflMSenw6soSCTWUSd0DE9UxLFp226g + lBRbfsRcjWMFaf5j2EcCDxc8YLgFKqkzUairqGlmehGm6x6IztYSF9rUXD7Zu9dMjwaegPXWxbm2zAJ9 + ThInGnl24h8x4z4eaOJw5UIto1C3jNv68F//9RECxx03JushYq7uY60GJA5l2CjnqBEiW2MnRD3Ay65a + MY9DZHTNOtcM4CpC04kGIypGC2NyHHcrNaCWmf5vgbYI/STiCV0wqP9Ep35uRcu09pBI/AXnDdZLp3fg + aQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAODSURBVFhH7ZjpThNRHMVJfB2XR9APvoJRH8FQ+KBgZCkk + RkShGwQsYIcWKBSGVaWWgKBSSECWEsGwQ1hkq5QAsYBE/t5zuzCFEUrpNBG5yUkPd+6c8+udaUkn7nL8 + t0O8I17RqoQbOpVwW0nlPLBcR5e/NryhjTff06rMbiaKkdwaVeldf/3JQ6MS7mtvWn5nZmYeZDTPU1qH + W1GhA13oPBXSd1nNbpwgF6ak0JmbaFk78XLjnsOWx2Lnjkr9bt53ueNLr/lxjo/cePMtLJILiIXQDQY/ + zvHxzwJm1ozSU2EgqkLm0Z6IALMMn0ibYCZjeg0Z1WJ0xLKQmc2ypV0RAepTRSpOs1F5dgPteFaIdj3n + EjKQhUxdam1IV9iA6s+eoPRPamjo4wBZXzZR+fMG8q4vyxaHo92NVV8OA3S19/NsaVfYgFl9u0EZUkQa + 6Ro6DI8QUgqHXUQmsqVd5wIMKTkj5I4nFA5zigBCZ4UMwrH10ntYMUAoAFmSXk2bK4shx6TaWl0iU0aN + 7JtRFPBgZ53sQhvpEy1keVYvu5PYuTIGhjV2Uys/R3pcMUAUOSztVJBspbnhcX5fQVJI+MD84rcJKnxc + Sc0Cg/QeQioCKIVbnpjhc7ivKl40UlFKFXU1dnPBYy5wz61Nzx6DjDqgHFxAv7bc1GPvobr8Zq5e5vfZ + nHTNUchzAWoGvUEhZNjp+ivcWSSFHHH6AKVdYQPWLVBQBeki2TRvWLCVVqYihwsIGchCZoG6NqQrIkCj + oY107JP4triF2qwdURGykGk0fAjpighQnNojweaiElN3VIVMZEu7IgKMpS4Bz6uLBShO7lEe+57CK/7O + U9eTbWiD+8IcB1md37kvKuoki32Ce1PVIBc85nAMHmtxDjwykAV/tCNswC/sn0DfzDY/Aa8j7CsMvyGc + g8vcv2LfX63tk9ybtQ5qqndxXy04ueAxh2PwWItz4JGBLHhpRy/rhNcmCDf9OMcHHuRg0fj8Ns1vHlBn + xwR/Xdgi6nJO0+z6Pve9PXM0teTlvt+1RKOzm9x/HfvBBY85HIPHWpwDjwxkwUs7xuZ8sCf+cMdjh/yk + 115H3QAPiKXe1/aT5mHlz1OfdFXoHcm6xDJ+AnZSLiyaws7ZWRc6rYaWR36Mk4dV15KEd8O3PAZCV9hw + gcGfdLH7Qe6hYzSVm2i6euplvRwXd8TF/QE1/NiTtMURWQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj + GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/ + t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm + aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6 + bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj + GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/ + t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm + aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6 + bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj + GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/ + t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm + aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6 + bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAMRJREFUWEdj + GAWjYDCAaVUu/4nFM2pde6Ha6AdAFt/ekEoQX12T/H9Bk+eXmTUufVCt9AHEOhCEB8SRpDgQhM+vSPw/ + t87jDyzaaYWhziPNgUfmRf2f2+Dxf8/s2P8fTzf//3qulSYYw4HE4iVtvv8f7CnHaig1McguqPMgDsSm + aCDxqAMpxaMOpBSPOpBSPOpASvGoAynFow6kFI86kFI86kBK8agDKcWjDqQUjzqQUjzqQEoxhgMHI4Y6 + bxSMggEEDAwAcaf95QqwNkoAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADDSURBVFhHYxgFo2AwgGlVLv+JxjUuvVBt9AMgi29vSCWI + r65J/j+t3vPLjCqXPqhW+gBiHQjCA+JIUhwIwudXJP6vr9P6A492GmGo80hz4JF5Uf/nNnj83zM79v/H + 083/v55rpQnGcCCxeEmb7/8He8qxGkpNDLIL6jyIA7EpGkg86kBK8agDKcWjDqQUjzqQUjzqQErxqAMp + xaMOpBSPOpBSPOpASvGoAynFow6kFI86kFKM4cDBiKHOGwWjYAABAwMAl/T9hXWK+3wAAAAASUVORK5C + YII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMWSURBVFhH7ZZNaBNBFMcjiGgVlexuaktB8KB3BU+KBwUV + 8SDioQeNyc4EoYioB2+mIkIvagVRQTRQo4fSxIMXbZvMpFZBqBf1IOIHUvXgxW9P2vje9O02zexu08bE + IvuDB5N5/5n3z3wlkZCQGjGZPGYx2Y+BbeqePyhzXJZVQJu65w+hwXoJDdZLaLBe5p1Bk8udYOSEE4Zd + eOIYVO2KHGppWPMweakNzIy7q+YXB4c/RJnooGHNBUyuX8rld09jEMvtuz+jdmkjyesnZg+3xhL317R3 + DRkr4mIldQdi8eJei6cndIPpCZOJTpIFgrXaUsLE2uiBunXgvEwddBWDX6HIPYsVt5PEE4uL7unjZBn+ + MKQp7YmVEjvU3FBj2tigC6YbrAgmTpHMg/IC0NxytIYtB7CPkhqgOe1otZizQRWlOEk1Oo4+XAIr+ciy + xeO21FgLdWtAPuE9N0WQQTwDJituwIililvheTi5rFP8qJjgU+uhBzGSaxjJ0XYM+qiB58vaLz9PzSfe + W6zUBcdhs1sXPJC8NmJcbLO2iN/upExco9Qk+54topZOVc7g8rozT0tcfjPZyFpK1Qes5GXXIJjFp0Nt + KT7EXJwhmYbJRQ/uAmpxdSq/KJg9TrL6WZUYsSq3BrbkucELr1WbyyMk08CcGpMQb+GxfuWMjybly8CV + nwv4jZ0ClWHy4i6SaGDOa0yMyT0k+Tvgw20mxUWvB9lIFtaRTANz1Xo1B5NXAx/k2QCX4jDEF72Qil8z + XRLUVI2ZDJwT5ibl3FHnDy+DLd9VF8FzSDJf4NF+Uz0uyoc/4gUKepJmD64Gkwfg4D91CsEZG6SsL6Yt + h1xzduEFXhy81ZRuDPA7ugkK3oHbfIm6fIFtvAIXbBRWcnfQz19N9N7I95zrGxjDwDZ1+7I6LhZT05da + NDXXhWR/bzZfVgFt6m44NdcNDfowC4O5jCM8m82Pq4FNCFXLNZjLkB2dCzdvp1zhP4rz2TwnOzppIRb2 + ZnMjXgObEn35EnogO96gQK0kbrfHdjQmchlcuRnNhfx/RCJ/AHn/AbVQ1jdKAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAASySURBVFhHvVhdbFRFFF5f/En8RfberRpJjCHRBzWCPkgD + PDSiUcFn4cX4Hx+U8OILEGOMiT7gL2qMMUEp994NUihoUYohWIw00QIVaClUdvfub2m7u93tlu3ueM7s + dOvePXP3zm3Dl3wJ6Zz5zrczzJkzN7BQjH2/5Na4EXrMNrTnbUvbyBnWNsTDoZU4JsKuHRgLXBc3Q2ts + U/siagXP2pbO3FiL0T6HH7Ea5wqZxcfwT/ffEDO11yHpiNOEAkeilvYaagnZxQFs19Mo7kjmn536BdsI + rhPy/sFXzdI+IZMsAmOGviti3nOTSKcGmLjENvU+SljGzJGnOKkxGaN79OOXd997h0jrDcLcKUrQjYVR + g5MacyXk8mxy9LtlN6qu3Bx9GwTiSno6PLah76QEvHAhBpFQJT4VNmiI09o0MXnocZY8uKLp7056NYha + qEmN2eHgk8JOI/jWSkpJ7p+PWKWUYanDa5rG/s/cmQ84qbE5ogZqoSY1DhwatB68XtiaR8wMvkEE1xi+ + ixUv7wXhMZY+vJaO8cDUz6tYZTrFitFu0LybjOE0tVeErRrwCoIB90IMgsXogdpK9rTX/57Yt5yN//km + m7rwLStG9sMW72HZU++CmSca5uMcnIsxruaQhj7ccC1Gw/paMtBJEC5c6mQTJ9/i/8btrJbzjEaVr1Sy + +xE+d6L/bZi7u7W5OoPtwh6cXLj46SCa8b3LWClxVBhxB25p+pcOUseNDSfa7tTOU0EyFiNdIr03zBYT + LHngIVJLxpi5dJCbw55t+3a9SgVRvHJ8k0irhsK/JqknI3rKdN15S4A3m0SAjDPpEyKlIqoV5VW0jbZH + A9j9koMEE13LIdGsyKiOif7NpK6M0O08F4ib2ibnABbT8RMvNzB5aCX/z74Q5M99xvVRy6lPXwLaRtJg + 4dIPrDIz2cDs6fdZpvcZkcofpoa/4fqo5dTHnE4f3KDKFie7Hxap/GHy762kroy1LVY6JCFeMvwi89sG + QtOFeEhUywxe8n5Qzg7D/FCTnozoKWUFb+a1MGJo56ggion9D8AqxkVar6iyK30vknoyxqylZ7g5BL5b + qSAZM0fXQ1mbEclbIz+0k9RxIz7WhD1oVPEhTgS5Mf1rB5udiggLEkDNzJ5+D+K9b22dRnCVsCfaLXyr + UoEunOjfIpzQKKV+J+e1pLPdQuCLnwx2Yab3WTb51zvQA5qslDzGro4PsFK6j03HDrLc4Ids/I9XyXkt + aeovCVvzwBeV6iqmelbzJrSU6OWNan7oK1a4uIsbLOcvstzZHeQ8V0JnRbb8CPwcQU5yYTl7XmxoM9JH + 1pFzZMTSEjO0DmGHhuqJzg99Kew0YrYQZfEf7yPnyBgz9R3Chhy41fiIpgQoYgtVrVwVtuaRHdhGxssI + ZeWYdGudwM8QKp8+sC5O2z2snBthM2Mna3duuI2MlXBgdN9tt4v03oAmVVbSL3HllM3NYe7zm8pdrULo + Vr72vK1uwM8RWDypJL4IpaTlaVUF/lJ88fu5cerEHwlFeFFWTYbaV4hgO249Pg1JI4K8rkEMbOXHOKfp + +roWwKdh3GpbAQ/t9bDCLyCxE8Zms97P+UYg8B+hshj6VVc14wAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIUSURBVGhD7ZPNShthFIanN1DvIZDu/LmD2l1VhLirOwuF + SqFiQWRQISVSrC3FWrA2FsxMI4wZlWhEb0C9gYp20y5aS7qt2yxymg/fMJOZ80EhM8kB54FnN+d7nyxi + JCQk3CLG/tRHMtXa70yVKA5Hq7WrTLU+hLnouRngx6Oz9gtz0cMPRi/moocbi0PMRQ83FoeYi4iZizNj + 9hspubE4bO4ZM5cnqGiD5mPd+AHKtvE9xo3FoX8TFW3ge4wbi0P/JirawPcYNxaH/k1U/D9TZm540sxd + PTdzJMmbpsWHyNQjMb7pMzP3E5l6uENJIlMPdyRJZOrhjiSJTD3ckSSRqYc7kiQy9QQPHk08pd6+fkqn + 0x1VbY4/nmxpUSJTT/CgG/FNe/sHWlqUyNQTPOAe7qTBHmTqCR5wj3bSYA8y9TyZMslvKpXqqsEeZIax + naN7Vqly1pBs91CkaDtVrcj2UPHBA8GeIttjw927Zj4UauUvsj0K7v45/7FAncpXZHtY24df2I8lWjqw + ke3R+A+8YD+W6TSyPQpOedAqHTT+6fK1S5X7yPYoFo/vLn/YqG86ZZKsasy7bg+yW8nb2z8+b+2SaIs7 + 35EbZm3T2f1YcEi4O8gNs5IvzL/PWyTaT9YccsMsr649eL26TpJdWlkfRG4YIrqz8Ortfjabrb9cekeS + VE1zi2/KqhG5CQkJCQm3HsP4B860twaYbLRsAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAPlSURBVFhH3VhLTxpRFCapu9qf0Uds0651Y2CYGaBtGhMx + MWkq/gG1il351o0LX3+j+6bLbqTMaIw1QQpN+k7cVDFxABedZnq+8aCAV5iBoZJ+yRcmzL3nfHMf55x7 + ff8tNL//UTIYnNgOhd7qsvztXW9vIdnVZYJ41kOhr3iXlOVxtOVurcVmT88tTZZf6cHgTz0SMXaHh08P + 4nErNz9v5ZeXreLKik0847+DyUkrFYsV0Tahqj+0YDBO4jvZnHcgox2aosRppIz04GDhcHraOl1bc87V + VQt90n19efpAAyMPm2y+OSQU5d6WonzSBwaM48VFsQAXhA2MKNnMbvr9d9lNY9Ak6RkJzNPX/hE5a4aw + mejuzr8PBJ6yO3fQJWmIjBRyc3NCB17waHYWQgs0EC/YrTNg5NDxeGlJaNhLYsrhKyFJT9h9bWDNYVpb + OXLVPJqZsTDdNGt3WIYY9CUd2BD06/maq8fU6KhJuzsDDSznMrD9d6LRE5GBf8E9CkMUysZZTiUQhBHn + HIWS9fUzit6J6LD98cKCRUnghEbxcjBHhkAQFnWsIDky02nLTKUcizT39iwzm7VONzaE78tpB3PKOCzr + Akhfh7RYRZ3OyeJKcCIS4kpwIhIZJ6mq31nWGZDMEd2RkkSdylnuEKgl0k3bc5KGRCSST8jyA5ZHAmlI + kfiFHQR04rghcUwUGKRpjOX5fCiLUJWIGl/FWgKaEQdCi64ob1gerT+q51AeiRrXokhIs+LAHKXAbVX9 + zPLs7JFHDSdqXI/VgsrRiDjQIC1U3hksjwI0VcFFBxvkKopENioOLFDRS2vwN8trkcD9fe8Etv0Ut/0m + scMMHXBEja9iLSHNijyYmKgMM6hidmOx9gnUQ0NF0jTK8khgIPCwrVJdOJzX/f77LO8MWId1j5NkHLuz + BCcOy0WamUzdYuHX1NTlYgFAPkapI+pUQRbpZsog0ok4EBqw5FjWBVAk4lB9nQVrjgpWGqiTD7J8k2VV + IilJ4zv9/ddT8tPaQ8lP8e+iiqkGH5qy13JoGhkxNVX9+DoavcFyxMB1BI6AOFSLDLWCqOSRzWjt3WYZ + tYHrCBrFghd3MfVoH5QUpahJ0mN27wy4joBIHKpFhr0gRg4+krL8nN26A64jMN2er0naEFhzmFbXI1cN + XEfQ2sgg02A6hA5dEKEEtrAhHK+5eqAR7KAvfYlDNQKpnXHc1I/U9vwCk2wgz9bdrY2AhHYi4yAV6eGw + gdOXfQVMO96+AiYhoH0FTP+hKkHixzESqRQZAjbYXGuBZE5ix1AWbanqF6zV0iU6nvEf3qGNFgh0cbf/ + DT7fX3+e7xvou4uzAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAn0SURBVFhHtZlJVJTZFcdJepF5k5ycnM4qi95kn0XG48km + PdoqykyBDKVACcWgICKU0EqnFWiljSjNoNjaDtDiABhoJgcURcaygKKKohCh06JhKKivCr53c++r7ytq + AiSd3HP+R3jDvb833Pe9h35rmQnghyaBbTPbYdf/Q+R7nLEfSeE2bmZh+T46Ak+NSTJJGrWtLrkNifp4 + +RKW2wHge1LI1zcc2c+9nKE8oYweMvgo8wSWByj7pVhS2Nc3GhWNzhXME4pgSCNrSG4jg3uBYgwp5MaN + 9odJgK2jdpY9arHMU4DyG19D7meVoBcYB9C7aFhw10o5A01xBe/LQdHXqMCyybeesR9I4b6bGQSWQ86z + j5dBRGIWtI08c4IMraMW/Tjvk3O83DGrCCe5/d/ZiE38hGbjYstDUKgyITm3EJqHzTCIAA1aI5y4fAvy + Sqq46Gcq02Fd05AZ1IcKeZ+LrQ8dg0JfktuNmdnOfjdmZ0m4pBm4BBk4Uq4RQSzXm0xL5HzQyiDvH2ch + KCYZgmNTIGLPAVCsqkzehtrmYh8d9qUZHea+0KdLDIqHcdNNS+yvEs6KORJCPC0nhJwItKTyPpOXkmZM + i4Eq6tsQLhPC4tLXFA2grL4dBhYZPMW+NKvy0pNPOZHkBHIkj1jpdvSYbSzSNVt9wREYOX9qBRhA5Z2q + goCoJJwdNYTsSoPQuH2odEn7sGwvBEYn8zZ5p89Dv9RPiyI/5G81SJ7dNqaQ8GhpxRoCJLjBGSs060Z9 + wpFzCvTo5SIE4rKFxWfwzb+WwuIy+BI/fGmFvkVHf/JDsylDUpyvMeZTjE2Q0izWSngOQHlpS67Wc8f3 + x75xLqsrXM8Cg4Ivan3st7WVX3EFnmDfXhdIeSbvmb7hMUuqG5yzOGoXL0h49Eljm4maKuison1T09HL + 4ciBDEfOj52/xpfvv9GxC9ehG314QlZ39Dj2qnxOosaW2PsSnsOw8JBWq12uud/NR1x2o5nD0VLQ3qHl + qWrphB07E7+TzrU9doOkPV2KYBSzGmOPTE8LmNXpEpa7jVjZW5fbO7PpzNpUeEZcWVoRps0lMNGhhIc3 + ouFInhL8FQkbUmJyLJQXh0JLdRiMPr8BPZjVfeibBp+t0SxTzKrGu3t1FvamhOPbNBrN9/F40NMRcaDo + TF33nDA9O/YpbsZEzJg9mHIowx5ghjiY64+B/sadcKowDD7OjQDNwZ3834IjEXAay65XBEB/wxaY734H + 1/JvbpqYuoqzKLz4uPRS1aZNm8QwZfp4QEDAGxLG2oYZ+qdtyjhLsDIVQlSpC6IuwQsQjCrctChDFE7z + 2xvW/EAYxKRrJihGcGTkUpAy7V0p/OvZjpiUtwKjky7mZCcswyDCSYDm+yqoOx8N976KBPvTEAz2Hq4T + Bl1F9p534N5Vf6g7Gwjm1s1udarkBAiITHq8I1r9Bynsxs3SFXlRBmy+okKH8c59lZYWC4uPEbAPl9CH + Fh69x9vI7alv8xcBzvq7l/xPYIiNX1ZdbUkbPUiAs92JEBKjAv8Id50/GYYpiQF9qOqzUK/2obHxMPsA + B4X1Yu/bZ6Qwq9sUYz8xCmKJQRCm6eshfznoeKFjYGkwBQsSoetWImyP3OOljHQlQPe7PpWOdb76dNXs + 4PUzeg1m88qZSHEpvp5YBPHUc4Af++GJXUYHtPztdQXsnrWDqMOEQMDe24kQEK32UnbWLoAnCCSJda38 + fDBrt88+/bUIiPXzA3t8A0o8BkEs9Ru2Wl/JgLp5Gz8s/15+CZI0BRCZdBDmHkagBwUsdEWCMikFgpVp + bqr9XAFA+xBVUaSA8sJw5+/XSiO82u9KSobFjg94/WSzP0SnHYLMwlIoudYIjUNjMLgoOgFHrNaXfib7 + 0ggBtuHlU4mNFQn7ndq17yOYbAkC6MSAqJ6aIIhN2ouXBLxKoQry48He8b6zPjszFrIPxDh/p7pjR+Kd + 7ZXqNOhFH3L9WGMYxsx1i7kbYzbpjBxw1Lak96NrTWtrq3i7bwii1FmQX/oF3OoehL5ZG592y0AGwAOE + kDTXtgW6r4aA8dYOYATnUrdbFQdxKNcyakNtqc9c64dudbPaHOjFC0QrXhYqG9oh8+gpiFBlwM0uLRCT + 0cbCeaIY7ewvBptYoBfEM0M2sXpIsJv5PkTAl8PFAASyjpbufoD7K4nLfg+X0EcbT00Pn3TuPx3GHLKK + 1cSgRxajHf7M4XwZ3mbfGBTEKvoWT5pv4H0IA66jyXp/fkckTdVv89nGU+ZnTdIlVjxHMaXw65uOsV9o + LctRDQMGqLhQCnAHHa6jvktBzkTovxzos42nDh89DOW4tK2GiWC3K/56dvb2naPq3CLnrXi6YTtmEX6m + UPWnQiBVHQsPzuJml8pITZjNobvx2o9qLsPMdqnrwLapSUqoPxEKrG4Ll63OH08Jh//dGUeg5v6ARQq/ + tkWqM34TpVZb6QKpKa6Emgd9MDV8AR+3m8Ha+CEERTvudcoEvEBgmawvj8dAeEIG1+UTmMkuddSW+gRF + JcLiV/7Arm+Duc7D0GqchMJzNbATj7ModQ4o4g/+VsJY3fDimE2Xx9LaRn5o8jeDxQLL7Qqw3t4C4XFp + eDtOgwS1Gh8SmJWSivNV/O1LOpmP8C518Xj2UR9FXCpYr24HVrsdhmZe8ts0+a/EVx/FDFdl5kkYq1t4 + fOanFKSuW+d8NJGT5+PtwHAGm0qjICsrFR6dC+e/y8rOSnG+PzTZKW51nRUKyNqfCk0nooFV+8OLfnwj + S37JPx0rjsHtL5IwVrfErE/y6LL6+fUmt5cdOZvWVQL7J+4hH4pP3e/cs6q0DO82Nbi0V7aDpS2Tf9Jk + OPJ/uuY2f0On5x//SMJwt0HGfjZmE/PN9uUnrcNjthDMxJyiUuf3eQWSwQvdeWANW1EYVJLlpr8TTtYC + LiO7ie1IuOcYLq2lLcsLjvwfOFoCFPPe6IQwZl/uMeM5+C+An3I4On+woJXexfxtbF2GcPwsRSZmghGB + XCFl0GcTXWBrVmI2YnCU6csQL8CxyjA+YySxJhC+1V7hYJ5wenzvyMmFt6qVv0UK0MaPnjE7+6NcKOtg + AY0oFQyLy/wpSs9Az9nUL9phytgIC3cz4VFZpBfg45KdsFSrgJnOYkyyBd7HFYz8kbSvFvjDXlN0xo2B + ZLKz3/uN21iwZ4V+zgr93/7b+acQT0jPGdW9moFOXQ+03G2AxqYa6LxTDYMvHA9/TzAZTn6gk//uqWmM + KbgxkMYF2OpnXmC/NszPWzwrZblCuoL6gvUlVygZzBWO/PuKq52ZWZxk7Jd8H5psLHRobm7BV0NZvkBd + YWW5wshyhXIFWw3OvAgzJoH5czjZjIz9igqxgc//MnDVqIcMa8izrS9/bhLY5gm8Czio/Pz+Az4KU4Ad + 9CkXAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADOSURBVFhHYxgFIxLsv/VPZte9X6vpiUF2Qq0nDPbe/qm9 + +97v//TEIDuh1hMGow7Egoe/A1dd+/U/ZN03OAbxYXIdx36gyBHCyHphmGIHLrz067/itM9wDOLD5PJ2 + fUeRI4SR9cLw8HfgoI9iWuNRB1KKKXbgoM8kow6k1IGbb/0CFycwDOLD5EAWIssRwsh6YZhiB9IaD38H + DvooHvSZZNSBlDqQ1njUgZRiih046Busgz6TDHoHDvoopjUedSCleHg5cNAPYI6C4QMYGABB2DuYDB90 + PQAAAABJRU5ErkJggg== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABQQgAAhEMAAL5C + AADIQgs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABhQwAAhEMAAL5C + AADIQgs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADHQwAAhEMAAL5C + AADIQgs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAAKBC + AAAAAAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAAAAAABZD + AAAAAAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAAAAAAKBC + AAAAAAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAAAAAABZD + AAAAAAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAAAAAAKBC + AAAAAAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAAAAAABZD + AAAAAAs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAAAAAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAAAAAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAAAAAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAAAAAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAAAAAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEEAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAyEEAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAyEEAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAyEEAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAyEEAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAyEEAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEEAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAASEIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAASEIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAASEIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAASEIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAASEIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEIAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAlkIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAlkIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAlkIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAlkIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAlkIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkIAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAyEIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAyEIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAyEIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAyEIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAyEIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEIAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAA+kIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAA+kIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAA+kIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAA+kIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAA+kIAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAA+kIAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAA+kIAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAFkMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAFkMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAFkMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAFkMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAFkMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAFkMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAFkMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAL0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAL0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAL0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAL0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAL0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAL0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAL0MAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAASEMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAASEMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAASEMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAASEMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAASEMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAYUMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAYUMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAYUMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAYUMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAYUMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAYUMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAYUMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAekMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAekMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAekMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAekMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAekMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAekMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAekMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAiUMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgCAiUMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwCAiUMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwCAiUMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwCAiUMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRACAiUMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAiUMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAlkMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAlkMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAlkMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAlkMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAlkMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAokMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgCAokMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwCAokMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwCAokMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwCAokMAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRACAokMAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAokMAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAr0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAr0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAr0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAr0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAr0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAr0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAr0MAwCxE + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAu0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgCAu0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwCAu0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwCAu0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwCAu0MAAKBC + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRACAu0MAABZD + AADIQQs= + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0 + dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh + d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAu0MAwCxE + AADIQQs= + + + + 69 + + + + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWqUeEVyo + H1Bbpx59W6gepVunH8xbqB7gW6gf7lqoH/1aqB/9W6gf7luoHuBaqB/LW6gepVunHn1apyBPX68fEAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF2n + ISZaqB+BW6cfzFunH/xbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1unH/xaqB/LWqgfgVypHCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA/vwAEW6keXFunHsZbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cexlupHlw/vwAEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAD+/AARaqR5lWqcf3luoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf3FqnHmM/vwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFynHjpapx7QW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gezluoHzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX58fCFqnHpVbpx/+W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9aqB/9W6gfkUi2 + JAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWaUbJVunHs9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB7OWaUbJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWqgfQVun + HvBbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qnHu9ZqSA/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAW6YeVFunHvhbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqge91um + H1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAWqcfUlunH/xbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bpx/8W6YdTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXKYeQlunHvlbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1unHvhcph5CAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6kgJ1unHvBbqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//Zq4u/3CzPP9cqSH/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6ce8Fyp + HCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVKkcCVqn + HtBbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9cqCD/u9uj//7+/f//////5PHa/3O1QP9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9apx/NSLYkBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFuoHpZbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//k8Zr//////////////////// + ///P5r7/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qnH5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFmqHTxbpx/+W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7bY + nP//////////////////////8fjt/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9aqB/9W6gfOAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/AARbqB7RW6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/+726P///////////////////////X68v9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1unHs9VqgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbqCBnW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//u9uj///////////////////////1+vL/W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6geZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA/vwAEWqcf3luoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7vbo/////////////// + ////////9fry/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH9w/vwAEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAXKgdXluoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/+726P///////////////////////X68v9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//WageWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqoHshbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//u9uj///////////////////////1+vL/W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1unHsYAAAAAAAAAAAAAAAAAAAAAAAAAAFmlHyhbqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7vbo///////////////////////9fry/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//XKkcJAAAAAAAAAAAAAAAAAAA + AABaqB6EW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/+726P///////// + //////////////X68v9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qo + H4EAAAAAAAAAAAAAAAAAAAAAW6gezluoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//u9uj///////////////////////1+vL/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9aqB/LAAAAAAAAAAAAAAAAXa4aE1qoH/1bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//dbZC//D36v///////////////////////////6nRif9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/FqlHhEAAAAAAAAAAFumH1FbqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v////////////////////////////// + ////////qdGJ/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9apyBPAAAAAAAA + AABbpx+AW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v////////////// + ///2+vP/1+rJ//////////////////////+p0Yn/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6cefgAAAAAAAAAAWqcepluoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D3 + 6v/////////////////2+vP/gLxS/1+qJP/N5bv//////////////////////6nRif9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1unH6QAAAAAAAAAAFuoHs5bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//X6ok/83lu/////////////// + ////////qdGJ/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9aqB/LAAAAAAAAAABapx7hW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uo + H/9fqiT/zeW7//////////////////////+p0Yn/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqce4QAA + AAAAAAAAW6ce8FuoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1+qJP/N5bv//////////////////////6nRif9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1qnHu8AAAAAAAAAAFqoH/1bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//dbZC//D36v////////////// + ///2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//X6ok/83lu/////////////// + ////////qdGJ/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx/8AAAAAAAAAABaqB/9W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9gqyb/q9KM/3a2RP9bqB//W6gf/1uoH/9bqB//dbZC//D3 + 6v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9fqiT/zeW7//////////////////////+p0Yn/W6gf/1uoH/9bqB//W6gf/1+qJP+o0Yj/e7lL/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/AAAAAAAAAAAW6ce8Fuo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//kMRn///////z+e7/erhJ/1uo + H/9bqB//dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1+qJP/N5bv//////////////////////6nRif9bqB//W6gf/1+q + JP/O5bz//////9Dmv/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qn + Hu8AAAAAAAAAAFqnHuFbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/7PX + l/////////////P57v97uUr/dbZC//D36v/////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//X6ok/83lu/////////////// + ////////qdGJ/1+qJP/O5bz////////////y+O3/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9apx7hAAAAAAAAAABbqB7OW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH//W6cf/////////////////8/nu//D36v/////////////////2+vP/gLxS/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9fqiT/zeW7///////////////////////l8dv//////////////////////3K0P/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//WqgfywAAAAAAAAAAWqcepluoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9dqSL/9/v0//////////////////////////////////// + ///2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1+qJP/N5bv///////////////////////////////////////// + //+Uxm3/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1unH6QAAAAAAAAAAFun + H4BbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//ebhH//////////////////// + ///////////////////2+vP/gLxS/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//X6ok/83lu/////////////// + ////////////////////////uNmd/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bpx5+AAAAAAAAAABapx9SW6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/5vK + dv//////////////////////////////////////8fjt/3m4SP9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/12p + Iv/E4K7//////////////////////////////////////9rszf9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//WqcgTwAAAAAAAAAAXa4aE1qoH/1bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/+/3af////////////////////////////////////////////x+O3/ebhI/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/12pIv/E4K7////////////////////////////////////////////6/Pj/X6ok/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/FqlHhEAAAAAAAAAAAAAAABapx7QW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//4e/W//////////////////////////////////// + //////////////H47f91tkP/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH//C36z///////////////////////////////////////// + /////////////3y5TP9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1unH8wAAAAAAAAAAAAA + AAAAAAAAWqgehVuoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Yqwp//3+/P////////////// + ////////////////////////////////////////ptCG/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9hqyj//P37//////////////////// + //////////////////////////////////+gzX3/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9aqB+CAAAAAAAAAAAAAAAAAAAAAF2nHylbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/4O9 + Vf//////////////////////////////////////8ffs/87lvP+r043/iMBc/16pI/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/3W2 + Qv+gzX3/w9+t/+by3f/+//7/////////////////////////////////wd6r/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//WaUbJQAAAAAAAAAAAAAAAAAAAAAAAAAAWqcfyluoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/+Wx3D////////////5/Pf/2evL/7bYnP+Uxmz/cLM8/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Za0t/4nAXf+r043/zuW8//H47f///////////9jq + yf9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//WqcexwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqn + H2BbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Xqoj/5DEaP97uUv/Xqkj/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//cLM8/5PGa/91tkP/W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1upHlwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA/vwAEW6ge31uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H90/vwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFuoH2pbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9apx5mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vwAEWqcf01uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx7PP78ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFunHT1bpx/+W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx/+XKceOgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6cel1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gflAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGayGQpbqB7RW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gezl+fHwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAWaUfKFunHvBbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6ce8F2nISYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcph5CW6ce+VuoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6ce+VymHkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFqoHlVbpx/8W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6cf/FumH1EAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAW6YeVFunHvhbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6ce+Fum + HlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbpx5DWqce8luoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//Wqge8VqoH0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFmlHyhapx/TW6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6cez12nISYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAVKkcCVqnHphbpx/+W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bpx/+W6cel1+fHwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW6cdPVqnH9NbqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB7RWqgeOwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vwAEWqYea1uo + Ht9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1qnH95bqCBnP78ABAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABmmTMFW6kgX1unHslbqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqcex1up + IF8/vwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWaUfKFunHoZapx7QWqgf/Vuo + H/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//W6gf/1uoH/9bqB//Wqgf/Vuo + Hs5aqB6EWaUfKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAF2uGhNapx9SW6cfgFunHqdapx/NW6ge4luoH+5bpx/+W6cf/luoH+5bqB7iWqcfzVun + Hqdbpx+AW6YfUV2uGhMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//////////////8AAP//////+AAAH//////AAAAD/////wAAAAD////+AAAAAH////gAAAAA + H///8AAAAAAP///gAAAAAAf//8AAAAAAA///gAAAAAAB//8AAAAAAAD//gAAAAAAAH/8AAAAAAAAP/wA + AAAAAAA/+AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAP4AAAAAAAAAfgAAAAAAAAB+AAAAAAAAAHwAAAAAAA + AAPAAAAAAAAAA8AAAAAAAAADgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAA + AAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAA + AAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAAA8AAAAAAAAADwAAAAAAAAAPgAAAAAAAAB+AA + AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAAP+AAAAAAAAB/8AAAAAAAAP/wAAAAAAAA//gAAAAAA + AH//AAAAAAAA//+AAAAAAAH//8AAAAAAA///4AAAAAAH///wAAAAAA////gAAAAAH////gAAAAB///// + AAAAAP/////AAAAD//////gAAB///////wAA//////////////8= + + + \ No newline at end of file diff --git a/Handler/Project/icons8-layers-30.ico b/Handler/Project/icons8-layers-30.ico new file mode 100644 index 0000000..058c52e Binary files /dev/null and b/Handler/Project/icons8-layers-30.ico differ diff --git a/Handler/Project/icons8-split-64.ico b/Handler/Project/icons8-split-64.ico new file mode 100644 index 0000000..4bd26bf Binary files /dev/null and b/Handler/Project/icons8-split-64.ico differ diff --git a/Handler/Project/libxl.dll b/Handler/Project/libxl.dll new file mode 100644 index 0000000..204a7e3 Binary files /dev/null and b/Handler/Project/libxl.dll differ diff --git a/Handler/Project/packages.config b/Handler/Project/packages.config new file mode 100644 index 0000000..4a120cc --- /dev/null +++ b/Handler/Project/packages.config @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/README.md b/Handler/README.md new file mode 100644 index 0000000..13176f7 --- /dev/null +++ b/Handler/README.md @@ -0,0 +1,147 @@ +# ATV Reel Label Attach, Modify & Transfer System + +Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True +Data Source=V1SPCSQL,51122;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password="2!x2$yY8R;}$";Encrypt=False;TrustServerCertificate=True + +## 개요 + +ATV(Automatic Test Vehicle) 릴 라벨 부착, 수정 및 전송을 위한 산업 자동화 시스템입니다. 이 시스템은 Windows Forms를 사용하여 C# (.NET Framework 4.8)로 구축되었으며, 모션 컨트롤러, 바코드 리더, 프린터, PLC 등 다양한 하드웨어 구성 요소와 통합됩니다. + +## 주요 기능 + +- **자동 라벨 부착**: 모션 컨트롤러를 통한 정밀한 라벨 부착 +- **바코드 인식**: Keyence 바코드 리더를 통한 QR/바코드 스캔 +- **라벨 인쇄**: SATO 프린터를 통한 고품질 라벨 인쇄 +- **PLC 제어**: 산업용 PLC와의 통신을 통한 장비 제어 +- **데이터 관리**: SQL Server 기반 데이터베이스 관리 +- **상태 모니터링**: 실시간 장비 상태 및 작업 진행 상황 모니터링 + +## 시스템 요구사항 + +- **OS**: Windows 10/11 (x64) +- **Framework**: .NET Framework 4.8 +- **Visual Studio**: 2017 이상 +- **Database**: SQL Server + +### 하드웨어 요구사항 + +- AzinAxt 모션 컨트롤러 및 드라이버 +- Keyence 바코드 리더 SDK +- SATO 프린터 드라이버 +- 산업용 PLC (Crevis) + +## 빌드 및 실행 + +### 빌드 명령어 + +```bash +# Debug 빌드 +msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Debug /p:Platform=x86 + +# Release 빌드 +msbuild "STDLabelAttach(ATV).sln" /p:Configuration=Release /p:Platform=x86 + +# 특정 프로젝트 빌드 +msbuild "Project\STDLabelAttach(ATV).csproj" /p:Configuration=Debug +``` + +### 설정 + +1. `app.config`에서 데이터베이스 연결 문자열 구성 +2. `MotParam/` 폴더의 모션 매개변수 파일 확인 +3. 하드웨어 드라이버 설치 및 구성 + +## 프로젝트 구조 + +### 주요 프로젝트 + +- **Project/**: 메인 애플리케이션 (STDLabelAttach(ATV)) + - Windows Forms 기반 사용자 인터페이스 + - 상태 머신 기반 제어 로직 + - 하드웨어 디바이스 인터페이스 + +- **Project_form2/**: 데이터 처리 수신기 애플리케이션 + - SID(Serial ID) 변환 및 처리 + - 고객 정보 관리 + - 데이터 가져오기/내보내기 + +- **ResultView/**: 결과 조회 애플리케이션 + - 작업 결과 및 히스토리 조회 + +### 공유 라이브러리 (Sub/) + +- **arAzinAxt/**: 모션 컨트롤러 인터페이스 +- **arImageViewer_Emgu/**: 이미지 처리 (EmguCV) +- **CommSM/**: 상태 머신 통신 +- **StdLabelPrint/**: 표준 라벨 인쇄 + +## 아키텍처 + +### 상태 머신 패턴 + +시스템은 포괄적인 상태 머신 패턴을 사용합니다: + +- **Step/**: 주요 작업 단계 (INIT, IDLE, RUN, HOME, FINISH) +- **StateMachine/**: 핵심 상태 머신 로직 및 이벤트 처리 +- **RunSequence/**: 특정 작업 시퀀스 실행 + +### 디바이스 관리 + +- **모션 제어**: AzinAxt 라이브러리를 통한 정밀한 위치 제어 +- **바코드 읽기**: Keyence 스캐너 통합 +- **라벨 인쇄**: SATO 프린터 API 연동 +- **PLC 통신**: 안전 및 I/O 제어 + +### 데이터베이스 + +- **ORM**: Entity Framework 6.2.0 +- **모델**: Model1.edmx +- **매니저**: 다양한 데이터 유형별 데이터베이스 매니저 + +## 개발 가이드 + +### 주요 파일 + +- **fMain.cs**: 메인 폼 및 UI 로직 +- **Pub.cs**: 전역 변수 및 공통 함수 +- **System_Setting.cs**: 시스템 설정 관리 +- **StateMachine.cs**: 상태 머신 핵심 로직 + +### 설정 관리 + +- **시스템 설정**: `Setting/` 클래스 +- **사용자 설정**: `UserSetting.cs` +- **모션 매개변수**: `MotParam/` 폴더 + +### UI 컨트롤 + +- **사용자 정의 컨트롤**: `UIControl/` 폴더 +- **다이얼로그**: `Dialog/` 폴더 +- **리소스**: 이미지 및 아이콘 + +## 테스트 + +- 메인 애플리케이션을 통한 수동 테스트 +- 실제 하드웨어를 사용한 통합 테스트 +- 디버그 다이얼로그를 통한 실시간 모니터링 + +## 주요 종속성 + +- Entity Framework 6.2.0 +- Newtonsoft.Json 13.0.3 +- EmguCV 4.5.1 +- Microsoft OWIN 스택 +- Keyence AutoID SDK +- SATO Printer API + +## 라이선스 + +내부 사용 전용 - 상업적 재배포 금지 + +## 연락처 + +프로젝트 관련 문의사항이 있으시면 시스템 관리자에게 연락해 주세요. + +--- + +*이 문서는 ATV Reel Label Attach, Modify & Transfer System v1.0을 기준으로 작성되었습니다.* \ No newline at end of file diff --git a/Handler/ResultView/CSetting.cs b/Handler/ResultView/CSetting.cs new file mode 100644 index 0000000..65ba531 --- /dev/null +++ b/Handler/ResultView/CSetting.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace ResultView +{ + public class CSetting : arUtil.Setting + { + public string MCName { get; set; } + + [DisplayName("Printer Name")] + public string PrinterName { get; set; } + [DisplayName("Print Border Drawing")] + public Boolean DrawBorder { get; set; } + [DisplayName("Use 7-Digit Label Format")] + public Boolean PrinterForm7 { get; set; } + public override void AfterLoad() + { + if (PrinterName.isEmpty()) PrinterName = "PrinterL"; + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/ResultView/DataSet1.Designer.cs b/Handler/ResultView/DataSet1.Designer.cs new file mode 100644 index 0000000..064c1d2 --- /dev/null +++ b/Handler/ResultView/DataSet1.Designer.cs @@ -0,0 +1,3372 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace ResultView { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("DataSet1")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class DataSet1 : global::System.Data.DataSet { + + private K4EE_Component_Reel_ResultDataTable tableK4EE_Component_Reel_Result; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public DataSet1() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected DataSet1(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["K4EE_Component_Reel_Result"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_ResultDataTable(ds.Tables["K4EE_Component_Reel_Result"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public K4EE_Component_Reel_ResultDataTable K4EE_Component_Reel_Result { + get { + return this.tableK4EE_Component_Reel_Result; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + DataSet1 cln = ((DataSet1)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["K4EE_Component_Reel_Result"] != null)) { + base.Tables.Add(new K4EE_Component_Reel_ResultDataTable(ds.Tables["K4EE_Component_Reel_Result"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableK4EE_Component_Reel_Result = ((K4EE_Component_Reel_ResultDataTable)(base.Tables["K4EE_Component_Reel_Result"])); + if ((initTable == true)) { + if ((this.tableK4EE_Component_Reel_Result != null)) { + this.tableK4EE_Component_Reel_Result.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "DataSet1"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/DataSet1.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableK4EE_Component_Reel_Result = new K4EE_Component_Reel_ResultDataTable(); + base.Tables.Add(this.tableK4EE_Component_Reel_Result); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeK4EE_Component_Reel_Result() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void K4EE_Component_Reel_ResultRowChangeEventHandler(object sender, K4EE_Component_Reel_ResultRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class K4EE_Component_Reel_ResultDataTable : global::System.Data.TypedTableBase { + + private global::System.Data.DataColumn columnidx; + + private global::System.Data.DataColumn columnSTIME; + + private global::System.Data.DataColumn columnETIME; + + private global::System.Data.DataColumn columnPDATE; + + private global::System.Data.DataColumn columnJTYPE; + + private global::System.Data.DataColumn columnJGUID; + + private global::System.Data.DataColumn columnSID; + + private global::System.Data.DataColumn columnSID0; + + private global::System.Data.DataColumn columnRID; + + private global::System.Data.DataColumn columnRID0; + + private global::System.Data.DataColumn columnRSN; + + private global::System.Data.DataColumn columnQR; + + private global::System.Data.DataColumn columnZPL; + + private global::System.Data.DataColumn columnPOS; + + private global::System.Data.DataColumn columnLOC; + + private global::System.Data.DataColumn columnANGLE; + + private global::System.Data.DataColumn columnQTY; + + private global::System.Data.DataColumn columnQTY0; + + private global::System.Data.DataColumn columnVNAME; + + private global::System.Data.DataColumn columnPRNATTACH; + + private global::System.Data.DataColumn columnPRNVALID; + + private global::System.Data.DataColumn columnwdate; + + private global::System.Data.DataColumn columnVLOT; + + private global::System.Data.DataColumn columnBATCH; + + private global::System.Data.DataColumn columnqtymax; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultDataTable() { + this.TableName = "K4EE_Component_Reel_Result"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal K4EE_Component_Reel_ResultDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected K4EE_Component_Reel_ResultDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idxColumn { + get { + return this.columnidx; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn STIMEColumn { + get { + return this.columnSTIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ETIMEColumn { + get { + return this.columnETIME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn PDATEColumn { + get { + return this.columnPDATE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn JTYPEColumn { + get { + return this.columnJTYPE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn JGUIDColumn { + get { + return this.columnJGUID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SIDColumn { + get { + return this.columnSID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn SID0Column { + get { + return this.columnSID0; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RIDColumn { + get { + return this.columnRID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RID0Column { + get { + return this.columnRID0; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn RSNColumn { + get { + return this.columnRSN; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn QRColumn { + get { + return this.columnQR; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ZPLColumn { + get { + return this.columnZPL; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn POSColumn { + get { + return this.columnPOS; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn LOCColumn { + get { + return this.columnLOC; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ANGLEColumn { + get { + return this.columnANGLE; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn QTYColumn { + get { + return this.columnQTY; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn QTY0Column { + get { + return this.columnQTY0; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VNAMEColumn { + get { + return this.columnVNAME; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn PRNATTACHColumn { + get { + return this.columnPRNATTACH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn PRNVALIDColumn { + get { + return this.columnPRNVALID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn wdateColumn { + get { + return this.columnwdate; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn VLOTColumn { + get { + return this.columnVLOT; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn BATCHColumn { + get { + return this.columnBATCH; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn qtymaxColumn { + get { + return this.columnqtymax; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultRow this[int index] { + get { + return ((K4EE_Component_Reel_ResultRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event K4EE_Component_Reel_ResultRowChangeEventHandler K4EE_Component_Reel_ResultRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddK4EE_Component_Reel_ResultRow(K4EE_Component_Reel_ResultRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultRow AddK4EE_Component_Reel_ResultRow( + System.DateTime STIME, + System.DateTime ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + double ANGLE, + int QTY, + int QTY0, + string VNAME, + bool PRNATTACH, + bool PRNVALID, + System.DateTime wdate, + string VLOT, + string BATCH, + int qtymax) { + K4EE_Component_Reel_ResultRow rowK4EE_Component_Reel_ResultRow = ((K4EE_Component_Reel_ResultRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + STIME, + ETIME, + PDATE, + JTYPE, + JGUID, + SID, + SID0, + RID, + RID0, + RSN, + QR, + ZPL, + POS, + LOC, + ANGLE, + QTY, + QTY0, + VNAME, + PRNATTACH, + PRNVALID, + wdate, + VLOT, + BATCH, + qtymax}; + rowK4EE_Component_Reel_ResultRow.ItemArray = columnValuesArray; + this.Rows.Add(rowK4EE_Component_Reel_ResultRow); + return rowK4EE_Component_Reel_ResultRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultRow FindByidx(int idx) { + return ((K4EE_Component_Reel_ResultRow)(this.Rows.Find(new object[] { + idx}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + K4EE_Component_Reel_ResultDataTable cln = ((K4EE_Component_Reel_ResultDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new K4EE_Component_Reel_ResultDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnidx = base.Columns["idx"]; + this.columnSTIME = base.Columns["STIME"]; + this.columnETIME = base.Columns["ETIME"]; + this.columnPDATE = base.Columns["PDATE"]; + this.columnJTYPE = base.Columns["JTYPE"]; + this.columnJGUID = base.Columns["JGUID"]; + this.columnSID = base.Columns["SID"]; + this.columnSID0 = base.Columns["SID0"]; + this.columnRID = base.Columns["RID"]; + this.columnRID0 = base.Columns["RID0"]; + this.columnRSN = base.Columns["RSN"]; + this.columnQR = base.Columns["QR"]; + this.columnZPL = base.Columns["ZPL"]; + this.columnPOS = base.Columns["POS"]; + this.columnLOC = base.Columns["LOC"]; + this.columnANGLE = base.Columns["ANGLE"]; + this.columnQTY = base.Columns["QTY"]; + this.columnQTY0 = base.Columns["QTY0"]; + this.columnVNAME = base.Columns["VNAME"]; + this.columnPRNATTACH = base.Columns["PRNATTACH"]; + this.columnPRNVALID = base.Columns["PRNVALID"]; + this.columnwdate = base.Columns["wdate"]; + this.columnVLOT = base.Columns["VLOT"]; + this.columnBATCH = base.Columns["BATCH"]; + this.columnqtymax = base.Columns["qtymax"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnidx = new global::System.Data.DataColumn("idx", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnidx); + this.columnSTIME = new global::System.Data.DataColumn("STIME", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSTIME); + this.columnETIME = new global::System.Data.DataColumn("ETIME", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnETIME); + this.columnPDATE = new global::System.Data.DataColumn("PDATE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPDATE); + this.columnJTYPE = new global::System.Data.DataColumn("JTYPE", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnJTYPE); + this.columnJGUID = new global::System.Data.DataColumn("JGUID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnJGUID); + this.columnSID = new global::System.Data.DataColumn("SID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID); + this.columnSID0 = new global::System.Data.DataColumn("SID0", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnSID0); + this.columnRID = new global::System.Data.DataColumn("RID", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRID); + this.columnRID0 = new global::System.Data.DataColumn("RID0", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRID0); + this.columnRSN = new global::System.Data.DataColumn("RSN", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnRSN); + this.columnQR = new global::System.Data.DataColumn("QR", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQR); + this.columnZPL = new global::System.Data.DataColumn("ZPL", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnZPL); + this.columnPOS = new global::System.Data.DataColumn("POS", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPOS); + this.columnLOC = new global::System.Data.DataColumn("LOC", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnLOC); + this.columnANGLE = new global::System.Data.DataColumn("ANGLE", typeof(double), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnANGLE); + this.columnQTY = new global::System.Data.DataColumn("QTY", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQTY); + this.columnQTY0 = new global::System.Data.DataColumn("QTY0", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnQTY0); + this.columnVNAME = new global::System.Data.DataColumn("VNAME", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVNAME); + this.columnPRNATTACH = new global::System.Data.DataColumn("PRNATTACH", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPRNATTACH); + this.columnPRNVALID = new global::System.Data.DataColumn("PRNVALID", typeof(bool), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnPRNVALID); + this.columnwdate = new global::System.Data.DataColumn("wdate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnwdate); + this.columnVLOT = new global::System.Data.DataColumn("VLOT", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnVLOT); + this.columnBATCH = new global::System.Data.DataColumn("BATCH", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnBATCH); + this.columnqtymax = new global::System.Data.DataColumn("qtymax", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnqtymax); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnidx}, true)); + this.columnidx.AutoIncrement = true; + this.columnidx.AutoIncrementSeed = -1; + this.columnidx.AutoIncrementStep = -1; + this.columnidx.AllowDBNull = false; + this.columnidx.ReadOnly = true; + this.columnidx.Unique = true; + this.columnSTIME.AllowDBNull = false; + this.columnPDATE.MaxLength = 10; + this.columnJTYPE.MaxLength = 10; + this.columnJGUID.MaxLength = 50; + this.columnSID.MaxLength = 20; + this.columnSID0.MaxLength = 20; + this.columnRID.MaxLength = 50; + this.columnRID0.MaxLength = 50; + this.columnRSN.MaxLength = 10; + this.columnQR.MaxLength = 100; + this.columnZPL.MaxLength = 1000; + this.columnPOS.MaxLength = 10; + this.columnLOC.MaxLength = 1; + this.columnVNAME.MaxLength = 100; + this.columnwdate.AllowDBNull = false; + this.columnVLOT.MaxLength = 100; + this.columnBATCH.MaxLength = 100; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultRow NewK4EE_Component_Reel_ResultRow() { + return ((K4EE_Component_Reel_ResultRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new K4EE_Component_Reel_ResultRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(K4EE_Component_Reel_ResultRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.K4EE_Component_Reel_ResultRowChanged != null)) { + this.K4EE_Component_Reel_ResultRowChanged(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.K4EE_Component_Reel_ResultRowChanging != null)) { + this.K4EE_Component_Reel_ResultRowChanging(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.K4EE_Component_Reel_ResultRowDeleted != null)) { + this.K4EE_Component_Reel_ResultRowDeleted(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.K4EE_Component_Reel_ResultRowDeleting != null)) { + this.K4EE_Component_Reel_ResultRowDeleting(this, new K4EE_Component_Reel_ResultRowChangeEvent(((K4EE_Component_Reel_ResultRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveK4EE_Component_Reel_ResultRow(K4EE_Component_Reel_ResultRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + DataSet1 ds = new DataSet1(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "K4EE_Component_Reel_ResultDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class K4EE_Component_Reel_ResultRow : global::System.Data.DataRow { + + private K4EE_Component_Reel_ResultDataTable tableK4EE_Component_Reel_Result; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal K4EE_Component_Reel_ResultRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableK4EE_Component_Reel_Result = ((K4EE_Component_Reel_ResultDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int idx { + get { + return ((int)(this[this.tableK4EE_Component_Reel_Result.idxColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.idxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public System.DateTime STIME { + get { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.STIMEColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.STIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public System.DateTime ETIME { + get { + try { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.ETIMEColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Result\' 테이블의 \'ETIME\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ETIMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string PDATE { + get { + if (this.IsPDATENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.PDATEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PDATEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string JTYPE { + get { + if (this.IsJTYPENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.JTYPEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.JTYPEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string JGUID { + get { + if (this.IsJGUIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.JGUIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.JGUIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SID { + get { + if (this.IsSIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.SIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.SIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string SID0 { + get { + if (this.IsSID0Null()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.SID0Column])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.SID0Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string RID { + get { + if (this.IsRIDNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.RIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.RIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string RID0 { + get { + if (this.IsRID0Null()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.RID0Column])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.RID0Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string RSN { + get { + if (this.IsRSNNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.RSNColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.RSNColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string QR { + get { + if (this.IsQRNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.QRColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.QRColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ZPL { + get { + if (this.IsZPLNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.ZPLColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ZPLColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string POS { + get { + if (this.IsPOSNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.POSColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.POSColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string LOC { + get { + if (this.IsLOCNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.LOCColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.LOCColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public double ANGLE { + get { + if (this.IsANGLENull()) { + return -1D; + } + else { + return ((double)(this[this.tableK4EE_Component_Reel_Result.ANGLEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.ANGLEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int QTY { + get { + if (this.IsQTYNull()) { + return -1; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_Result.QTYColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.QTYColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int QTY0 { + get { + if (this.IsQTY0Null()) { + return -1; + } + else { + return ((int)(this[this.tableK4EE_Component_Reel_Result.QTY0Column])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.QTY0Column] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VNAME { + get { + if (this.IsVNAMENull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.VNAMEColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.VNAMEColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool PRNATTACH { + get { + if (this.IsPRNATTACHNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_Result.PRNATTACHColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PRNATTACHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool PRNVALID { + get { + if (this.IsPRNVALIDNull()) { + return false; + } + else { + return ((bool)(this[this.tableK4EE_Component_Reel_Result.PRNVALIDColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.PRNVALIDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public System.DateTime wdate { + get { + return ((global::System.DateTime)(this[this.tableK4EE_Component_Reel_Result.wdateColumn])); + } + set { + this[this.tableK4EE_Component_Reel_Result.wdateColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string VLOT { + get { + if (this.IsVLOTNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.VLOTColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.VLOTColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string BATCH { + get { + if (this.IsBATCHNull()) { + return string.Empty; + } + else { + return ((string)(this[this.tableK4EE_Component_Reel_Result.BATCHColumn])); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.BATCHColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int qtymax { + get { + try { + return ((int)(this[this.tableK4EE_Component_Reel_Result.qtymaxColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("\'K4EE_Component_Reel_Result\' 테이블의 \'qtymax\' 열의 값이 DBNull입니다.", e); + } + } + set { + this[this.tableK4EE_Component_Reel_Result.qtymaxColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsETIMENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ETIMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetETIMENull() { + this[this.tableK4EE_Component_Reel_Result.ETIMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPDATENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PDATEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPDATENull() { + this[this.tableK4EE_Component_Reel_Result.PDATEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsJTYPENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.JTYPEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetJTYPENull() { + this[this.tableK4EE_Component_Reel_Result.JTYPEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsJGUIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.JGUIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetJGUIDNull() { + this[this.tableK4EE_Component_Reel_Result.JGUIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.SIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSIDNull() { + this[this.tableK4EE_Component_Reel_Result.SIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsSID0Null() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.SID0Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetSID0Null() { + this[this.tableK4EE_Component_Reel_Result.SID0Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsRIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.RIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetRIDNull() { + this[this.tableK4EE_Component_Reel_Result.RIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsRID0Null() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.RID0Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetRID0Null() { + this[this.tableK4EE_Component_Reel_Result.RID0Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsRSNNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.RSNColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetRSNNull() { + this[this.tableK4EE_Component_Reel_Result.RSNColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsQRNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.QRColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetQRNull() { + this[this.tableK4EE_Component_Reel_Result.QRColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsZPLNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ZPLColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetZPLNull() { + this[this.tableK4EE_Component_Reel_Result.ZPLColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPOSNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.POSColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPOSNull() { + this[this.tableK4EE_Component_Reel_Result.POSColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsLOCNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.LOCColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetLOCNull() { + this[this.tableK4EE_Component_Reel_Result.LOCColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsANGLENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.ANGLEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetANGLENull() { + this[this.tableK4EE_Component_Reel_Result.ANGLEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsQTYNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.QTYColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetQTYNull() { + this[this.tableK4EE_Component_Reel_Result.QTYColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsQTY0Null() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.QTY0Column); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetQTY0Null() { + this[this.tableK4EE_Component_Reel_Result.QTY0Column] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVNAMENull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.VNAMEColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVNAMENull() { + this[this.tableK4EE_Component_Reel_Result.VNAMEColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPRNATTACHNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PRNATTACHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPRNATTACHNull() { + this[this.tableK4EE_Component_Reel_Result.PRNATTACHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsPRNVALIDNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.PRNVALIDColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetPRNVALIDNull() { + this[this.tableK4EE_Component_Reel_Result.PRNVALIDColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsVLOTNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.VLOTColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetVLOTNull() { + this[this.tableK4EE_Component_Reel_Result.VLOTColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsBATCHNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.BATCHColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetBATCHNull() { + this[this.tableK4EE_Component_Reel_Result.BATCHColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsqtymaxNull() { + return this.IsNull(this.tableK4EE_Component_Reel_Result.qtymaxColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetqtymaxNull() { + this[this.tableK4EE_Component_Reel_Result.qtymaxColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class K4EE_Component_Reel_ResultRowChangeEvent : global::System.EventArgs { + + private K4EE_Component_Reel_ResultRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultRowChangeEvent(K4EE_Component_Reel_ResultRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} +namespace ResultView.DataSet1TableAdapters { + + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class K4EE_Component_Reel_ResultTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public K4EE_Component_Reel_ResultTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "K4EE_Component_Reel_Result"; + tableMapping.ColumnMappings.Add("idx", "idx"); + tableMapping.ColumnMappings.Add("STIME", "STIME"); + tableMapping.ColumnMappings.Add("ETIME", "ETIME"); + tableMapping.ColumnMappings.Add("PDATE", "PDATE"); + tableMapping.ColumnMappings.Add("JTYPE", "JTYPE"); + tableMapping.ColumnMappings.Add("JGUID", "JGUID"); + tableMapping.ColumnMappings.Add("SID", "SID"); + tableMapping.ColumnMappings.Add("SID0", "SID0"); + tableMapping.ColumnMappings.Add("RID", "RID"); + tableMapping.ColumnMappings.Add("RID0", "RID0"); + tableMapping.ColumnMappings.Add("RSN", "RSN"); + tableMapping.ColumnMappings.Add("QR", "QR"); + tableMapping.ColumnMappings.Add("ZPL", "ZPL"); + tableMapping.ColumnMappings.Add("POS", "POS"); + tableMapping.ColumnMappings.Add("LOC", "LOC"); + tableMapping.ColumnMappings.Add("ANGLE", "ANGLE"); + tableMapping.ColumnMappings.Add("QTY", "QTY"); + tableMapping.ColumnMappings.Add("QTY0", "QTY0"); + tableMapping.ColumnMappings.Add("VNAME", "VNAME"); + tableMapping.ColumnMappings.Add("PRNATTACH", "PRNATTACH"); + tableMapping.ColumnMappings.Add("PRNVALID", "PRNVALID"); + tableMapping.ColumnMappings.Add("wdate", "wdate"); + tableMapping.ColumnMappings.Add("VLOT", "VLOT"); + tableMapping.ColumnMappings.Add("BATCH", "BATCH"); + tableMapping.ColumnMappings.Add("-1", "qtymax"); + tableMapping.ColumnMappings.Add("qtymax", "qtymax"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = "DELETE FROM [K4EE_Component_Reel_Result] WHERE (([idx] = @Original_idx) AND ([STI" + + "ME] = @Original_STIME) AND ((@IsNull_ETIME = 1 AND [ETIME] IS NULL) OR ([ETIME] " + + "= @Original_ETIME)) AND ((@IsNull_PDATE = 1 AND [PDATE] IS NULL) OR ([PDATE] = @" + + "Original_PDATE)) AND ((@IsNull_JTYPE = 1 AND [JTYPE] IS NULL) OR ([JTYPE] = @Ori" + + "ginal_JTYPE)) AND ((@IsNull_JGUID = 1 AND [JGUID] IS NULL) OR ([JGUID] = @Origin" + + "al_JGUID)) AND ((@IsNull_SID = 1 AND [SID] IS NULL) OR ([SID] = @Original_SID)) " + + "AND ((@IsNull_SID0 = 1 AND [SID0] IS NULL) OR ([SID0] = @Original_SID0)) AND ((@" + + "IsNull_RID = 1 AND [RID] IS NULL) OR ([RID] = @Original_RID)) AND ((@IsNull_RID0" + + " = 1 AND [RID0] IS NULL) OR ([RID0] = @Original_RID0)) AND ((@IsNull_RSN = 1 AND" + + " [RSN] IS NULL) OR ([RSN] = @Original_RSN)) AND ((@IsNull_QR = 1 AND [QR] IS NUL" + + "L) OR ([QR] = @Original_QR)) AND ((@IsNull_ZPL = 1 AND [ZPL] IS NULL) OR ([ZPL] " + + "= @Original_ZPL)) AND ((@IsNull_POS = 1 AND [POS] IS NULL) OR ([POS] = @Original" + + "_POS)) AND ((@IsNull_LOC = 1 AND [LOC] IS NULL) OR ([LOC] = @Original_LOC)) AND " + + "((@IsNull_ANGLE = 1 AND [ANGLE] IS NULL) OR ([ANGLE] = @Original_ANGLE)) AND ((@" + + "IsNull_QTY = 1 AND [QTY] IS NULL) OR ([QTY] = @Original_QTY)) AND ((@IsNull_QTY0" + + " = 1 AND [QTY0] IS NULL) OR ([QTY0] = @Original_QTY0)) AND ((@IsNull_VNAME = 1 A" + + "ND [VNAME] IS NULL) OR ([VNAME] = @Original_VNAME)) AND ((@IsNull_PRNATTACH = 1 " + + "AND [PRNATTACH] IS NULL) OR ([PRNATTACH] = @Original_PRNATTACH)) AND ((@IsNull_P" + + "RNVALID = 1 AND [PRNVALID] IS NULL) OR ([PRNVALID] = @Original_PRNVALID)) AND ([" + + "wdate] = @Original_wdate) AND ((@IsNull_VLOT = 1 AND [VLOT] IS NULL) OR ([VLOT] " + + "= @Original_VLOT)) AND ((@IsNull_BATCH = 1 AND [BATCH] IS NULL) OR ([BATCH] = @O" + + "riginal_BATCH)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @O" + + "riginal_qtymax)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_STIME", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ETIME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ETIME", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PDATE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PDATE", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_JTYPE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JTYPE", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_JGUID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JGUID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SID0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID0", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RID0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RID0", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RSN", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RSN", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QR", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QR", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ZPL", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ZPL", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_POS", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_POS", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_LOC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_LOC", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ANGLE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ANGLE", global::System.Data.SqlDbType.Float, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QTY", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QTY", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QTY0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QTY0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VNAME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VNAME", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PRNATTACH", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PRNATTACH", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PRNVALID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PRNVALID", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VLOT", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VLOT", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_BATCH", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BATCH", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [K4EE_Component_Reel_Result] ([STIME], [ETIME], [PDATE], [JTYPE], [JGUID], [SID], [SID0], [RID], [RID0], [RSN], [QR], [ZPL], [POS], [LOC], [ANGLE], [QTY], [QTY0], [VNAME], [PRNATTACH], [PRNVALID], [wdate], [VLOT], [BATCH], [qtymax]) VALUES (@STIME, @ETIME, @PDATE, @JTYPE, @JGUID, @SID, @SID0, @RID, @RID0, @RSN, @QR, @ZPL, @POS, @LOC, @ANGLE, @QTY, @QTY0, @VNAME, @PRNATTACH, @PRNVALID, @wdate, @VLOT, @BATCH, @qtymax); +SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALID, wdate, VLOT, BATCH, qtymax FROM Component_Reel_Result WHERE (idx = SCOPE_IDENTITY()) ORDER BY wdate DESC"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@STIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ETIME", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PDATE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JTYPE", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JGUID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID0", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID0", global::System.Data.SqlDbType.VarChar, 50, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RSN", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QR", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ZPL", global::System.Data.SqlDbType.VarChar, 1000, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@POS", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@LOC", global::System.Data.SqlDbType.VarChar, 1, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ANGLE", global::System.Data.SqlDbType.Float, 8, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY0", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VNAME", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNATTACH", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNVALID", global::System.Data.SqlDbType.Bit, 1, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VLOT", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BATCH", global::System.Data.SqlDbType.VarChar, 100, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@qtymax", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = "UPDATE [K4EE_Component_Reel_Result] SET [STIME] = @STIME, [ETIME] = @ETIME, [PDAT" + + "E] = @PDATE, [JTYPE] = @JTYPE, [JGUID] = @JGUID, [SID] = @SID, [SID0] = @SID0, [" + + "RID] = @RID, [RID0] = @RID0, [RSN] = @RSN, [QR] = @QR, [ZPL] = @ZPL, [POS] = @PO" + + "S, [LOC] = @LOC, [ANGLE] = @ANGLE, [QTY] = @QTY, [QTY0] = @QTY0, [VNAME] = @VNAM" + + "E, [PRNATTACH] = @PRNATTACH, [PRNVALID] = @PRNVALID, [wdate] = @wdate, [VLOT] = " + + "@VLOT, [BATCH] = @BATCH, [qtymax] = @qtymax WHERE (([idx] = @Original_idx) AND (" + + "[STIME] = @Original_STIME) AND ((@IsNull_ETIME = 1 AND [ETIME] IS NULL) OR ([ETI" + + "ME] = @Original_ETIME)) AND ((@IsNull_PDATE = 1 AND [PDATE] IS NULL) OR ([PDATE]" + + " = @Original_PDATE)) AND ((@IsNull_JTYPE = 1 AND [JTYPE] IS NULL) OR ([JTYPE] = " + + "@Original_JTYPE)) AND ((@IsNull_JGUID = 1 AND [JGUID] IS NULL) OR ([JGUID] = @Or" + + "iginal_JGUID)) AND ((@IsNull_SID = 1 AND [SID] IS NULL) OR ([SID] = @Original_SI" + + "D)) AND ((@IsNull_SID0 = 1 AND [SID0] IS NULL) OR ([SID0] = @Original_SID0)) AND" + + " ((@IsNull_RID = 1 AND [RID] IS NULL) OR ([RID] = @Original_RID)) AND ((@IsNull_" + + "RID0 = 1 AND [RID0] IS NULL) OR ([RID0] = @Original_RID0)) AND ((@IsNull_RSN = 1" + + " AND [RSN] IS NULL) OR ([RSN] = @Original_RSN)) AND ((@IsNull_QR = 1 AND [QR] IS" + + " NULL) OR ([QR] = @Original_QR)) AND ((@IsNull_ZPL = 1 AND [ZPL] IS NULL) OR ([Z" + + "PL] = @Original_ZPL)) AND ((@IsNull_POS = 1 AND [POS] IS NULL) OR ([POS] = @Orig" + + "inal_POS)) AND ((@IsNull_LOC = 1 AND [LOC] IS NULL) OR ([LOC] = @Original_LOC)) " + + "AND ((@IsNull_ANGLE = 1 AND [ANGLE] IS NULL) OR ([ANGLE] = @Original_ANGLE)) AND" + + " ((@IsNull_QTY = 1 AND [QTY] IS NULL) OR ([QTY] = @Original_QTY)) AND ((@IsNull_" + + "QTY0 = 1 AND [QTY0] IS NULL) OR ([QTY0] = @Original_QTY0)) AND ((@IsNull_VNAME =" + + " 1 AND [VNAME] IS NULL) OR ([VNAME] = @Original_VNAME)) AND ((@IsNull_PRNATTACH " + + "= 1 AND [PRNATTACH] IS NULL) OR ([PRNATTACH] = @Original_PRNATTACH)) AND ((@IsNu" + + "ll_PRNVALID = 1 AND [PRNVALID] IS NULL) OR ([PRNVALID] = @Original_PRNVALID)) AN" + + "D ([wdate] = @Original_wdate) AND ((@IsNull_VLOT = 1 AND [VLOT] IS NULL) OR ([VL" + + "OT] = @Original_VLOT)) AND ((@IsNull_BATCH = 1 AND [BATCH] IS NULL) OR ([BATCH] " + + "= @Original_BATCH)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] " + + "= @Original_qtymax)));\r\nSELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0" + + ", RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALI" + + "D, wdate, VLOT, BATCH, qtymax FROM K4EE_Component_Reel_Result WITH (nolock) WHER" + + "E (idx = @idx) ORDER BY wdate DESC"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@STIME", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ETIME", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PDATE", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JTYPE", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@JGUID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@SID0", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RID0", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@RSN", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QR", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ZPL", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@POS", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@LOC", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ANGLE", global::System.Data.SqlDbType.Float, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@QTY0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VNAME", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNATTACH", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PRNVALID", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@VLOT", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BATCH", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_idx", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_STIME", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "STIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ETIME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ETIME", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ETIME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PDATE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PDATE", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PDATE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_JTYPE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JTYPE", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JTYPE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_JGUID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_JGUID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "JGUID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_SID0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_SID0", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "SID0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RID", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RID0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RID0", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RID0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_RSN", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_RSN", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "RSN", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QR", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QR", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QR", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ZPL", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ZPL", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ZPL", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_POS", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_POS", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "POS", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_LOC", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_LOC", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "LOC", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_ANGLE", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_ANGLE", global::System.Data.SqlDbType.Float, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ANGLE", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QTY", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QTY", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_QTY0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_QTY0", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "QTY0", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VNAME", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VNAME", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VNAME", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PRNATTACH", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PRNATTACH", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNATTACH", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_PRNVALID", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PRNVALID", global::System.Data.SqlDbType.Bit, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PRNVALID", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_wdate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "wdate", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_VLOT", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_VLOT", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "VLOT", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_BATCH", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BATCH", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BATCH", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_qtymax", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "qtymax", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@idx", global::System.Data.SqlDbType.Int, 4, global::System.Data.ParameterDirection.Input, 0, 0, "idx", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::ResultView.Properties.Settings.Default.cs; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = @"SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALID, wdate, VLOT, BATCH, qtymax +FROM K4EE_Component_Reel_Result WITH (nolock) +WHERE (MC = @mc) AND (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(QR, '') LIKE @search) +ORDER BY wdate DESC"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@mc", global::System.Data.SqlDbType.VarChar, 10, global::System.Data.ParameterDirection.Input, 0, 0, "MC", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@sd", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ed", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._commandCollection[0].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@search", global::System.Data.SqlDbType.VarChar, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable, string mc, string sd, string ed, string search) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(ed)); + } + if ((search == null)) { + throw new global::System.ArgumentNullException("search"); + } + else { + this.Adapter.SelectCommand.Parameters[3].Value = ((string)(search)); + } + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual DataSet1.K4EE_Component_Reel_ResultDataTable GetData(string mc, string sd, string ed, string search) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((mc == null)) { + throw new global::System.ArgumentNullException("mc"); + } + else { + this.Adapter.SelectCommand.Parameters[0].Value = ((string)(mc)); + } + if ((sd == null)) { + throw new global::System.ArgumentNullException("sd"); + } + else { + this.Adapter.SelectCommand.Parameters[1].Value = ((string)(sd)); + } + if ((ed == null)) { + throw new global::System.ArgumentNullException("ed"); + } + else { + this.Adapter.SelectCommand.Parameters[2].Value = ((string)(ed)); + } + if ((search == null)) { + throw new global::System.ArgumentNullException("search"); + } + else { + this.Adapter.SelectCommand.Parameters[3].Value = ((string)(search)); + } + DataSet1.K4EE_Component_Reel_ResultDataTable dataTable = new DataSet1.K4EE_Component_Reel_ResultDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1.K4EE_Component_Reel_ResultDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(DataSet1 dataSet) { + return this.Adapter.Update(dataSet, "K4EE_Component_Reel_Result"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete( + int Original_idx, + System.DateTime Original_STIME, + global::System.Nullable Original_ETIME, + string Original_PDATE, + string Original_JTYPE, + string Original_JGUID, + string Original_SID, + string Original_SID0, + string Original_RID, + string Original_RID0, + string Original_RSN, + string Original_QR, + string Original_ZPL, + string Original_POS, + string Original_LOC, + global::System.Nullable Original_ANGLE, + global::System.Nullable Original_QTY, + global::System.Nullable Original_QTY0, + string Original_VNAME, + global::System.Nullable Original_PRNATTACH, + global::System.Nullable Original_PRNVALID, + System.DateTime Original_wdate, + string Original_VLOT, + string Original_BATCH, + global::System.Nullable Original_qtymax) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((int)(Original_idx)); + this.Adapter.DeleteCommand.Parameters[1].Value = ((System.DateTime)(Original_STIME)); + if ((Original_ETIME.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[3].Value = ((System.DateTime)(Original_ETIME.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[2].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((Original_PDATE == null)) { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[4].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[5].Value = ((string)(Original_PDATE)); + } + if ((Original_JTYPE == null)) { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[7].Value = ((string)(Original_JTYPE)); + } + if ((Original_JGUID == null)) { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[9].Value = ((string)(Original_JGUID)); + } + if ((Original_SID == null)) { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[10].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[11].Value = ((string)(Original_SID)); + } + if ((Original_SID0 == null)) { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[13].Value = ((string)(Original_SID0)); + } + if ((Original_RID == null)) { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[15].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[14].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[15].Value = ((string)(Original_RID)); + } + if ((Original_RID0 == null)) { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[17].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[16].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[17].Value = ((string)(Original_RID0)); + } + if ((Original_RSN == null)) { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[19].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[18].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[19].Value = ((string)(Original_RSN)); + } + if ((Original_QR == null)) { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[21].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[20].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[21].Value = ((string)(Original_QR)); + } + if ((Original_ZPL == null)) { + this.Adapter.DeleteCommand.Parameters[22].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[23].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[22].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[23].Value = ((string)(Original_ZPL)); + } + if ((Original_POS == null)) { + this.Adapter.DeleteCommand.Parameters[24].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[25].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[24].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[25].Value = ((string)(Original_POS)); + } + if ((Original_LOC == null)) { + this.Adapter.DeleteCommand.Parameters[26].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[27].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[26].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[27].Value = ((string)(Original_LOC)); + } + if ((Original_ANGLE.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[28].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[29].Value = ((double)(Original_ANGLE.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[28].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[29].Value = global::System.DBNull.Value; + } + if ((Original_QTY.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[30].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[31].Value = ((int)(Original_QTY.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[30].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[31].Value = global::System.DBNull.Value; + } + if ((Original_QTY0.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[32].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[33].Value = ((int)(Original_QTY0.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[32].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[33].Value = global::System.DBNull.Value; + } + if ((Original_VNAME == null)) { + this.Adapter.DeleteCommand.Parameters[34].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[35].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[34].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[35].Value = ((string)(Original_VNAME)); + } + if ((Original_PRNATTACH.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[36].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[37].Value = ((bool)(Original_PRNATTACH.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[36].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[37].Value = global::System.DBNull.Value; + } + if ((Original_PRNVALID.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[38].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[39].Value = ((bool)(Original_PRNVALID.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[38].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[39].Value = global::System.DBNull.Value; + } + this.Adapter.DeleteCommand.Parameters[40].Value = ((System.DateTime)(Original_wdate)); + if ((Original_VLOT == null)) { + this.Adapter.DeleteCommand.Parameters[41].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[42].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[41].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[42].Value = ((string)(Original_VLOT)); + } + if ((Original_BATCH == null)) { + this.Adapter.DeleteCommand.Parameters[43].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[44].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[43].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[44].Value = ((string)(Original_BATCH)); + } + if ((Original_qtymax.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[45].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[46].Value = ((int)(Original_qtymax.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[45].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[46].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert( + System.DateTime STIME, + global::System.Nullable ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + global::System.Nullable ANGLE, + global::System.Nullable QTY, + global::System.Nullable QTY0, + string VNAME, + global::System.Nullable PRNATTACH, + global::System.Nullable PRNVALID, + System.DateTime wdate, + string VLOT, + string BATCH, + global::System.Nullable qtymax) { + this.Adapter.InsertCommand.Parameters[0].Value = ((System.DateTime)(STIME)); + if ((ETIME.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[1].Value = ((System.DateTime)(ETIME.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + if ((PDATE == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(PDATE)); + } + if ((JTYPE == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(JTYPE)); + } + if ((JGUID == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(JGUID)); + } + if ((SID == null)) { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = ((string)(SID)); + } + if ((SID0 == null)) { + this.Adapter.InsertCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[6].Value = ((string)(SID0)); + } + if ((RID == null)) { + this.Adapter.InsertCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[7].Value = ((string)(RID)); + } + if ((RID0 == null)) { + this.Adapter.InsertCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[8].Value = ((string)(RID0)); + } + if ((RSN == null)) { + this.Adapter.InsertCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[9].Value = ((string)(RSN)); + } + if ((QR == null)) { + this.Adapter.InsertCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[10].Value = ((string)(QR)); + } + if ((ZPL == null)) { + this.Adapter.InsertCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[11].Value = ((string)(ZPL)); + } + if ((POS == null)) { + this.Adapter.InsertCommand.Parameters[12].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[12].Value = ((string)(POS)); + } + if ((LOC == null)) { + this.Adapter.InsertCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[13].Value = ((string)(LOC)); + } + if ((ANGLE.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[14].Value = ((double)(ANGLE.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[14].Value = global::System.DBNull.Value; + } + if ((QTY.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[15].Value = ((int)(QTY.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[15].Value = global::System.DBNull.Value; + } + if ((QTY0.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[16].Value = ((int)(QTY0.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[16].Value = global::System.DBNull.Value; + } + if ((VNAME == null)) { + this.Adapter.InsertCommand.Parameters[17].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[17].Value = ((string)(VNAME)); + } + if ((PRNATTACH.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[18].Value = ((bool)(PRNATTACH.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[18].Value = global::System.DBNull.Value; + } + if ((PRNVALID.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[19].Value = ((bool)(PRNVALID.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[19].Value = global::System.DBNull.Value; + } + this.Adapter.InsertCommand.Parameters[20].Value = ((System.DateTime)(wdate)); + if ((VLOT == null)) { + this.Adapter.InsertCommand.Parameters[21].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[21].Value = ((string)(VLOT)); + } + if ((BATCH == null)) { + this.Adapter.InsertCommand.Parameters[22].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[22].Value = ((string)(BATCH)); + } + if ((qtymax.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[23].Value = ((int)(qtymax.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[23].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + System.DateTime STIME, + global::System.Nullable ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + global::System.Nullable ANGLE, + global::System.Nullable QTY, + global::System.Nullable QTY0, + string VNAME, + global::System.Nullable PRNATTACH, + global::System.Nullable PRNVALID, + System.DateTime wdate, + string VLOT, + string BATCH, + global::System.Nullable qtymax, + int Original_idx, + System.DateTime Original_STIME, + global::System.Nullable Original_ETIME, + string Original_PDATE, + string Original_JTYPE, + string Original_JGUID, + string Original_SID, + string Original_SID0, + string Original_RID, + string Original_RID0, + string Original_RSN, + string Original_QR, + string Original_ZPL, + string Original_POS, + string Original_LOC, + global::System.Nullable Original_ANGLE, + global::System.Nullable Original_QTY, + global::System.Nullable Original_QTY0, + string Original_VNAME, + global::System.Nullable Original_PRNATTACH, + global::System.Nullable Original_PRNVALID, + System.DateTime Original_wdate, + string Original_VLOT, + string Original_BATCH, + global::System.Nullable Original_qtymax, + int idx) { + this.Adapter.UpdateCommand.Parameters[0].Value = ((System.DateTime)(STIME)); + if ((ETIME.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[1].Value = ((System.DateTime)(ETIME.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value; + } + if ((PDATE == null)) { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(PDATE)); + } + if ((JTYPE == null)) { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(JTYPE)); + } + if ((JGUID == null)) { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = ((string)(JGUID)); + } + if ((SID == null)) { + this.Adapter.UpdateCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[5].Value = ((string)(SID)); + } + if ((SID0 == null)) { + this.Adapter.UpdateCommand.Parameters[6].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = ((string)(SID0)); + } + if ((RID == null)) { + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(RID)); + } + if ((RID0 == null)) { + this.Adapter.UpdateCommand.Parameters[8].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(RID0)); + } + if ((RSN == null)) { + this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[9].Value = ((string)(RSN)); + } + if ((QR == null)) { + this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[10].Value = ((string)(QR)); + } + if ((ZPL == null)) { + this.Adapter.UpdateCommand.Parameters[11].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[11].Value = ((string)(ZPL)); + } + if ((POS == null)) { + this.Adapter.UpdateCommand.Parameters[12].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[12].Value = ((string)(POS)); + } + if ((LOC == null)) { + this.Adapter.UpdateCommand.Parameters[13].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[13].Value = ((string)(LOC)); + } + if ((ANGLE.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[14].Value = ((double)(ANGLE.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[14].Value = global::System.DBNull.Value; + } + if ((QTY.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[15].Value = ((int)(QTY.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[15].Value = global::System.DBNull.Value; + } + if ((QTY0.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[16].Value = ((int)(QTY0.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[16].Value = global::System.DBNull.Value; + } + if ((VNAME == null)) { + this.Adapter.UpdateCommand.Parameters[17].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[17].Value = ((string)(VNAME)); + } + if ((PRNATTACH.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[18].Value = ((bool)(PRNATTACH.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[18].Value = global::System.DBNull.Value; + } + if ((PRNVALID.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[19].Value = ((bool)(PRNVALID.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[19].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[20].Value = ((System.DateTime)(wdate)); + if ((VLOT == null)) { + this.Adapter.UpdateCommand.Parameters[21].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[21].Value = ((string)(VLOT)); + } + if ((BATCH == null)) { + this.Adapter.UpdateCommand.Parameters[22].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[22].Value = ((string)(BATCH)); + } + if ((qtymax.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[23].Value = ((int)(qtymax.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[23].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[24].Value = ((int)(Original_idx)); + this.Adapter.UpdateCommand.Parameters[25].Value = ((System.DateTime)(Original_STIME)); + if ((Original_ETIME.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[26].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[27].Value = ((System.DateTime)(Original_ETIME.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[26].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[27].Value = global::System.DBNull.Value; + } + if ((Original_PDATE == null)) { + this.Adapter.UpdateCommand.Parameters[28].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[29].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[28].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[29].Value = ((string)(Original_PDATE)); + } + if ((Original_JTYPE == null)) { + this.Adapter.UpdateCommand.Parameters[30].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[31].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[30].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[31].Value = ((string)(Original_JTYPE)); + } + if ((Original_JGUID == null)) { + this.Adapter.UpdateCommand.Parameters[32].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[33].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[32].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[33].Value = ((string)(Original_JGUID)); + } + if ((Original_SID == null)) { + this.Adapter.UpdateCommand.Parameters[34].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[35].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[34].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[35].Value = ((string)(Original_SID)); + } + if ((Original_SID0 == null)) { + this.Adapter.UpdateCommand.Parameters[36].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[37].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[36].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[37].Value = ((string)(Original_SID0)); + } + if ((Original_RID == null)) { + this.Adapter.UpdateCommand.Parameters[38].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[39].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[38].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[39].Value = ((string)(Original_RID)); + } + if ((Original_RID0 == null)) { + this.Adapter.UpdateCommand.Parameters[40].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[41].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[40].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[41].Value = ((string)(Original_RID0)); + } + if ((Original_RSN == null)) { + this.Adapter.UpdateCommand.Parameters[42].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[43].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[42].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[43].Value = ((string)(Original_RSN)); + } + if ((Original_QR == null)) { + this.Adapter.UpdateCommand.Parameters[44].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[45].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[44].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[45].Value = ((string)(Original_QR)); + } + if ((Original_ZPL == null)) { + this.Adapter.UpdateCommand.Parameters[46].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[47].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[46].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[47].Value = ((string)(Original_ZPL)); + } + if ((Original_POS == null)) { + this.Adapter.UpdateCommand.Parameters[48].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[49].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[48].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[49].Value = ((string)(Original_POS)); + } + if ((Original_LOC == null)) { + this.Adapter.UpdateCommand.Parameters[50].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[51].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[50].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[51].Value = ((string)(Original_LOC)); + } + if ((Original_ANGLE.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[52].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[53].Value = ((double)(Original_ANGLE.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[52].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[53].Value = global::System.DBNull.Value; + } + if ((Original_QTY.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[54].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[55].Value = ((int)(Original_QTY.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[54].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[55].Value = global::System.DBNull.Value; + } + if ((Original_QTY0.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[56].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[57].Value = ((int)(Original_QTY0.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[56].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[57].Value = global::System.DBNull.Value; + } + if ((Original_VNAME == null)) { + this.Adapter.UpdateCommand.Parameters[58].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[59].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[58].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[59].Value = ((string)(Original_VNAME)); + } + if ((Original_PRNATTACH.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[60].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[61].Value = ((bool)(Original_PRNATTACH.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[60].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[61].Value = global::System.DBNull.Value; + } + if ((Original_PRNVALID.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[62].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[63].Value = ((bool)(Original_PRNVALID.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[62].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[63].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[64].Value = ((System.DateTime)(Original_wdate)); + if ((Original_VLOT == null)) { + this.Adapter.UpdateCommand.Parameters[65].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[66].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[65].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[66].Value = ((string)(Original_VLOT)); + } + if ((Original_BATCH == null)) { + this.Adapter.UpdateCommand.Parameters[67].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[68].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[67].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[68].Value = ((string)(Original_BATCH)); + } + if ((Original_qtymax.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[69].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[70].Value = ((int)(Original_qtymax.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[69].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[70].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[71].Value = ((int)(idx)); + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update( + System.DateTime STIME, + global::System.Nullable ETIME, + string PDATE, + string JTYPE, + string JGUID, + string SID, + string SID0, + string RID, + string RID0, + string RSN, + string QR, + string ZPL, + string POS, + string LOC, + global::System.Nullable ANGLE, + global::System.Nullable QTY, + global::System.Nullable QTY0, + string VNAME, + global::System.Nullable PRNATTACH, + global::System.Nullable PRNVALID, + System.DateTime wdate, + string VLOT, + string BATCH, + global::System.Nullable qtymax, + int Original_idx, + System.DateTime Original_STIME, + global::System.Nullable Original_ETIME, + string Original_PDATE, + string Original_JTYPE, + string Original_JGUID, + string Original_SID, + string Original_SID0, + string Original_RID, + string Original_RID0, + string Original_RSN, + string Original_QR, + string Original_ZPL, + string Original_POS, + string Original_LOC, + global::System.Nullable Original_ANGLE, + global::System.Nullable Original_QTY, + global::System.Nullable Original_QTY0, + string Original_VNAME, + global::System.Nullable Original_PRNATTACH, + global::System.Nullable Original_PRNVALID, + System.DateTime Original_wdate, + string Original_VLOT, + string Original_BATCH, + global::System.Nullable Original_qtymax) { + return this.Update(STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALID, wdate, VLOT, BATCH, qtymax, Original_idx, Original_STIME, Original_ETIME, Original_PDATE, Original_JTYPE, Original_JGUID, Original_SID, Original_SID0, Original_RID, Original_RID0, Original_RSN, Original_QR, Original_ZPL, Original_POS, Original_LOC, Original_ANGLE, Original_QTY, Original_QTY0, Original_VNAME, Original_PRNATTACH, Original_PRNVALID, Original_wdate, Original_VLOT, Original_BATCH, Original_qtymax, Original_idx); + } + } + + /// + ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" + + "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")] + public partial class TableAdapterManager : global::System.ComponentModel.Component { + + private UpdateOrderOption _updateOrder; + + private K4EE_Component_Reel_ResultTableAdapter _k4EE_Component_Reel_ResultTableAdapter; + + private bool _backupDataSetBeforeUpdate; + + private global::System.Data.IDbConnection _connection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public UpdateOrderOption UpdateOrder { + get { + return this._updateOrder; + } + set { + this._updateOrder = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public K4EE_Component_Reel_ResultTableAdapter K4EE_Component_Reel_ResultTableAdapter { + get { + return this._k4EE_Component_Reel_ResultTableAdapter; + } + set { + this._k4EE_Component_Reel_ResultTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool BackupDataSetBeforeUpdate { + get { + return this._backupDataSetBeforeUpdate; + } + set { + this._backupDataSetBeforeUpdate = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public global::System.Data.IDbConnection Connection { + get { + if ((this._connection != null)) { + return this._connection; + } + if (((this._k4EE_Component_Reel_ResultTableAdapter != null) + && (this._k4EE_Component_Reel_ResultTableAdapter.Connection != null))) { + return this._k4EE_Component_Reel_ResultTableAdapter.Connection; + } + return null; + } + set { + this._connection = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int TableAdapterInstanceCount { + get { + int count = 0; + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + count = (count + 1); + } + return count; + } + } + + /// + ///Update rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateUpdatedRows(DataSet1 dataSet, global::System.Collections.Generic.List allChangedRows, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.K4EE_Component_Reel_Result.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._k4EE_Component_Reel_ResultTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + return result; + } + + /// + ///Insert rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateInsertedRows(DataSet1 dataSet, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.K4EE_Component_Reel_Result.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._k4EE_Component_Reel_ResultTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + return result; + } + + /// + ///Delete rows in bottom-up order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateDeletedRows(DataSet1 dataSet, global::System.Collections.Generic.List allChangedRows) { + int result = 0; + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.K4EE_Component_Reel_Result.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._k4EE_Component_Reel_ResultTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + return result; + } + + /// + ///Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List allAddedRows) { + if (((updatedRows == null) + || (updatedRows.Length < 1))) { + return updatedRows; + } + if (((allAddedRows == null) + || (allAddedRows.Count < 1))) { + return updatedRows; + } + global::System.Collections.Generic.List realUpdatedRows = new global::System.Collections.Generic.List(); + for (int i = 0; (i < updatedRows.Length); i = (i + 1)) { + global::System.Data.DataRow row = updatedRows[i]; + if ((allAddedRows.Contains(row) == false)) { + realUpdatedRows.Add(row); + } + } + return realUpdatedRows.ToArray(); + } + + /// + ///Update all changes to the dataset. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public virtual int UpdateAll(DataSet1 dataSet) { + if ((dataSet == null)) { + throw new global::System.ArgumentNullException("dataSet"); + } + if ((dataSet.HasChanges() == false)) { + return 0; + } + if (((this._k4EE_Component_Reel_ResultTableAdapter != null) + && (this.MatchTableAdapterConnection(this._k4EE_Component_Reel_ResultTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("TableAdapterManager에서 관리하는 모든 TableAdapter에는 동일한 연결 문자열을 사용해야 합니다."); + } + global::System.Data.IDbConnection workConnection = this.Connection; + if ((workConnection == null)) { + throw new global::System.ApplicationException("TableAdapterManager에 연결 정보가 없습니다. 각 TableAdapterManager TableAdapter 속성을 올바른 Tabl" + + "eAdapter 인스턴스로 설정하십시오."); + } + bool workConnOpened = false; + if (((workConnection.State & global::System.Data.ConnectionState.Broken) + == global::System.Data.ConnectionState.Broken)) { + workConnection.Close(); + } + if ((workConnection.State == global::System.Data.ConnectionState.Closed)) { + workConnection.Open(); + workConnOpened = true; + } + global::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction(); + if ((workTransaction == null)) { + throw new global::System.ApplicationException("트랜잭션을 시작할 수 없습니다. 현재 데이터 연결에서 트랜잭션이 지원되지 않거나 현재 상태에서 트랜잭션을 시작할 수 없습니다."); + } + global::System.Collections.Generic.List allChangedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List allAddedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.Dictionary revertConnections = new global::System.Collections.Generic.Dictionary(); + int result = 0; + global::System.Data.DataSet backupDataSet = null; + if (this.BackupDataSetBeforeUpdate) { + backupDataSet = new global::System.Data.DataSet(); + backupDataSet.Merge(dataSet); + } + try { + // ---- Prepare for update ----------- + // + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + revertConnections.Add(this._k4EE_Component_Reel_ResultTableAdapter, this._k4EE_Component_Reel_ResultTableAdapter.Connection); + this._k4EE_Component_Reel_ResultTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._k4EE_Component_Reel_ResultTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._k4EE_Component_Reel_ResultTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._k4EE_Component_Reel_ResultTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._k4EE_Component_Reel_ResultTableAdapter.Adapter); + } + } + // + //---- Perform updates ----------- + // + if ((this.UpdateOrder == UpdateOrderOption.UpdateInsertDelete)) { + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + } + else { + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + } + result = (result + this.UpdateDeletedRows(dataSet, allChangedRows)); + // + //---- Commit updates ----------- + // + workTransaction.Commit(); + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + if ((0 < allChangedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allChangedRows.Count]; + allChangedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + } + catch (global::System.Exception ex) { + workTransaction.Rollback(); + // ---- Restore the dataset ----------- + if (this.BackupDataSetBeforeUpdate) { + global::System.Diagnostics.Debug.Assert((backupDataSet != null)); + dataSet.Clear(); + dataSet.Merge(backupDataSet); + } + else { + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + row.SetAdded(); + } + } + } + throw ex; + } + finally { + if (workConnOpened) { + workConnection.Close(); + } + if ((this._k4EE_Component_Reel_ResultTableAdapter != null)) { + this._k4EE_Component_Reel_ResultTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._k4EE_Component_Reel_ResultTableAdapter])); + this._k4EE_Component_Reel_ResultTableAdapter.Transaction = null; + } + if ((0 < adaptersWithAcceptChangesDuringUpdate.Count)) { + global::System.Data.Common.DataAdapter[] adapters = new System.Data.Common.DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count]; + adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters); + for (int i = 0; (i < adapters.Length); i = (i + 1)) { + global::System.Data.Common.DataAdapter adapter = adapters[i]; + adapter.AcceptChangesDuringUpdate = true; + } + } + } + return result; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual void SortSelfReferenceRows(global::System.Data.DataRow[] rows, global::System.Data.DataRelation relation, bool childFirst) { + global::System.Array.Sort(rows, new SelfReferenceComparer(relation, childFirst)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual bool MatchTableAdapterConnection(global::System.Data.IDbConnection inputConnection) { + if ((this._connection != null)) { + return true; + } + if (((this.Connection == null) + || (inputConnection == null))) { + return true; + } + if (string.Equals(this.Connection.ConnectionString, inputConnection.ConnectionString, global::System.StringComparison.Ordinal)) { + return true; + } + return false; + } + + /// + ///Update Order Option + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public enum UpdateOrderOption { + + InsertUpdateDelete = 0, + + UpdateInsertDelete = 1, + } + + /// + ///Used to sort self-referenced table's rows + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private class SelfReferenceComparer : object, global::System.Collections.Generic.IComparer { + + private global::System.Data.DataRelation _relation; + + private int _childFirst; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SelfReferenceComparer(global::System.Data.DataRelation relation, bool childFirst) { + this._relation = relation; + if (childFirst) { + this._childFirst = -1; + } + else { + this._childFirst = 1; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow GetRoot(global::System.Data.DataRow row, out int distance) { + global::System.Diagnostics.Debug.Assert((row != null)); + global::System.Data.DataRow root = row; + distance = 0; + + global::System.Collections.Generic.IDictionary traversedRows = new global::System.Collections.Generic.Dictionary(); + traversedRows[row] = row; + + global::System.Data.DataRow parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + } + + if ((distance == 0)) { + traversedRows.Clear(); + traversedRows[row] = row; + parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + } + } + + return root; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int Compare(global::System.Data.DataRow row1, global::System.Data.DataRow row2) { + if (object.ReferenceEquals(row1, row2)) { + return 0; + } + if ((row1 == null)) { + return -1; + } + if ((row2 == null)) { + return 1; + } + + int distance1 = 0; + global::System.Data.DataRow root1 = this.GetRoot(row1, out distance1); + + int distance2 = 0; + global::System.Data.DataRow root2 = this.GetRoot(row2, out distance2); + + if (object.ReferenceEquals(root1, root2)) { + return (this._childFirst * distance1.CompareTo(distance2)); + } + else { + global::System.Diagnostics.Debug.Assert(((root1.Table != null) + && (root2.Table != null))); + if ((root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2))) { + return -1; + } + else { + return 1; + } + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/Handler/ResultView/DataSet1.xsc b/Handler/ResultView/DataSet1.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/Handler/ResultView/DataSet1.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/Handler/ResultView/DataSet1.xsd b/Handler/ResultView/DataSet1.xsd new file mode 100644 index 0000000..b386b59 --- /dev/null +++ b/Handler/ResultView/DataSet1.xsd @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + DELETE FROM [K4EE_Component_Reel_Result] WHERE (([idx] = @Original_idx) AND ([STIME] = @Original_STIME) AND ((@IsNull_ETIME = 1 AND [ETIME] IS NULL) OR ([ETIME] = @Original_ETIME)) AND ((@IsNull_PDATE = 1 AND [PDATE] IS NULL) OR ([PDATE] = @Original_PDATE)) AND ((@IsNull_JTYPE = 1 AND [JTYPE] IS NULL) OR ([JTYPE] = @Original_JTYPE)) AND ((@IsNull_JGUID = 1 AND [JGUID] IS NULL) OR ([JGUID] = @Original_JGUID)) AND ((@IsNull_SID = 1 AND [SID] IS NULL) OR ([SID] = @Original_SID)) AND ((@IsNull_SID0 = 1 AND [SID0] IS NULL) OR ([SID0] = @Original_SID0)) AND ((@IsNull_RID = 1 AND [RID] IS NULL) OR ([RID] = @Original_RID)) AND ((@IsNull_RID0 = 1 AND [RID0] IS NULL) OR ([RID0] = @Original_RID0)) AND ((@IsNull_RSN = 1 AND [RSN] IS NULL) OR ([RSN] = @Original_RSN)) AND ((@IsNull_QR = 1 AND [QR] IS NULL) OR ([QR] = @Original_QR)) AND ((@IsNull_ZPL = 1 AND [ZPL] IS NULL) OR ([ZPL] = @Original_ZPL)) AND ((@IsNull_POS = 1 AND [POS] IS NULL) OR ([POS] = @Original_POS)) AND ((@IsNull_LOC = 1 AND [LOC] IS NULL) OR ([LOC] = @Original_LOC)) AND ((@IsNull_ANGLE = 1 AND [ANGLE] IS NULL) OR ([ANGLE] = @Original_ANGLE)) AND ((@IsNull_QTY = 1 AND [QTY] IS NULL) OR ([QTY] = @Original_QTY)) AND ((@IsNull_QTY0 = 1 AND [QTY0] IS NULL) OR ([QTY0] = @Original_QTY0)) AND ((@IsNull_VNAME = 1 AND [VNAME] IS NULL) OR ([VNAME] = @Original_VNAME)) AND ((@IsNull_PRNATTACH = 1 AND [PRNATTACH] IS NULL) OR ([PRNATTACH] = @Original_PRNATTACH)) AND ((@IsNull_PRNVALID = 1 AND [PRNVALID] IS NULL) OR ([PRNVALID] = @Original_PRNVALID)) AND ([wdate] = @Original_wdate) AND ((@IsNull_VLOT = 1 AND [VLOT] IS NULL) OR ([VLOT] = @Original_VLOT)) AND ((@IsNull_BATCH = 1 AND [BATCH] IS NULL) OR ([BATCH] = @Original_BATCH)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax))) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO [K4EE_Component_Reel_Result] ([STIME], [ETIME], [PDATE], [JTYPE], [JGUID], [SID], [SID0], [RID], [RID0], [RSN], [QR], [ZPL], [POS], [LOC], [ANGLE], [QTY], [QTY0], [VNAME], [PRNATTACH], [PRNVALID], [wdate], [VLOT], [BATCH], [qtymax]) VALUES (@STIME, @ETIME, @PDATE, @JTYPE, @JGUID, @SID, @SID0, @RID, @RID0, @RSN, @QR, @ZPL, @POS, @LOC, @ANGLE, @QTY, @QTY0, @VNAME, @PRNATTACH, @PRNVALID, @wdate, @VLOT, @BATCH, @qtymax); +SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALID, wdate, VLOT, BATCH, qtymax FROM K4EE_Component_Reel_Result WHERE (idx = SCOPE_IDENTITY()) ORDER BY wdate DESC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALID, wdate, VLOT, BATCH, qtymax +FROM K4EE_Component_Reel_Result WITH (nolock) +WHERE (MC = @mc) AND (CONVERT(varchar(10), wdate, 120) BETWEEN @sd AND @ed) AND (ISNULL(QR, '') LIKE @search) +ORDER BY wdate DESC + + + + + + + + + + + UPDATE [K4EE_Component_Reel_Result] SET [STIME] = @STIME, [ETIME] = @ETIME, [PDATE] = @PDATE, [JTYPE] = @JTYPE, [JGUID] = @JGUID, [SID] = @SID, [SID0] = @SID0, [RID] = @RID, [RID0] = @RID0, [RSN] = @RSN, [QR] = @QR, [ZPL] = @ZPL, [POS] = @POS, [LOC] = @LOC, [ANGLE] = @ANGLE, [QTY] = @QTY, [QTY0] = @QTY0, [VNAME] = @VNAME, [PRNATTACH] = @PRNATTACH, [PRNVALID] = @PRNVALID, [wdate] = @wdate, [VLOT] = @VLOT, [BATCH] = @BATCH, [qtymax] = @qtymax WHERE (([idx] = @Original_idx) AND ([STIME] = @Original_STIME) AND ((@IsNull_ETIME = 1 AND [ETIME] IS NULL) OR ([ETIME] = @Original_ETIME)) AND ((@IsNull_PDATE = 1 AND [PDATE] IS NULL) OR ([PDATE] = @Original_PDATE)) AND ((@IsNull_JTYPE = 1 AND [JTYPE] IS NULL) OR ([JTYPE] = @Original_JTYPE)) AND ((@IsNull_JGUID = 1 AND [JGUID] IS NULL) OR ([JGUID] = @Original_JGUID)) AND ((@IsNull_SID = 1 AND [SID] IS NULL) OR ([SID] = @Original_SID)) AND ((@IsNull_SID0 = 1 AND [SID0] IS NULL) OR ([SID0] = @Original_SID0)) AND ((@IsNull_RID = 1 AND [RID] IS NULL) OR ([RID] = @Original_RID)) AND ((@IsNull_RID0 = 1 AND [RID0] IS NULL) OR ([RID0] = @Original_RID0)) AND ((@IsNull_RSN = 1 AND [RSN] IS NULL) OR ([RSN] = @Original_RSN)) AND ((@IsNull_QR = 1 AND [QR] IS NULL) OR ([QR] = @Original_QR)) AND ((@IsNull_ZPL = 1 AND [ZPL] IS NULL) OR ([ZPL] = @Original_ZPL)) AND ((@IsNull_POS = 1 AND [POS] IS NULL) OR ([POS] = @Original_POS)) AND ((@IsNull_LOC = 1 AND [LOC] IS NULL) OR ([LOC] = @Original_LOC)) AND ((@IsNull_ANGLE = 1 AND [ANGLE] IS NULL) OR ([ANGLE] = @Original_ANGLE)) AND ((@IsNull_QTY = 1 AND [QTY] IS NULL) OR ([QTY] = @Original_QTY)) AND ((@IsNull_QTY0 = 1 AND [QTY0] IS NULL) OR ([QTY0] = @Original_QTY0)) AND ((@IsNull_VNAME = 1 AND [VNAME] IS NULL) OR ([VNAME] = @Original_VNAME)) AND ((@IsNull_PRNATTACH = 1 AND [PRNATTACH] IS NULL) OR ([PRNATTACH] = @Original_PRNATTACH)) AND ((@IsNull_PRNVALID = 1 AND [PRNVALID] IS NULL) OR ([PRNVALID] = @Original_PRNVALID)) AND ([wdate] = @Original_wdate) AND ((@IsNull_VLOT = 1 AND [VLOT] IS NULL) OR ([VLOT] = @Original_VLOT)) AND ((@IsNull_BATCH = 1 AND [BATCH] IS NULL) OR ([BATCH] = @Original_BATCH)) AND ((@IsNull_qtymax = 1 AND [qtymax] IS NULL) OR ([qtymax] = @Original_qtymax))); +SELECT idx, STIME, ETIME, PDATE, JTYPE, JGUID, SID, SID0, RID, RID0, RSN, QR, ZPL, POS, LOC, ANGLE, QTY, QTY0, VNAME, PRNATTACH, PRNVALID, wdate, VLOT, BATCH, qtymax FROM K4EE_Component_Reel_Result WITH (nolock) WHERE (idx = @idx) ORDER BY wdate DESC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/ResultView/DataSet1.xss b/Handler/ResultView/DataSet1.xss new file mode 100644 index 0000000..3a9258a --- /dev/null +++ b/Handler/ResultView/DataSet1.xss @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/Handler/ResultView/MethodExtentions.cs b/Handler/ResultView/MethodExtentions.cs new file mode 100644 index 0000000..b880040 --- /dev/null +++ b/Handler/ResultView/MethodExtentions.cs @@ -0,0 +1,114 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace ResultView +{ + /// + /// generic method Extension + /// + public static class MethodExtensions + { + public static string ToString(this System.Drawing.Rectangle rect) + { + return string.Format("X={0},Y={1},W={2},H={3}", rect.X, rect.Y, rect.Width, rect.Height); + } + public static string ToString(this System.Drawing.RectangleF rect) + { + return string.Format("X={0},Y={1},W={2},H={3}", rect.X, rect.Y, rect.Width, rect.Height); + } + + //public static void SetBGColor(this System.Windows.Forms.Label ctl,System.Drawing.Color color1) + //{ + // ctl.BackColor = System.Drawing.Color.Red; + //} + + /// + /// 0101이 반복되는 문자열 형태로 전환합니다. + /// + /// + /// + public static string BitString(this System.Collections.BitArray arr) + { + System.Text.StringBuilder sb = new System.Text.StringBuilder(); + for (int i = arr.Length; i > 0; i--) + sb.Append(arr[i - 1] ? "1" : "0"); + return sb.ToString(); + } + + /// + /// int 값으로 변환합니다. + /// + /// + /// + public static int ValueI(this System.Collections.BitArray arr) + { + byte[] buf = new byte[4]; + arr.CopyTo(buf, 0); + return BitConverter.ToInt32(buf, 0); + } + + /// + /// 숫자인지 검사합니다. + /// + /// + /// + public static bool IsNumeric(this string input) + { + double data; + return double.TryParse(input, out data); + //return Regex.IsMatch(input, @"^\d+$"); + } + + /// + /// isnullorempty 를 수행합니다. + /// + /// + /// + public static Boolean isEmpty(this string input) + { + return string.IsNullOrEmpty(input); + } + + /// + /// default 인코딩을 사용하여 문자열로 반환합니다. + /// + /// + /// + public static string GetString(this Byte[] input) + { + return System.Text.Encoding.Default.GetString(input); + } + + /// + /// 16진수 문자열 형태로 반환합니다. + /// + /// + /// + public static string GetHexString(this Byte[] input) + { + System.Text.StringBuilder sb = new System.Text.StringBuilder(); + foreach (byte b in input) + sb.Append(" " + b.ToString("X2")); + return sb.ToString(); + } + + public static string Base64Encode(this string src) + { + string base64enc = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(src)); + return base64enc; + } + public static string Base64Decode(this string src) + { + var base64dec = Convert.FromBase64String(src); + return System.Text.Encoding.UTF8.GetString(base64dec); + } + + } +} + diff --git a/Handler/ResultView/Program.cs b/Handler/ResultView/Program.cs new file mode 100644 index 0000000..d59b9d6 --- /dev/null +++ b/Handler/ResultView/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace ResultView +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new fHistory()); + } + } +} diff --git a/Handler/ResultView/Properties/AssemblyInfo.cs b/Handler/ResultView/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5b4c3a0 --- /dev/null +++ b/Handler/ResultView/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +// 어셈블리와 관련된 정보를 수정하려면 +// 이 특성 값을 변경하십시오. +[assembly: AssemblyTitle("Amkor STD Label Attach Result Viewer (x64)")] +[assembly: AssemblyDescription("Amkor STD Label Attach Result Viewer (x64)")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("ATK4-EET")] +[assembly: AssemblyProduct("Amkor STD Label Attach Result Viewer (x64)")] +[assembly: AssemblyCopyright("Copyright ©ATK4-EET 2021")] +[assembly: AssemblyTrademark("Amkor STD Label Attach Result Viewer (x64)")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("d15c03ae-e7ab-489f-8cad-343a40e4668b")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("25.05.21.1530")] +[assembly: AssemblyFileVersion("25.05.21.1530")] diff --git a/Handler/ResultView/Properties/Resources.Designer.cs b/Handler/ResultView/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b63370d --- /dev/null +++ b/Handler/ResultView/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace ResultView.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ResultView.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Handler/ResultView/Properties/Resources.resx b/Handler/ResultView/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Handler/ResultView/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/ResultView/Properties/Settings.Designer.cs b/Handler/ResultView/Properties/Settings.Designer.cs new file mode 100644 index 0000000..79ef921 --- /dev/null +++ b/Handler/ResultView/Properties/Settings.Designer.cs @@ -0,0 +1,134 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace ResultView.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute(@"^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ +^XA +^MMT +^PW519 +^LL0200 +^LS25 +^FO205,5^GB305,186,4^FS +^FT25,170^BQN,2,4 +^FDLA, +{qrData} +^FS +^FO205,9^GB0,183,4^FS +^FO250,9^GB0,183,4^FS +^FO209,34^GB299,0,4^FS +^FO209,65^GB299,0,4^FS +^FO207,95^GB300,0,4^FS +^FO207,126^GB303,0,4^FS +^FT211,30^A0N,23,24^FDSID^FS +^FT210,59^A0N,23,24^FDLOT^FS +^FT215,91^A0N,23,24^FDPN^FS +^FT212,153^A0N,23,24^FDRID^FS +^FT210,120^A0N,23,24^FDQ'ty^FS +^FT260,31^A0N,23,24^FD +{sid} +^FS +^FT260,60^A0N,23,24^FD +{lot} +^FS +^FT258,93^A0N,27,16^FD +{partnum} +^FS +^FT256,150^A0N,21,19^FD +{rid} +^FS +^FT259,121^A0N,23,24^FD +{qty} +^FS +^FO207,157^GB303,0,4^FS +^FT212,182^A0N,20,19^FDDate^FS +^FT260,183^A0N,23,24^FD +{mfg} +^FS +^PQ1,0,1,Y^XZ +")] + public string ZPL { + get { + return ((string)(this["ZPL"])); + } + set { + this["ZPL"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute(@"^XA +^MMT +^PW519 +^LL0200 +^LS0 +^FO207,5^GB303,186,4^FS +^FT10,190^BQN,2,4 +^FH\^FDLA,{qrData}^FS +^FO250,8^GB0,183,4^FS +^FO209,29^GB299,0,4^FS +^FO209,56^GB299,0,4^FS +^FO207,81^GB300,0,4^FS +^FO207,108^GB303,0,4^FS +^FT212,27^A0N,20,19^FH\^FDSID^FS +^FT212,52^A0N,20,19^FH\^FDLOT^FS +^FT211,132^A0N,20,19^FH\^FDRID^FS +^FT212,104^A0N,20,19^FH\^FDQ'ty^FS +^FT256,27^A0N,20,19^FH\^FD{sid}^FS +^FT257,53^A0N,20,19^FH\^FD{lot}^FS +^FT257,184^A0N,17,16^FH\^FD{partnum}^FS +^FT258,131^A0N,20,19^FH\^FD{rid}^FS +^FT257,104^A0N,20,19^FH\^FD{qty}^FS +^FO207,162^GB303,0,4^FS +^FO207,135^GB303,0,4^FS +^FT211,158^A0N,20,19^FH\^FDDate^FS +^FT258,158^A0N,20,19^FH\^FD{mfg}^FS +^FT212,183^A0N,17,16^FH\^FDPN#^FS +^FT212,79^A0N,20,19^FH\^FDSPY^FS +^FT256,79^A0N,20,19^FH\^FDSupplier^FS +^PQ1,0,1,Y^XZ +")] + public string ZPL7 { + get { + return ((string)(this["ZPL7"])); + } + set { + this["ZPL7"] = value; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;Use" + + "r ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True")] + public string cs { + get { + return ((string)(this["cs"])); + } + } + } +} diff --git a/Handler/ResultView/Properties/Settings.settings b/Handler/ResultView/Properties/Settings.settings new file mode 100644 index 0000000..dfb29a0 --- /dev/null +++ b/Handler/ResultView/Properties/Settings.settings @@ -0,0 +1,93 @@ + + + + + + ^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ +^XA +^MMT +^PW519 +^LL0200 +^LS25 +^FO205,5^GB305,186,4^FS +^FT25,170^BQN,2,4 +^FDLA, +{qrData} +^FS +^FO205,9^GB0,183,4^FS +^FO250,9^GB0,183,4^FS +^FO209,34^GB299,0,4^FS +^FO209,65^GB299,0,4^FS +^FO207,95^GB300,0,4^FS +^FO207,126^GB303,0,4^FS +^FT211,30^A0N,23,24^FDSID^FS +^FT210,59^A0N,23,24^FDLOT^FS +^FT215,91^A0N,23,24^FDPN^FS +^FT212,153^A0N,23,24^FDRID^FS +^FT210,120^A0N,23,24^FDQ'ty^FS +^FT260,31^A0N,23,24^FD +{sid} +^FS +^FT260,60^A0N,23,24^FD +{lot} +^FS +^FT258,93^A0N,27,16^FD +{partnum} +^FS +^FT256,150^A0N,21,19^FD +{rid} +^FS +^FT259,121^A0N,23,24^FD +{qty} +^FS +^FO207,157^GB303,0,4^FS +^FT212,182^A0N,20,19^FDDate^FS +^FT260,183^A0N,23,24^FD +{mfg} +^FS +^PQ1,0,1,Y^XZ + + + + ^XA +^MMT +^PW519 +^LL0200 +^LS0 +^FO207,5^GB303,186,4^FS +^FT10,190^BQN,2,4 +^FH\^FDLA,{qrData}^FS +^FO250,8^GB0,183,4^FS +^FO209,29^GB299,0,4^FS +^FO209,56^GB299,0,4^FS +^FO207,81^GB300,0,4^FS +^FO207,108^GB303,0,4^FS +^FT212,27^A0N,20,19^FH\^FDSID^FS +^FT212,52^A0N,20,19^FH\^FDLOT^FS +^FT211,132^A0N,20,19^FH\^FDRID^FS +^FT212,104^A0N,20,19^FH\^FDQ'ty^FS +^FT256,27^A0N,20,19^FH\^FD{sid}^FS +^FT257,53^A0N,20,19^FH\^FD{lot}^FS +^FT257,184^A0N,17,16^FH\^FD{partnum}^FS +^FT258,131^A0N,20,19^FH\^FD{rid}^FS +^FT257,104^A0N,20,19^FH\^FD{qty}^FS +^FO207,162^GB303,0,4^FS +^FO207,135^GB303,0,4^FS +^FT211,158^A0N,20,19^FH\^FDDate^FS +^FT258,158^A0N,20,19^FH\^FD{mfg}^FS +^FT212,183^A0N,17,16^FH\^FDPN#^FS +^FT212,79^A0N,20,19^FH\^FDSPY^FS +^FT256,79^A0N,20,19^FH\^FDSupplier^FS +^PQ1,0,1,Y^XZ + + + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <ConnectionString>Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=10.201.11.21,50150;Initial Catalog=WMS;Persist Security Info=True;User ID=wmsadm;Password=78#4AmWnh1!!;Encrypt=False;TrustServerCertificate=True + + + \ No newline at end of file diff --git a/Handler/ResultView/Pub.cs b/Handler/ResultView/Pub.cs new file mode 100644 index 0000000..c5e91fe --- /dev/null +++ b/Handler/ResultView/Pub.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ResultView +{ + public static class Pub + { + + + + public static arUtil.Log log; + + public static CSetting setting; + + public static void init() + { + + //log + log = new arUtil.Log(); + + //setting + setting = new CSetting(); + setting.Load(); + + + } + } +} diff --git a/Handler/ResultView/ResultView.csproj b/Handler/ResultView/ResultView.csproj new file mode 100644 index 0000000..e904bee --- /dev/null +++ b/Handler/ResultView/ResultView.csproj @@ -0,0 +1,154 @@ + + + + + Debug + AnyCPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366} + WinExe + Properties + ResultView + ResultView + v4.8 + 512 + + + + x64 + true + full + false + bin\debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\DLL\arControl.Net4.dll + + + False + ..\DLL\ArLog.Net4.dll + + + False + ..\DLL\ArSetting.Net4.dll + + + False + ..\DLL\libxl.net.dll + + + + + + + + + + + + + + + True + True + DataSet1.xsd + + + Form + + + fHistory.cs + + + Form + + + fSetting.cs + + + Form + + + fTouchKeyFull.cs + + + + + + + + + fHistory.cs + + + fSetting.cs + + + fTouchKeyFull.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + DataSet1.xsd + + + Designer + MSDataSetGenerator + DataSet1.Designer.cs + + + DataSet1.xsd + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {b18d3b96-2fdf-4ed9-9a49-d9b8cee4ed6d} + StdLabelPrint + + + + + PreserveNewest + + + + + \ No newline at end of file diff --git a/Handler/ResultView/Util.cs b/Handler/ResultView/Util.cs new file mode 100644 index 0000000..bdf6907 --- /dev/null +++ b/Handler/ResultView/Util.cs @@ -0,0 +1,366 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Windows.Forms; + +namespace ResultView +{ + public static class Util + { + #region "MessageBox" + public static void MsgI(string m) + { + MessageBox.Show(m, "Confirm", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + public static void MsgE(string m) + { + MessageBox.Show(m, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + public static DialogResult MsgQ(string m) + { + DialogResult dlg = MessageBox.Show(m, "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + return dlg; + } + + #endregion + + public static void SaveBugReport(string content, string subdirName = "BugReport") + { + try + { + var path = CurrentPath + subdirName; + if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); + var file = path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss_fff") + ".txt"; + System.IO.File.WriteAllText(file, content, System.Text.Encoding.UTF8); + } + catch + { + //nothing + } + } + + public static void CopyData(System.Data.DataRow drSrc, System.Data.DataRow drDes) + { + if (drDes == null || drSrc == null) return; + foreach (System.Data.DataColumn col in drSrc.Table.Columns) + { + if (col.ColumnName.ToUpper() == "IDX") continue; + drDes[col.ColumnName] = drSrc[col.ColumnName]; + } + + } + + /// + /// 현재실행중인폴더를 반환합니다. + /// + public static string CurrentPath + { + get + { + return AppDomain.CurrentDomain.BaseDirectory; + } + } + /// + /// 콤마와 줄바꿈등을 제거합니다. + /// + /// + public static string ToCSVString(string src) + { + string retval = src.Replace("\r", "").Replace("\n", "").Replace(",", ""); + return retval; + } + + public static Boolean RunProcess(string file, string arg = "") + { + var fi = new System.IO.FileInfo(file); + if (!fi.Exists) + { + Pub.log.AddE("Run Error : " + file); + return false; + } + System.Diagnostics.Process prc = new System.Diagnostics.Process(); + System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(file); + si.Arguments = arg; + prc.StartInfo = si; + prc.Start(); + return true; + } + + #region "convert" + public static string RectToStr(Rectangle rect) + { + return string.Format("{0};{1};{2};{3}", rect.X, rect.Y, rect.Width, rect.Height); + } + public static string RectToStr(RectangleF rect) + { + return string.Format("{0};{1};{2};{3}", rect.X, rect.Y, rect.Width, rect.Height); + } + public static string PointToStr(Point pt) + { + return string.Format("{0};{1}", pt.X, pt.Y); + } + public static string PointToStr(PointF pt) + { + return string.Format("{0};{1}", pt.X, pt.Y); + } + public static Rectangle StrToRect(string str) + { + if (str.isEmpty() || str.Split(';').Length != 4) str = "0;0;0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.Rectangle( + int.Parse(roibuf1[0]), + int.Parse(roibuf1[1]), + int.Parse(roibuf1[2]), + int.Parse(roibuf1[3])); + } + public static RectangleF StrToRectF(string str) + { + if (str.isEmpty() || str.Split(';').Length != 4) str = "0;0;0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.RectangleF( + float.Parse(roibuf1[0]), + float.Parse(roibuf1[1]), + float.Parse(roibuf1[2]), + float.Parse(roibuf1[3])); + } + public static Point StrToPoint(string str) + { + if (str.isEmpty() || str.Split(';').Length != 2) str = "0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.Point( + int.Parse(roibuf1[0]), + int.Parse(roibuf1[1])); + } + public static PointF StrToPointF(string str) + { + if (str.isEmpty() || str.Split(';').Length != 2) str = "0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.PointF( + float.Parse(roibuf1[0]), + float.Parse(roibuf1[1])); + } + #endregion + + #region "NIC" + + /// + /// 지정된 nic카드가 현재 목록에 존재하는지 확인한다. + /// + /// + public static Boolean ExistNIC(string NICName) + { + if (string.IsNullOrEmpty(NICName)) return false; + foreach (string NetName in NICCardList()) + { + if (NetName.ToLower() == NICName.ToLower()) + { + return true; + } + } + return false; + } + + /// + /// Ehternet Card 를 사용안함으로 설정합니다.(관리자권한필요) + /// + /// + public static Boolean NICDisable(string NICName) + { + //해당 nic 가 현재 목록에 존재하는지 확인한다. + + string cmd = "interface set interface " + NICName + " disable"; + Process prc = new Process(); + ProcessStartInfo si = new ProcessStartInfo("netsh", cmd); + si.WindowStyle = ProcessWindowStyle.Hidden; + prc.StartInfo = si; + prc.Start(); + + ////목록에서 사라질때까지 기다린다. + DateTime SD = DateTime.Now; + Boolean timeout = false; + while ((true)) + { + + bool FindNetwork = false; + foreach (string NetName in NICCardList()) + { + if (NetName == NICName.ToLower()) + { + FindNetwork = true; + break; // TODO: might not be correct. Was : Exit For + } + } + + if (!FindNetwork) + break; // TODO: might not be correct. Was : Exit While + + System.Threading.Thread.Sleep(1000); + TimeSpan ts = DateTime.Now - SD; + if (ts.TotalSeconds > 10) + { + timeout = true; + break; // TODO: might not be correct. Was : Exit While + } + } + return !timeout; + } + + public static List NICCardList() + { + List Retval = new List(); + foreach (System.Net.NetworkInformation.NetworkInterface Net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) + { + if (Net.NetworkInterfaceType == System.Net.NetworkInformation.NetworkInterfaceType.Ethernet) + { + Retval.Add(Net.Name.ToUpper()); + } + } + return Retval; + } + + /// + /// 이더넷카드를 사용함으로 설정합니다. + /// + /// + public static Boolean NICEnable(string NICName) + { + string cmd = "interface set interface " + NICName + " enable"; + System.Diagnostics.Process prc = new System.Diagnostics.Process(); + System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo("netsh", cmd); + si.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + prc.StartInfo = si; + prc.Start(); + + + ////목록에생길떄까지 대기 + DateTime SD = DateTime.Now; + while ((true)) + { + + bool FindNetwork = false; + foreach (string NetName in NICCardList()) + { + if (NetName.ToLower() == NICName.ToLower()) + { + FindNetwork = true; + break; // TODO: might not be correct. Was : Exit For + } + } + + if (FindNetwork) + break; // TODO: might not be correct. Was : Exit While + + System.Threading.Thread.Sleep(1000); + TimeSpan ts = DateTime.Now - SD; + if (ts.TotalSeconds > 10) + { + return false; + } + } + + ////결이 완료될떄까지 기다린다. + SD = DateTime.Now; + while ((true)) + { + + bool FindNetwork = false; + foreach (System.Net.NetworkInformation.NetworkInterface Net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) + { + if (Net.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.GigabitEthernet && + Net.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Ethernet) continue; + if (Net.Name.ToLower() == NICName.ToLower()) + { + //string data = Net.GetIPProperties().GatewayAddresses[0].ToString(); + + if (Net.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up) + { + + FindNetwork = true; + break; // TODO: might not be correct. Was : Exit For + } + } + } + if (FindNetwork) + return true; + + System.Threading.Thread.Sleep(1000); + TimeSpan ts = DateTime.Now - SD; + if (ts.TotalSeconds > 10) + { + return false; + } + } + + } + + #endregion + + public static void RunExplorer(string arg) + { + System.Diagnostics.ProcessStartInfo si = new ProcessStartInfo("explorer"); + si.Arguments = arg; + System.Diagnostics.Process.Start(si); + } + + #region "watchdog" + public static void WatchDog_Run() + { + System.IO.FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "WatchCat.exe"); + if (!fi.Exists) return; + var Exist = CheckExistProcess("watchcat"); + if (Exist) return; + RunProcess(fi.FullName); + } + + public static Boolean CheckExistProcess(string ProcessName) + { + foreach (var prc in System.Diagnostics.Process.GetProcesses()) + { + if (prc.ProcessName.StartsWith("svchost")) continue; + if (prc.ProcessName.ToUpper() == ProcessName.ToUpper()) return true; + } + return false; + } + #endregion + + #region "web function" + /// + /// URL로부터 문자열을 수신합니다. + /// + /// + /// + /// + public static string GetStrfromurl(string url, out Boolean isError) + { + isError = false; + string result = ""; + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); + request.Timeout = 60000; + request.ReadWriteTimeout = 60000; + + request.MaximumAutomaticRedirections = 4; + request.MaximumResponseHeadersLength = 4; + request.Credentials = CredentialCache.DefaultCredentials; + var response = request.GetResponse() as HttpWebResponse; + var txtReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + result = txtReader.ReadToEnd(); + } + catch (Exception ex) + { + isError = true; + result = ex.Message.ToString(); + } + return result; + } + + #endregion + + } +} diff --git a/Handler/ResultView/app.config b/Handler/ResultView/app.config new file mode 100644 index 0000000..5519129 --- /dev/null +++ b/Handler/ResultView/app.config @@ -0,0 +1,95 @@ + + + + +
+ + + + + + + + + ^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ +^XA +^MMT +^PW519 +^LL0200 +^LS25 +^FO205,5^GB305,186,4^FS +^FT25,170^BQN,2,4 +^FDLA, +{qrData} +^FS +^FO205,9^GB0,183,4^FS +^FO250,9^GB0,183,4^FS +^FO209,34^GB299,0,4^FS +^FO209,65^GB299,0,4^FS +^FO207,95^GB300,0,4^FS +^FO207,126^GB303,0,4^FS +^FT211,30^A0N,23,24^FDSID^FS +^FT210,59^A0N,23,24^FDLOT^FS +^FT215,91^A0N,23,24^FDPN^FS +^FT212,153^A0N,23,24^FDRID^FS +^FT210,120^A0N,23,24^FDQ'ty^FS +^FT260,31^A0N,23,24^FD +{sid} +^FS +^FT260,60^A0N,23,24^FD +{lot} +^FS +^FT258,93^A0N,27,16^FD +{partnum} +^FS +^FT256,150^A0N,21,19^FD +{rid} +^FS +^FT259,121^A0N,23,24^FD +{qty} +^FS +^FO207,157^GB303,0,4^FS +^FT212,182^A0N,20,19^FDDate^FS +^FT260,183^A0N,23,24^FD +{mfg} +^FS +^PQ1,0,1,Y^XZ + + + + ^XA +^MMT +^PW519 +^LL0200 +^LS0 +^FO207,5^GB303,186,4^FS +^FT10,190^BQN,2,4 +^FH\^FDLA,{qrData}^FS +^FO250,8^GB0,183,4^FS +^FO209,29^GB299,0,4^FS +^FO209,56^GB299,0,4^FS +^FO207,81^GB300,0,4^FS +^FO207,108^GB303,0,4^FS +^FT212,27^A0N,20,19^FH\^FDSID^FS +^FT212,52^A0N,20,19^FH\^FDLOT^FS +^FT211,132^A0N,20,19^FH\^FDRID^FS +^FT212,104^A0N,20,19^FH\^FDQ'ty^FS +^FT256,27^A0N,20,19^FH\^FD{sid}^FS +^FT257,53^A0N,20,19^FH\^FD{lot}^FS +^FT257,184^A0N,17,16^FH\^FD{partnum}^FS +^FT258,131^A0N,20,19^FH\^FD{rid}^FS +^FT257,104^A0N,20,19^FH\^FD{qty}^FS +^FO207,162^GB303,0,4^FS +^FO207,135^GB303,0,4^FS +^FT211,158^A0N,20,19^FH\^FDDate^FS +^FT258,158^A0N,20,19^FH\^FD{mfg}^FS +^FT212,183^A0N,17,16^FH\^FDPN#^FS +^FT212,79^A0N,20,19^FH\^FDSPY^FS +^FT256,79^A0N,20,19^FH\^FDSupplier^FS +^PQ1,0,1,Y^XZ + + + + + diff --git a/Handler/ResultView/fHistory.Designer.cs b/Handler/ResultView/fHistory.Designer.cs new file mode 100644 index 0000000..6ec4f66 --- /dev/null +++ b/Handler/ResultView/fHistory.Designer.cs @@ -0,0 +1,530 @@ +namespace ResultView +{ + partial class fHistory + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fHistory)); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btSetting = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.btExport = new System.Windows.Forms.Button(); + this.dtED = new System.Windows.Forms.DateTimePicker(); + this.dtSD = new System.Windows.Forms.DateTimePicker(); + this.tbSearch = new System.Windows.Forms.ComboBox(); + this.btSearch = new System.Windows.Forms.Button(); + this.cm = new System.Windows.Forms.ContextMenuStrip(this.components); + this.exportListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.viewXMLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.sendDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tbFind = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.dv = new arCtl.arDatagridView(); + this.bs = new System.Windows.Forms.BindingSource(this.components); + this.dataSet1 = new ResultView.DataSet1(); + this.ta = new ResultView.DataSet1TableAdapters.Component_Reel_ResultTableAdapter(); + this.panel2 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.sTIMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.ETIME = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.jTYPEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.BATCH = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.sIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.SID0 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.rID0DataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lOCDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qTYDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.qtymax = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.vNAMEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.VLOT = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewCheckBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.PRNVALID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.panel1.SuspendLayout(); + this.cm.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dv)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Gainsboro; + this.panel1.Controls.Add(this.btSetting); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.btExport); + this.panel1.Controls.Add(this.dtED); + this.panel1.Controls.Add(this.dtSD); + this.panel1.Controls.Add(this.tbSearch); + this.panel1.Controls.Add(this.btSearch); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(954, 73); + this.panel1.TabIndex = 0; + // + // btSetting + // + this.btSetting.Dock = System.Windows.Forms.DockStyle.Right; + this.btSetting.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btSetting.Image = ((System.Drawing.Image)(resources.GetObject("btSetting.Image"))); + this.btSetting.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btSetting.Location = new System.Drawing.Point(846, 5); + this.btSetting.Name = "btSetting"; + this.btSetting.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0); + this.btSetting.Size = new System.Drawing.Size(103, 63); + this.btSetting.TabIndex = 12; + this.btSetting.Tag = "0"; + this.btSetting.Text = "Settings"; + this.btSetting.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btSetting.UseVisualStyleBackColor = true; + this.btSetting.Click += new System.EventHandler(this.btSetting_Click); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(207, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(149, 23); + this.label1.TabIndex = 11; + this.label1.Text = "Enter search term"; + // + // btExport + // + this.btExport.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btExport.Image = ((System.Drawing.Image)(resources.GetObject("btExport.Image"))); + this.btExport.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btExport.Location = new System.Drawing.Point(588, 9); + this.btExport.Name = "btExport"; + this.btExport.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0); + this.btExport.Size = new System.Drawing.Size(145, 56); + this.btExport.TabIndex = 10; + this.btExport.Tag = "0"; + this.btExport.Text = "Export(&O)"; + this.btExport.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btExport.UseVisualStyleBackColor = true; + this.btExport.Click += new System.EventHandler(this.btExport_Click); + // + // dtED + // + this.dtED.Location = new System.Drawing.Point(8, 39); + this.dtED.Name = "dtED"; + this.dtED.Size = new System.Drawing.Size(192, 26); + this.dtED.TabIndex = 2; + // + // dtSD + // + this.dtSD.Location = new System.Drawing.Point(8, 10); + this.dtSD.Name = "dtSD"; + this.dtSD.Size = new System.Drawing.Size(192, 26); + this.dtSD.TabIndex = 1; + // + // tbSearch + // + this.tbSearch.Font = new System.Drawing.Font("Calibri", 12F); + this.tbSearch.FormattingEnabled = true; + this.tbSearch.Location = new System.Drawing.Point(207, 38); + this.tbSearch.Name = "tbSearch"; + this.tbSearch.Size = new System.Drawing.Size(219, 27); + this.tbSearch.TabIndex = 0; + this.tbSearch.Tag = "0"; + // + // btSearch + // + this.btSearch.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btSearch.Image = ((System.Drawing.Image)(resources.GetObject("btSearch.Image"))); + this.btSearch.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.btSearch.Location = new System.Drawing.Point(430, 9); + this.btSearch.Name = "btSearch"; + this.btSearch.Padding = new System.Windows.Forms.Padding(10, 0, 5, 0); + this.btSearch.Size = new System.Drawing.Size(155, 56); + this.btSearch.TabIndex = 9; + this.btSearch.Tag = "0"; + this.btSearch.Text = "Search(F5)"; + this.btSearch.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.btSearch.UseVisualStyleBackColor = true; + this.btSearch.Click += new System.EventHandler(this.btSearch_Click); + // + // cm + // + this.cm.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.exportListToolStripMenuItem, + this.viewXMLToolStripMenuItem, + this.toolStripMenuItem1, + this.sendDataToolStripMenuItem}); + this.cm.Name = "cm"; + this.cm.Size = new System.Drawing.Size(129, 76); + // + // exportListToolStripMenuItem + // + this.exportListToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("exportListToolStripMenuItem.Image"))); + this.exportListToolStripMenuItem.Name = "exportListToolStripMenuItem"; + this.exportListToolStripMenuItem.Size = new System.Drawing.Size(128, 22); + this.exportListToolStripMenuItem.Text = "Export"; + this.exportListToolStripMenuItem.Click += new System.EventHandler(this.목록저장ToolStripMenuItem_Click); + // + // viewXMLToolStripMenuItem + // + this.viewXMLToolStripMenuItem.Name = "viewXMLToolStripMenuItem"; + this.viewXMLToolStripMenuItem.Size = new System.Drawing.Size(128, 22); + this.viewXMLToolStripMenuItem.Text = "View XML"; + this.viewXMLToolStripMenuItem.Click += new System.EventHandler(this.viewXMLToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(125, 6); + // + // sendDataToolStripMenuItem + // + this.sendDataToolStripMenuItem.ForeColor = System.Drawing.Color.Red; + this.sendDataToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("sendDataToolStripMenuItem.Image"))); + this.sendDataToolStripMenuItem.Name = "sendDataToolStripMenuItem"; + this.sendDataToolStripMenuItem.Size = new System.Drawing.Size(128, 22); + this.sendDataToolStripMenuItem.Text = "Print"; + this.sendDataToolStripMenuItem.Visible = false; + this.sendDataToolStripMenuItem.Click += new System.EventHandler(this.sendDataToolStripMenuItem_Click); + // + // tbFind + // + this.tbFind.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tbFind.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbFind.Font = new System.Drawing.Font("Calibri", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbFind.ImeMode = System.Windows.Forms.ImeMode.Alpha; + this.tbFind.Location = new System.Drawing.Point(0, 0); + this.tbFind.Name = "tbFind"; + this.tbFind.Size = new System.Drawing.Size(898, 40); + this.tbFind.TabIndex = 3; + this.tbFind.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tbFind.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbiSearch_KeyDown); + // + // statusStrip1 + // + this.statusStrip1.Location = new System.Drawing.Point(0, 583); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(954, 22); + this.statusStrip1.TabIndex = 5; + this.statusStrip1.Text = "statusStrip1"; + // + // dv + // + this.dv.A_DelCurrentCell = true; + this.dv.A_EnterToTab = true; + this.dv.A_KoreanField = null; + this.dv.A_UpperField = null; + this.dv.A_ViewRownumOnHeader = true; + this.dv.AllowUserToAddRows = false; + this.dv.AllowUserToDeleteRows = false; + this.dv.AutoGenerateColumns = false; + this.dv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.sTIMEDataGridViewTextBoxColumn, + this.ETIME, + this.jTYPEDataGridViewTextBoxColumn, + this.BATCH, + this.sIDDataGridViewTextBoxColumn, + this.SID0, + this.rIDDataGridViewTextBoxColumn, + this.rID0DataGridViewTextBoxColumn, + this.lOCDataGridViewTextBoxColumn, + this.qTYDataGridViewTextBoxColumn, + this.qtymax, + this.vNAMEDataGridViewTextBoxColumn, + this.VLOT, + this.dataGridViewCheckBoxColumn1, + this.PRNVALID, + this.Column1}); + this.dv.ContextMenuStrip = this.cm; + this.dv.DataSource = this.bs; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle7.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle7.Padding = new System.Windows.Forms.Padding(3); + dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dv.DefaultCellStyle = dataGridViewCellStyle7; + this.dv.Dock = System.Windows.Forms.DockStyle.Fill; + this.dv.Location = new System.Drawing.Point(0, 73); + this.dv.Name = "dv"; + this.dv.ReadOnly = true; + dataGridViewCellStyle8.Font = new System.Drawing.Font("Calibri", 9.75F); + this.dv.RowsDefaultCellStyle = dataGridViewCellStyle8; + this.dv.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Calibri", 9.75F); + this.dv.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dv.Size = new System.Drawing.Size(954, 470); + this.dv.TabIndex = 2; + this.dv.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dv_CellDoubleClick); + // + // bs + // + this.bs.DataMember = "Component_Reel_Result"; + this.bs.DataSource = this.dataSet1; + this.bs.Sort = "wdate desc"; + // + // dataSet1 + // + this.dataSet1.DataSetName = "DataSet1"; + this.dataSet1.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; + // + // ta + // + this.ta.ClearBeforeFill = true; + // + // panel2 + // + this.panel2.Controls.Add(this.tbFind); + this.panel2.Controls.Add(this.button1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel2.Location = new System.Drawing.Point(0, 543); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(954, 40); + this.panel2.TabIndex = 6; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Right; + this.button1.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button1.Location = new System.Drawing.Point(898, 0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(56, 40); + this.button1.TabIndex = 11; + this.button1.Tag = "0"; + this.button1.Text = "KEY"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // sTIMEDataGridViewTextBoxColumn + // + this.sTIMEDataGridViewTextBoxColumn.DataPropertyName = "STIME"; + dataGridViewCellStyle1.Format = "MM-dd HH:mm:ss"; + this.sTIMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.sTIMEDataGridViewTextBoxColumn.HeaderText = "Start"; + this.sTIMEDataGridViewTextBoxColumn.Name = "sTIMEDataGridViewTextBoxColumn"; + this.sTIMEDataGridViewTextBoxColumn.ReadOnly = true; + // + // ETIME + // + this.ETIME.DataPropertyName = "ETIME"; + dataGridViewCellStyle2.Format = "MM-dd HH:mm:ss"; + this.ETIME.DefaultCellStyle = dataGridViewCellStyle2; + this.ETIME.HeaderText = "End"; + this.ETIME.Name = "ETIME"; + this.ETIME.ReadOnly = true; + // + // jTYPEDataGridViewTextBoxColumn + // + this.jTYPEDataGridViewTextBoxColumn.DataPropertyName = "JTYPE"; + this.jTYPEDataGridViewTextBoxColumn.HeaderText = "Type"; + this.jTYPEDataGridViewTextBoxColumn.Name = "jTYPEDataGridViewTextBoxColumn"; + this.jTYPEDataGridViewTextBoxColumn.ReadOnly = true; + // + // BATCH + // + this.BATCH.DataPropertyName = "BATCH"; + this.BATCH.HeaderText = "BATCH"; + this.BATCH.Name = "BATCH"; + this.BATCH.ReadOnly = true; + // + // sIDDataGridViewTextBoxColumn + // + this.sIDDataGridViewTextBoxColumn.DataPropertyName = "SID"; + this.sIDDataGridViewTextBoxColumn.HeaderText = "SID"; + this.sIDDataGridViewTextBoxColumn.Name = "sIDDataGridViewTextBoxColumn"; + this.sIDDataGridViewTextBoxColumn.ReadOnly = true; + // + // SID0 + // + this.SID0.DataPropertyName = "SID0"; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.SID0.DefaultCellStyle = dataGridViewCellStyle3; + this.SID0.HeaderText = "*"; + this.SID0.Name = "SID0"; + this.SID0.ReadOnly = true; + // + // rIDDataGridViewTextBoxColumn + // + this.rIDDataGridViewTextBoxColumn.DataPropertyName = "RID"; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.rIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle4; + this.rIDDataGridViewTextBoxColumn.HeaderText = "RID"; + this.rIDDataGridViewTextBoxColumn.Name = "rIDDataGridViewTextBoxColumn"; + this.rIDDataGridViewTextBoxColumn.ReadOnly = true; + // + // rID0DataGridViewTextBoxColumn + // + this.rID0DataGridViewTextBoxColumn.DataPropertyName = "RID0"; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.rID0DataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle5; + this.rID0DataGridViewTextBoxColumn.HeaderText = "*"; + this.rID0DataGridViewTextBoxColumn.Name = "rID0DataGridViewTextBoxColumn"; + this.rID0DataGridViewTextBoxColumn.ReadOnly = true; + // + // lOCDataGridViewTextBoxColumn + // + this.lOCDataGridViewTextBoxColumn.DataPropertyName = "LOC"; + this.lOCDataGridViewTextBoxColumn.HeaderText = "L/R"; + this.lOCDataGridViewTextBoxColumn.Name = "lOCDataGridViewTextBoxColumn"; + this.lOCDataGridViewTextBoxColumn.ReadOnly = true; + // + // qTYDataGridViewTextBoxColumn + // + this.qTYDataGridViewTextBoxColumn.DataPropertyName = "QTY"; + this.qTYDataGridViewTextBoxColumn.HeaderText = "QTY"; + this.qTYDataGridViewTextBoxColumn.Name = "qTYDataGridViewTextBoxColumn"; + this.qTYDataGridViewTextBoxColumn.ReadOnly = true; + // + // qtymax + // + this.qtymax.DataPropertyName = "qtymax"; + this.qtymax.HeaderText = "(MAX)"; + this.qtymax.Name = "qtymax"; + this.qtymax.ReadOnly = true; + // + // vNAMEDataGridViewTextBoxColumn + // + this.vNAMEDataGridViewTextBoxColumn.DataPropertyName = "VNAME"; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + this.vNAMEDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle6; + this.vNAMEDataGridViewTextBoxColumn.HeaderText = "Vender"; + this.vNAMEDataGridViewTextBoxColumn.Name = "vNAMEDataGridViewTextBoxColumn"; + this.vNAMEDataGridViewTextBoxColumn.ReadOnly = true; + // + // VLOT + // + this.VLOT.DataPropertyName = "VLOT"; + this.VLOT.HeaderText = "Vendor #"; + this.VLOT.Name = "VLOT"; + this.VLOT.ReadOnly = true; + // + // dataGridViewCheckBoxColumn1 + // + this.dataGridViewCheckBoxColumn1.DataPropertyName = "PRNATTACH"; + this.dataGridViewCheckBoxColumn1.HeaderText = "Attached"; + this.dataGridViewCheckBoxColumn1.Name = "dataGridViewCheckBoxColumn1"; + this.dataGridViewCheckBoxColumn1.ReadOnly = true; + this.dataGridViewCheckBoxColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridViewCheckBoxColumn1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + // + // PRNVALID + // + this.PRNVALID.DataPropertyName = "PRNVALID"; + this.PRNVALID.HeaderText = "Valid"; + this.PRNVALID.Name = "PRNVALID"; + this.PRNVALID.ReadOnly = true; + this.PRNVALID.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.PRNVALID.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column1.HeaderText = "Notes"; + this.Column1.Name = "Column1"; + this.Column1.ReadOnly = true; + // + // fHistory + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(954, 605); + this.Controls.Add(this.dv); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.statusStrip1); + this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Name = "fHistory"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Data History"; + this.Load += new System.EventHandler(this.fHistory_Load); + this.panel1.ResumeLayout(false); + this.cm.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dv)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + private System.Windows.Forms.Label label1; + + #endregion + private System.Windows.Forms.Panel panel1; + private arCtl.arDatagridView dv; + private System.Windows.Forms.BindingSource bs; + private DataSet1 dataSet1; + private System.Windows.Forms.Button btSearch; + private System.Windows.Forms.ComboBox tbSearch; + private System.Windows.Forms.DateTimePicker dtSD; + private System.Windows.Forms.DateTimePicker dtED; + private System.Windows.Forms.TextBox tbFind; + private System.Windows.Forms.Button btExport; + private System.Windows.Forms.ContextMenuStrip cm; + private System.Windows.Forms.ToolStripMenuItem exportListToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem sendDataToolStripMenuItem; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripMenuItem viewXMLToolStripMenuItem; + private DataSet1TableAdapters.Component_Reel_ResultTableAdapter ta; + private System.Windows.Forms.Button btSetting; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.DataGridViewTextBoxColumn sTIMEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn ETIME; + private System.Windows.Forms.DataGridViewTextBoxColumn jTYPEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn BATCH; + private System.Windows.Forms.DataGridViewTextBoxColumn sIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn SID0; + private System.Windows.Forms.DataGridViewTextBoxColumn rIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn rID0DataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn lOCDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn qTYDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn qtymax; + private System.Windows.Forms.DataGridViewTextBoxColumn vNAMEDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn VLOT; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewCheckBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn PRNVALID; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + } +} \ No newline at end of file diff --git a/Handler/ResultView/fHistory.cs b/Handler/ResultView/fHistory.cs new file mode 100644 index 0000000..b859081 --- /dev/null +++ b/Handler/ResultView/fHistory.cs @@ -0,0 +1,322 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ResultView +{ + public partial class fHistory : Form + { + public StdLabelPrint.LabelPrint PrinterL = null; + // public StdLabelPrint.LabelPrint PrinterR = null; + public fHistory() + { + InitializeComponent(); + Pub.init(); + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) this.Close(); + else if (e1.KeyCode == Keys.F5) btSearch.PerformClick(); + }; + this.tbSearch.KeyDown += (s1, e1) => { if (e1.KeyCode == Keys.Enter) btSearch.PerformClick(); }; + this.dv.CellFormatting += (s1, e1) => + { + if (e1.RowIndex >= 0 && e1.ColumnIndex >= 0) + { + var dv = s1 as DataGridView; + //var cell = dv.Rows[e1.RowIndex].Cells["dvc_upload"]; + //if (cell.Value != null) + //{ + // if (cell.Value.ToString() == "X") + // dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Red; + // else + // dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Black; + //} + //else dv.Rows[e1.RowIndex].DefaultCellStyle.ForeColor = Color.Black; + } + }; + this.dv.DataError += dv_DataError; + + this.Text = string.Format("{0} ver{1} - {2}", Application.ProductName, Application.ProductVersion,Pub.setting.MCName); + } + + void dv_DataError(object sender, DataGridViewDataErrorEventArgs e) + { + + } + + private void fHistory_Load(object sender, EventArgs e) + { + + dtSD.Value = DateTime.Now; + dtED.Value = DateTime.Now; + + PrinterL = new StdLabelPrint.LabelPrint(Pub.setting.PrinterName); + //PrinterR = new StdLabelPrint.LabelPrint("PrinterR"); + ApplyZplCode(); + + refreshList(); + + } + + public void ApplyZplCode() + { + string zplfil = string.Empty; + var basedir = new System.IO.DirectoryInfo(Util.CurrentPath); + if (Pub.setting.PrinterForm7) + { + zplfil = System.IO.Path.Combine(basedir.Parent.FullName, "zpl7.txt"); + } + else + { + zplfil = System.IO.Path.Combine(basedir.Parent.FullName, "zpl.txt"); + } + + if (System.IO.File.Exists(zplfil)) + { + PrinterL.baseZPL = System.IO.File.ReadAllText(zplfil, System.Text.Encoding.Default); + } + else + { + Pub.log.AddAT("Default ZPL file not found, using settings file content"); + if (Pub.setting.PrinterForm7) + { + PrinterL.baseZPL = Properties.Settings.Default.ZPL7; + } + else + { + PrinterL.baseZPL = Properties.Settings.Default.ZPL; + } + + } + } + + private void checkBox5_CheckedChanged(object sender, EventArgs e) + { + // cmbUser.Enabled = checkBox5.Checked; + // if(cmbUser.Enabled && cmbUser.Text.isEmpty()) + // { + // cmbUser.Text = string.Format("{0}({1})", Pub.LoginName, Pub.LoginNo); + // } + } + + void refreshList() + { + //검색일자 검색 + if (dtED.Value < dtSD.Value) + { + Util.MsgE("Search end date is earlier than start date"); + dtSD.Value = dtED.Value; + dtSD.Focus(); + return; + } + //저장소초기화 + this.dataSet1.Component_Reel_Result.Clear(); + + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + wat.Restart(); + + //자료를 검색한다. + var search = tbSearch.Text.Trim(); + if (search.isEmpty()) search = "%"; + else search = "%" + search + "%"; + + ta.Fill(this.dataSet1.Component_Reel_Result, Pub.setting.MCName, dtSD.Value.ToShortDateString(), dtED.Value.ToShortDateString(), search); + + wat.Stop(); + + tbSearch.Focus(); + tbSearch.SelectAll(); + dv.AutoResizeColumns(); + + } + private void btSearch_Click(object sender, EventArgs e) + { + refreshList(); + } + + private void tbiSearch_KeyDown(object sender, KeyEventArgs e) + { + //내부검색기능 + if (e.KeyCode == Keys.Enter) + { + FindData(); + } + + } + void FindData() + { + string searchkey = tbFind.Text.Trim(); + if (searchkey.isEmpty()) + { + bs.Filter = ""; + tbFind.BackColor = SystemColors.Control; + } + else + { + string filter = "rid0 like '%{0}%' or sid0 like '%{0}%' or qr like '%{0}%' or vlot like '%{0}%'"; + filter = string.Format(filter, searchkey); + try + { + bs.Filter = filter; + tbFind.BackColor = Color.Lime; + } + catch + { + bs.Filter = ""; + tbFind.BackColor = Color.Pink; + } + } + tbFind.Focus(); + tbFind.SelectAll(); + } + private void btExport_Click(object sender, EventArgs e) + { + saveXLS(); + } + void saveXLS() + { + + var license = ("Amkor Technology/windows-242f240302c3e50d6cb1686ba2q4k0o9").Split('/'); + var xls = new libxl.XmlBook(); + xls.setKey(license[0], license[1]); + xls.addSheet("Result"); + var Sheet = xls.getSheet(0); + + int row = 0; + for (int i = 0; i < this.dv.Columns.Count; i++) + { + var col = this.dv.Columns[i]; + Sheet.writeStr(row, i, col.HeaderText); + } + row += 1; + foreach (DataGridViewRow dr in this.dv.Rows) + { + for (int i = 0; i < this.dv.Columns.Count; i++) + { + var propertyName = dv.Columns[i].DataPropertyName; + if (propertyName.isEmpty()) + { + Sheet.writeStr(row, i, dr.Cells[i].FormattedValue.ToString());// dr[colname].ToString()); + } + else + { + var dType = this.dataSet1.Component_Reel_Result.Columns[propertyName].DataType; + if (dType == typeof(float)) Sheet.writeNum(row, i, (float)dr.Cells[i].Value); + else if (dType == typeof(double)) Sheet.writeNum(row, i, (double)dr.Cells[i].Value); + else if (dType == typeof(int)) Sheet.writeNum(row, i, (int)dr.Cells[i].Value); + else Sheet.writeStr(row, i, dr.Cells[i].FormattedValue.ToString());// dr[colname].ToString()); + } + + } + row += 1; + } + Sheet.setAutoFitArea(0, 0, row, dv.Columns.Count); + + string filename = "export_{0}~{1}.xlsx"; + filename = string.Format(filename, dtSD.Value.ToString("yyyyMMdd"), dtED.Value.ToString("yyyyMMdd")); + + var sd = new SaveFileDialog(); + sd.Filter = "xlsx|*.xlsx"; + sd.FileName = filename; + sd.RestoreDirectory = true; + if (sd.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; + + try + { + + xls.save(sd.FileName); + Pub.log.Add("Export Data : " + sd.FileName); + if (Util.MsgQ("The following file has been created.\n\n" + sd.FileName + "\n\nWould you like to view the file?") == DialogResult.Yes) + Util.RunExplorer(sd.FileName); + } + catch (Exception ex) + { + Pub.log.AddE(ex.Message); + } + + } + private void 목록저장ToolStripMenuItem_Click(object sender, EventArgs e) + { + saveXLS(); + } + + + + private void label2_Click(object sender, EventArgs e) + { + + } + + private void viewXMLToolStripMenuItem_Click(object sender, EventArgs e) + { + //var drv = this.bs.Current as DataRowView; + //if (drv == null) return; + //var dr = drv.Row as DataSet1.Component_Reel_ResultRow; + //var file = dr.info_filename; + //if (file == "") return; + //Util.RunExplorer(file); + } + + private void dv_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + { + //var drv = this.bs.Current as DataRowView; + //if (drv == null) return; + //var dr = drv.Row as DataSet1.Component_Reel_ResultRow; + //var fi = new System.IO.FileInfo(dr.info_filename); + + //if (fi.Exists == false) + //{ + // Util.MsgE("결과 파일이 없습니다"); + // return; + //} + //else + //{ + // Util.RunExplorer(fi.Directory.FullName); + //} + + } + private void sendDataToolStripMenuItem_Click(object sender, EventArgs e) + { + var drv = this.bs.Current as DataRowView; + if (drv == null) return; + var dr = drv.Row as DataSet1.Component_Reel_ResultRow; + var data = dr.QR; + var bcd = new StdLabelPrint.CAmkorSTDBarcode(data); + if (bcd.VENDERNAME.isEmpty() && dr.VNAME.isEmpty() == false) + bcd.VENDERNAME = dr.VNAME.Trim(); + + var reeldata = new StdLabelPrint.Reel(); + reeldata.id = bcd.RID; + reeldata.manu = bcd.VENDERNAME; + reeldata.lot = bcd.VLOT; + reeldata.mfg = bcd.MFGDate; + reeldata.qty = bcd.QTY; + reeldata.sid = bcd.SID; + reeldata.partnum = bcd.PARTNO; + + PrinterL.Print(reeldata, false, Pub.setting.DrawBorder, Pub.setting.PrinterForm7); + } + + + private void btSetting_Click(object sender, EventArgs e) + { + var f = new fSetting(); + f.ShowDialog(); + PrinterL.printerName = Pub.setting.PrinterName; + } + + private void button1_Click(object sender, EventArgs e) + { + var str = tbFind.Text.Trim(); + var f = new Dialog.fTouchKeyFull("Enter Search Term", str); + if (f.ShowDialog() != DialogResult.OK) return; + tbFind.Text = f.tbInput.Text.Trim(); + FindData(); + } + } +} diff --git a/Handler/ResultView/fHistory.resx b/Handler/ResultView/fHistory.resx new file mode 100644 index 0000000..d2cd4b1 --- /dev/null +++ b/Handler/ResultView/fHistory.resx @@ -0,0 +1,2034 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABzRJREFUWEft + mFtTU2cUhv0Fbaftb+j0ohft2N/R1lqt1npoUc7ISQ4xBEg4JeF8EkRRWrS2ap1ObTtaqwilYCVyyiYQ + CASRQADlIKCoF2/X+nb2zk4At150xgv3zDPOMLjzsNa71vfBltfP6+dVe2xl9R8XlR+7STgKBbUqBUxp + TSglMnkKxTUOS3FVEHuVw2yvDCHXXhHEypQ7cqzlLaaiyq0Bjc2fgtLaVmtlPY6fPqtSz5xizqAuhGYc + U2hsRq2Wk82oOfl9kBMK3wmqGxSaBGZbJUyFZTcDGps/+SU1Eos8ffpM5YnCk6cvxdrzWHsSQuXx08gq + LJECGps/lpIqiSuy0QduxoYCCmEiWh5rKK8/BUPeCwia7VUSt+f/EtmM8mONyLTY9QUptBJnZEMJBXqh + QldPH1ZWVtfJLNPXbvf0hkis4/GaSkntSWTkWvUFs4vKJA5tuEg4f7V1oKS6ATTtOP3DhXUf3njmPGjK + YS2vw/XWTlXk0SYU1zQgLbdIXzCrsFTiwCoi4R+88HCZJvYMrBV1Qk6hrLYRly5fwUWitOakkKOBA60d + WIqrUUebYHHpYYjU6iPmscBWdRyp2YX6gsb8EokDGy6m8K+jZ51cYRlTS1IKoXKUa+TSGmm/dUcVWlll + HqnwakvJytcXNOTZJQ5siBj9tNr22OhlLytnIRSZ5RWFVRV+V7IxT18w02yTOLDaVoRTTO3QytXRYr78 + x1W0tXeg/Z9OXLnWIha5IpdjrSDZKiHycFlhRWXp4QoK6D2JBou+YDpNEgdWK6S0hRm7O6nKcasv/34F + vb29cDqdcLlccLvd8Hg88Hq9uNHaDjrqkF1UTku4DMOjXiEjsyxYXJLJo8onZObqC3JQObDBrARz4p+5 + L/aVUjmtXHefhPPX7+BiSw8Gh0cxMTEBn8+H1vZOIWcsKIWZ2j7pmxHDwiwsBuE4xGe8iKCJBCljways + 4trNdhxv+kFUTNtWRe7CdQfeS7yIN/afJZrxfsKPuHLLBb/fj7m5OdHuo/mlfFII7LSeLv1+DfMLSyp8 + FsemZesLJtMkcQu1Oamob1w3EJw5pXJauTf3NuGtPY34ILYZvukZzM/Po63jXyGWaSlGeq4NR7KtMFHb + H8wvBlgQOY1JzdIXTKKgcmC1OeGFrJVj2tr/EZn7idoaLvf27ga8s6sOf3W5sbS0hGHPWIhciqkQaTk2 + 3H+wIJi7P49saxmiUoz6ggkGs8SBVXLC2KtYMCjHq6S945YYCM7cRnLv7qzGze4RrK6uwjM2HiKXZCzA + EVMRZuceqGRRRiOTDS8gSEHlwC4sLgk4HzwYWjnec7xKeFp5IDhz4XIfRp3APP3/tbU1dHb1hMgdNuQh + gyrqn71PgzeHaYIzejApU18wLj1bolsviSn5WCSZNrqUnqUqBpcwB59XCU8rDwRnTivX6fQKuWfPntHl + 9Ywql2TMh7mkGucu/YYp/yympmdFVg0WOyISMvQFY1JNEgdWyYc2J96JSdgrT6gnBO85XiU8rfwhnLkb + jmG1cix3u7tflUvPLcYQ5ZG/d3KK8eMe4/NTRW34JiFdXzCKJokDy0LMLBPIyQwhDY4Ejy/6l/ccrxKe + Vh4IzpxWLt1sU9t6u1cSMhO+aZnJadydnBLQAYH9can6gpEpBoluNJihfDByToJZmfbPiRZzlZUTgtvd + 1nEb7pFRMRCcOW1bWS7JWCjL3JvCuMCH8QkfdYWZ5JsM9sW+gOChJINkpMDKMpSRAL5AVhheqoocnxDK + Eg5fJYpcfKZFwCIMH5fM6N17GB2XSTEVYE9Uir5gRGKmRDeakJyIrFBrmKs3/n5pudh0M6KP5ODir3/C + Mz4Bj1dmhBm7K6CbDAkm6QtyUDmw9zbICbeHX1xRf3qdXLa1HA3f/Yi6pnPIpK+FyuUiq6gKA7SShklG + MDoOd4AhjxeJRy3YHZmoL3ggPk3iwG6UE217LtDNmX6PFXKldJsOVkWuSD5d9VkuLsOCpp9+kWVIhGWY + wZExgYukGbrJYNfBBH1BnqQjFFhFZEyTk/D2uEnk16st9AHekIow0tAofr78p0ZElhlwMx5IzNAInMzg + MP0wOdgREa8vuDcmReLAKjIiJ4GqbNaejarC7VwvMoJ+kul3DaPP5UbfgBu9A0PolYboJmPCjm/i9AX3 + RCVLybTtw0We1x61KkMBGRLhqsgyJBIm0yMNosc5iG6nC939LtzpH0B0aha2H4jRF/yKgsqBDRV5fns2 + q8p6EaJvAA6BhC5a3F29Tvr92YnIlKP4fF+UvuDug4dbv45OFqFl4jOIdJk4yglnJTZNwRRCTFqWDFWD + oVOJMPI1igQUjvKtBYe0JBmoerH4bG+0/h+Pdhw8vPXLiISWnRHxDsG3Mjs0fCGIlTkQ66CXEzGO7fu1 + RDu275PZJohybNsb5fgsjE9VIm98sivio4DG6+f184o8W7b8B7JRe7LzHiHuAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN + 0gAADdIBb5L+jgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALxSURBVEhL5ZTL + T1NBGMVZuPI/8H9whxgFDdVUEzX1URa6AjGEKAZDjbEoKBihiGAExSBQSktBoLys4RGQShVofSBFQDCK + EZSFQQiifVAoHDvD3HqLkNp7kY2nOcl3Tzrfb765nYb830rOUUOIr+ZpO1gLYSJNghVZk11cg/R83RPW + JngJBdsdLuSU1JDJLaxVcBIKJhIFFwMmEgznN2kfM/nMiZ9x+crNEniu2rAUFFzoxGuZtQ0s8mVOKycj + 4mf8fDUJBotVUOBo9UWsp1nbwOIWxGlToOmqg95qhLI2x69Z/mMdql40IbOpkD4nValQ87IF8bor9Lnc + 0oh0411as7aBxTXvG3+LT1MTsIzaMLfgRmLldZpXWh9h2j6D5gEzXPNz0HTX43R5GhaXFnGjpZjWS95P + VnORMPCMYxal3oljNZfoNIpqFc17xwbROfKc1kXmahSYKmg9OjkOw6tW3GxVw70wj1Nll0WAn9XSmm8C + Iidg/dhP6xi1kuZGm8m7qSHUv27DwJd3vu+ztoHFLVgLTHzuQQb0FiOcbhe0PQ00UzXf9675gf7PI/T9 + 62119LqxtoHFNefA5Kib3nTigiGb5rqeRu9xltDaNj4M07CV1uRoyRG7PfNIabhNodslMj8zxOriwIMT + 7+l76/7QC4fbibMV12jeMvAUX2envJsxwz7nRGFnFc2JyRF/d/6kx8+B1XUm6r8Gx+tSoe1u8F6Nhzhf + neVrHlOqxJ0Ovd914kyu0K02Da0Fg8U6aPB6/mUKBpNdc+bEz/j5atqwiVW5BRTANx/Md1ikrIghlyVm + Yo/HgwRFKuIUaT7gSkcnJNvDpcfMEolkE0MuS+w7djpdOBGbiMSU7D+gZ5Qq9659UUOhMtlmhvut9fhx + fZuaxsGok0jOvOeDKjMKFsOl8snQ3fItDOUvAhZrQ7sVrV19iDxwHNfyyqgjpHL7NsmhrQzzbxW257A8 + Yn+Ug5jULN4Y7ZAeUezcezSJPfIUEvILA5nT3LqWQaIAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK + XQAACl0B/If0DAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAM3SURBVEhLtZZZ + TxNRFMeJRuMaY6Iv+qRG426ivOCDr8YP4BdQg/HRKJQCHaat2paWlpYudqcz3ehGlYgp2hJAKd1sywMS + wASklIISDLtEOs4lNz7oWDow/SUnzcw99//vnHPvnSljAhQ176uRmU7XSPQ36sX6U+AaDjEPiqK7EIXt + EV/TNig0tudUnuCs6U3/PPgF1+A+qrRVgjw4ZefUig2Xn6mdo3hXfDmaWSXSc8Q/EZlaIcjxJZ7GMcKW + mC7CqdsHabHcEeq9MwOTy5SGf0f46xIh0Htz3BbsNpSgDyozXRcafbPx3Dqlyf8C5AuM3lmOAr8GpYrn + rsu1m6d2jA1kVijFtwpQIXL+CO2eIwr8oSOUWqQSLTZsoeQC0ozdh5LFwdc4BxMz9Er8d8SnfxI8jTMF + JbcGVakOiYztWSoxuiEw+LIoqj0ApQvDlmjPa7yhHJUQ3VC5gzl2k+4clC4Mq0l309wZnqMSohsmUoct + NlZA6cKAf6hyM/PEandwuqpRewZKFwb0hKkei4y+KVpnOf+lMxnNrlGKFRvRqVWC3B0JKFkcYB/j7+I7 + 2sdYIEp/H4OTi6u0f+mfWKQU3Sr6xxcIrspO/+QCfeFIWz+JDN78ds7q5zp3liU1X4FyxQEOELJEidaO + 3jVbIAwWSJ7e28mTpf12Ygm1RxC5JY2//bjeGRkiDP7QUr2stYcs2zDWFftR6H2MBWLzXLV9qFqkvwDl + iuOJRHusQYF9tgfCG8DU3NGz2iDHA6DfoFccmeUBX+VMUn2BcMn75Pg92j2tFhlPIApstO19BJr2riHN + lj4Ude2FKX9g7JsLiJBPOuEKxfLAFJSZI7fEH0td+2EK81Q1ms9ylXjG0x0ngClZ5l+IHEs9FWMHYQrz + 1Ir1V7kt1oyvJ7lp6uiKbJCmw2CBwRTmYcssFTyVLevvS22auoOxPFneMfYL03GYwjx1EsMtnto24/+Q + 3jT1dCcIcmGN10ktJ2EK89QI1Ee5SmvmFTRtJ8sMyg16DVNKA7ltyputr78BU39fGphmWULdJThcOsC+ + RBV4Sm7t+I4qrZN1UmM5HCo9lVrtHrCiyac/DG+VmLKy39JXNTjPcJ2cAAAAAElFTkSuQmCC + + + + 181, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN + 0gAADdIBb5L+jgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAFPSURBVDhPlZJf + S8JgGMX3qbruC9RHKIIgqvsSglwXRVBRUhHWLHMFZXYhdGEjy9JYipRBZSqW9I8RSCDmn6vT3seVU96c + /uDA+7x7ztkZTLDNSWhHosMTE3iwh1awnQWXD+KyrBq2Or8BSi5Iaj4z2E65UtVDDmBf2m4M6ZPG0KkM + aw12cZVNIPGSRDCpol8aR/TpluZwOo5FxY3LzDVGZBGfhTw/oFgpkXH9fB/Dsp0WB90T2LjwYsgzibcv + DfMBF0KPUX5AoVxsqLgVOURae4YvHqA5reVwfBfG6ulu6wBZ9VMDZ2iPGn1XS3TvvzmhlqM7U/yASCaO + 5EcWZ3rFgU0b7t8z9NZQKkaG6aM1pPRG7MwN6FSGtUar/6B5Zjy85vkB7dLV3UMy7O01MPNvgBUrTvef + 2aRZCrCSV1Hp22ccLpO5VzQ6dAYz1s2C8AOKH12z48KW+wAAAABJRU5ErkJggg== + + + + + R0lGODlhEAAQAIQfAJfL/HKQrsDf/ezx9uXt9cfj/omwyldwkbvd/UlVa/L2+mOc4bba/KPQ+6vU+4m7 + 7FJhe7TR4F6Z4ENLXNTh6rHX/JrA1qjL3mif4tvn7ykxQz5FVeLp8Hyhvf///////yH/C05FVFNDQVBF + Mi4wAwEBAAAh+QQBAAAfACwAAAAAEAAQAAAIvQA9CBxIcOCHgx4yRIhwwYIFAwY6dAgQwAPCCBkIDNC4 + kYDHBwcseohAoIBJkwJSKngAUuAFBScLpESAQIFNCAItwEQpAAMCBgwqKMDpQSdPBBgWBHUwVKABmBii + LpgqwQHTBE4V9Ey6QILXBg0IYPXQYcDMoF/BEpggsCzNpRLANgDAga2HAAN+LpULAECGDQIDKPhZwSrY + vgAGAPZwgIKCjhwic8gwIIKGwAcyQ4CQIMGECRs2aCBasDTBgAA7 + + + + 249, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 117, 17 + + + 17, 17 + + + 366, 17 + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/Handler/ResultView/fSetting.Designer.cs b/Handler/ResultView/fSetting.Designer.cs new file mode 100644 index 0000000..ae89eaa --- /dev/null +++ b/Handler/ResultView/fSetting.Designer.cs @@ -0,0 +1,76 @@ + +namespace ResultView +{ + partial class fSetting + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.button1.Location = new System.Drawing.Point(0, 457); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(411, 58); + this.button1.TabIndex = 0; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // propertyGrid1 + // + this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill; + this.propertyGrid1.Location = new System.Drawing.Point(0, 0); + this.propertyGrid1.Name = "propertyGrid1"; + this.propertyGrid1.Size = new System.Drawing.Size(411, 457); + this.propertyGrid1.TabIndex = 1; + // + // fSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(411, 515); + this.Controls.Add(this.propertyGrid1); + this.Controls.Add(this.button1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSetting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fSetting"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.PropertyGrid propertyGrid1; + } +} \ No newline at end of file diff --git a/Handler/ResultView/fSetting.cs b/Handler/ResultView/fSetting.cs new file mode 100644 index 0000000..2fc839e --- /dev/null +++ b/Handler/ResultView/fSetting.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ResultView +{ + public partial class fSetting : Form + { + public fSetting() + { + InitializeComponent(); + this.propertyGrid1.SelectedObject = Pub.setting; + } + + private void button1_Click(object sender, EventArgs e) + { + this.Validate(); + Pub.setting.Save(); + DialogResult = DialogResult.OK; + } + } +} diff --git a/Handler/ResultView/fSetting.resx b/Handler/ResultView/fSetting.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/ResultView/fSetting.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/ResultView/fTouchKeyFull.Designer.cs b/Handler/ResultView/fTouchKeyFull.Designer.cs new file mode 100644 index 0000000..27a93d5 --- /dev/null +++ b/Handler/ResultView/fTouchKeyFull.Designer.cs @@ -0,0 +1,187 @@ +namespace ResultView.Dialog +{ + partial class fTouchKeyFull + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.touchKeyFull1 = new arCtl.TouchKeyFull(); + this.tbInput = new System.Windows.Forms.TextBox(); + this.lbTitle = new arCtl.arLabel(); + this.button1 = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // touchKeyFull1 + // + this.touchKeyFull1.Dock = System.Windows.Forms.DockStyle.Fill; + this.touchKeyFull1.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.touchKeyFull1.Location = new System.Drawing.Point(6, 96); + this.touchKeyFull1.Name = "touchKeyFull1"; + this.touchKeyFull1.Size = new System.Drawing.Size(1088, 359); + this.touchKeyFull1.TabIndex = 0; + this.touchKeyFull1.keyClick += new arCtl.TouchKeyFull.KeyClickHandler(this.touchKeyFull1_keyClick); + // + // tbInput + // + this.tbInput.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbInput.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbInput.Dock = System.Windows.Forms.DockStyle.Fill; + this.tbInput.Font = new System.Drawing.Font("맑은 고딕", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.tbInput.ForeColor = System.Drawing.Color.White; + this.tbInput.Location = new System.Drawing.Point(100, 0); + this.tbInput.Name = "tbInput"; + this.tbInput.Size = new System.Drawing.Size(888, 46); + this.tbInput.TabIndex = 0; + this.tbInput.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // lbTitle + // + this.lbTitle.BackColor = System.Drawing.Color.Gray; + this.lbTitle.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.lbTitle.BackgroundImagePadding = new System.Windows.Forms.Padding(0); + this.lbTitle.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.lbTitle.BorderColorOver = System.Drawing.Color.DarkBlue; + this.lbTitle.BorderSize = new System.Windows.Forms.Padding(1); + this.lbTitle.ColorTheme = arCtl.arLabel.eColorTheme.Custom; + this.lbTitle.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbTitle.Dock = System.Windows.Forms.DockStyle.Top; + this.lbTitle.Font = new System.Drawing.Font("Consolas", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbTitle.ForeColor = System.Drawing.Color.White; + this.lbTitle.GradientEnable = true; + this.lbTitle.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; + this.lbTitle.GradientRepeatBG = false; + this.lbTitle.isButton = false; + this.lbTitle.Location = new System.Drawing.Point(6, 5); + this.lbTitle.MouseDownColor = System.Drawing.Color.Yellow; + this.lbTitle.MouseOverColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lbTitle.msg = null; + this.lbTitle.Name = "lbTitle"; + this.lbTitle.ProgressBorderColor = System.Drawing.Color.Black; + this.lbTitle.ProgressColor1 = System.Drawing.Color.LightSkyBlue; + this.lbTitle.ProgressColor2 = System.Drawing.Color.DeepSkyBlue; + this.lbTitle.ProgressEnable = false; + this.lbTitle.ProgressFont = new System.Drawing.Font("Consolas", 10F); + this.lbTitle.ProgressForeColor = System.Drawing.Color.Black; + this.lbTitle.ProgressMax = 100F; + this.lbTitle.ProgressMin = 0F; + this.lbTitle.ProgressPadding = new System.Windows.Forms.Padding(0); + this.lbTitle.ProgressValue = 0F; + this.lbTitle.ShadowColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + this.lbTitle.Sign = ""; + this.lbTitle.SignAlign = System.Drawing.ContentAlignment.BottomRight; + this.lbTitle.SignColor = System.Drawing.Color.Yellow; + this.lbTitle.SignFont = new System.Drawing.Font("Consolas", 7F, System.Drawing.FontStyle.Italic); + this.lbTitle.Size = new System.Drawing.Size(1088, 44); + this.lbTitle.TabIndex = 2; + this.lbTitle.Text = "INPUT"; + this.lbTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbTitle.TextShadow = true; + this.lbTitle.TextVisible = true; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.button1.Location = new System.Drawing.Point(1028, 11); + this.button1.Margin = new System.Windows.Forms.Padding(0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(60, 34); + this.button1.TabIndex = 3; + this.button1.Text = "Close"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.tbInput); + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.button2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(6, 49); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1088, 47); + this.panel1.TabIndex = 4; + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Right; + this.button3.Location = new System.Drawing.Point(988, 0); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(100, 47); + this.button3.TabIndex = 1; + this.button3.Text = "Delete 1 Char"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Left; + this.button2.Location = new System.Drawing.Point(0, 0); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(100, 47); + this.button2.TabIndex = 0; + this.button2.Text = "Delete 1 Char"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // fTouchKeyFull + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(18)))), ((int)(((byte)(18))))); + this.ClientSize = new System.Drawing.Size(1100, 460); + this.Controls.Add(this.touchKeyFull1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.button1); + this.Controls.Add(this.lbTitle); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.KeyPreview = true; + this.Name = "fTouchKeyFull"; + this.Padding = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fTouchKeyFull"; + this.Load += new System.EventHandler(this.fTouchKeyFull_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private arCtl.TouchKeyFull touchKeyFull1; + private arCtl.arLabel lbTitle; + public System.Windows.Forms.TextBox tbInput; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/Handler/ResultView/fTouchKeyFull.cs b/Handler/ResultView/fTouchKeyFull.cs new file mode 100644 index 0000000..a7a5379 --- /dev/null +++ b/Handler/ResultView/fTouchKeyFull.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ResultView.Dialog +{ + public partial class fTouchKeyFull : Form + { + public fTouchKeyFull(string title, string value) + { + InitializeComponent(); + this.lbTitle.Text = title; + this.tbInput.Text = value; + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) + this.Close(); + }; + this.lbTitle.MouseMove += LbTitle_MouseMove; + this.lbTitle.MouseUp += LbTitle_MouseUp; + this.lbTitle.MouseDown += LbTitle_MouseDown; + } + + private void fTouchKeyFull_Load(object sender, EventArgs e) + { + this.Show(); + //'Application.DoEvents(); + this.tbInput.SelectAll(); + this.tbInput.Focus(); + } + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + + private void touchKeyFull1_keyClick(string key) + { + switch (key) + { + case "CLR": + this.tbInput.Text = string.Empty; + break; + case "BACK": + + if (this.tbInput.SelectionLength > 0) + { + //A specific area has been selected + var head = tbInput.Text.Substring(0, tbInput.SelectionStart); + var tail = tbInput.Text.Substring(tbInput.SelectionLength + tbInput.SelectionStart); + tbInput.Text = head + tail; + tbInput.SelectionStart = head.Length; + tbInput.SelectionLength = 0; + } + else + { + var si = this.tbInput.SelectionStart - 1; + var sl = this.tbInput.SelectionLength; + if(si >= 0) + { + var head = tbInput.Text.Substring(0, si); + var tail = tbInput.Text.Substring(si + 1); + + tbInput.Text = head + tail; + tbInput.SelectionStart = head.Length; + tbInput.SelectionLength = 0; + } + } + + break; + case "ENTER": + this.DialogResult = DialogResult.OK; + break; + default: + var si2 = this.tbInput.SelectionStart ; + var head2 = tbInput.Text.Substring(0, si2); + var tail2 = tbInput.Text.Substring(si2 ); + + tbInput.Text = head2 + key + tail2; + tbInput.SelectionStart = head2.Length+1; + tbInput.SelectionLength = 0; + + + //this.tbInput.Text += key; + //this.tbInput.SelectionStart = this.tbInput.TextLength; + + break; + } + this.tbInput.Focus(); + } + + private void button1_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void button2_Click(object sender, EventArgs e) + { + //Delete from front + if (this.tbInput.Text.Length < 1) return; + if (this.tbInput.Text.Length < 2) tbInput.Text = string.Empty; + else tbInput.Text = tbInput.Text.Substring(1); + tbInput.SelectionStart = 0;// this.tbInput.TextLength; + tbInput.Focus(); + } + + private void button3_Click(object sender, EventArgs e) + { + //Delete from back + if (this.tbInput.Text.Length < 1) return; + if (this.tbInput.Text.Length < 2) tbInput.Text = string.Empty; + else tbInput.Text = tbInput.Text.Substring(0, tbInput.Text.Length - 1); + tbInput.SelectionStart = this.tbInput.TextLength; + tbInput.Focus(); + } + } +} diff --git a/Handler/ResultView/fTouchKeyFull.resx b/Handler/ResultView/fTouchKeyFull.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/ResultView/fTouchKeyFull.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/ResultView/libxl.dll b/Handler/ResultView/libxl.dll new file mode 100644 index 0000000..204a7e3 Binary files /dev/null and b/Handler/ResultView/libxl.dll differ diff --git a/Handler/STDLabelAttach(ATV).sln b/Handler/STDLabelAttach(ATV).sln new file mode 100644 index 0000000..4ba841c --- /dev/null +++ b/Handler/STDLabelAttach(ATV).sln @@ -0,0 +1,253 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36310.24 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "STDLabelAttach(ATV)", "Project\STDLabelAttach(ATV).csproj", "{65F3E762-800C-499E-862F-A535642EC59F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Import", "Import", "{C423C39A-44E7-4F09-B2F7-7943975FF948}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResultView", "ResultView\ResultView.csproj", "{4ED6F01A-0081-43E3-8EE5-7446BE0F2366}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arFrameControl", "Sub\arFrameControl\arFrameControl.csproj", "{A16C9667-5241-4313-888E-548375F85D29}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arImageViewer.Emgu", "Sub\arImageViewer_Emgu\arImageViewer.Emgu.csproj", "{ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StdLabelPrint", "Sub\StdLabelPrint\StdLabelPrint.csproj", "{B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Setting", "Sub\Setting\Setting.csproj", "{48654765-548D-42ED-9238-D65EB3BC99AD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arCommSM", "Sub\CommSM\arCommSM.csproj", "{D54444F7-1D85-4D5D-B1D1-10D040141A91}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommData", "Sub\CommData\CommData.csproj", "{14E8C9A5-013E-49BA-B435-EFEFC77DD623}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "솔루션 항목", "솔루션 항목", "{2A3A057F-5D22-31FD-628C-DF5EF75AEF1E}" + ProjectSection(SolutionItems) = preProject + build.bat = build.bat + CLAUDE.md = CLAUDE.md + README.md = README.md + todo.md = todo.md + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MemoryMapCore", "Sub\MemoryMapCore\MemoryMapCore.csproj", "{140AF52A-5986-4413-BF02-8EA55A61891B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UIControl", "Sub\UIControl\UIControl.csproj", "{9264CD2E-7CF8-4237-A69F-DCDA984E0613}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arAjinextek_Union", "Sub\arAjinextek_Union\Library\arAjinextek_Union\arAjinextek_Union.csproj", "{62370293-92AA-4B73-B61F-5C343EEB4DED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arCommUtil", "Sub\commutil\arCommUtil.csproj", "{14E8C9A5-013E-49BA-B435-FFFFFF7DD623}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|x64.ActiveCfg = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|x86.ActiveCfg = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Debug|x86.Build.0 = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Any CPU.Build.0 = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|Mixed Platforms.Build.0 = Release|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|x64.ActiveCfg = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC59F}.Release|x86.ActiveCfg = Release|x86 + {65F3E762-800C-499E-862F-A535642EC59F}.Release|x86.Build.0 = Release|x86 + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|x64.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Debug|x86.ActiveCfg = Debug|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Any CPU.Build.0 = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|x64.ActiveCfg = Release|Any CPU + {4ED6F01A-0081-43E3-8EE5-7446BE0F2366}.Release|x86.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|x64.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Debug|x86.ActiveCfg = Debug|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Any CPU.Build.0 = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|x64.ActiveCfg = Release|Any CPU + {A16C9667-5241-4313-888E-548375F85D29}.Release|x86.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x64.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x86.ActiveCfg = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Debug|x86.Build.0 = Debug|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Any CPU.Build.0 = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x64.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x64.Build.0 = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x86.ActiveCfg = Release|Any CPU + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C}.Release|x86.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x64.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x64.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x86.ActiveCfg = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Debug|x86.Build.0 = Debug|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Any CPU.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x64.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x64.Build.0 = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x86.ActiveCfg = Release|Any CPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D}.Release|x86.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x64.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x64.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x86.ActiveCfg = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Debug|x86.Build.0 = Debug|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Any CPU.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x64.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x64.Build.0 = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x86.ActiveCfg = Release|Any CPU + {48654765-548D-42ED-9238-D65EB3BC99AD}.Release|x86.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x64.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x64.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x64.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x64.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x64.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x64.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x64.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x64.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x64.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x64.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x64.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x64.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x64.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x64.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x86.ActiveCfg = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Debug|x86.Build.0 = Debug|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Any CPU.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x64.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x64.Build.0 = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x86.ActiveCfg = Release|Any CPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613}.Release|x86.Build.0 = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x64.ActiveCfg = Debug|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x64.Build.0 = Debug|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x86.ActiveCfg = Debug|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x86.Build.0 = Debug|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Any CPU.Build.0 = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Mixed Platforms.Build.0 = Release|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x64.ActiveCfg = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x64.Build.0 = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x86.ActiveCfg = Release|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x86.Build.0 = Release|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x64.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x64.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x86.ActiveCfg = Debug|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Debug|x86.Build.0 = Debug|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Any CPU.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|Mixed Platforms.Build.0 = Release|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x64.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x64.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x86.ActiveCfg = Release|x86 + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {A16C9667-5241-4313-888E-548375F85D29} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {ED0D4179-FC0D-48D5-8BB3-CBF0F03D170C} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {48654765-548D-42ED-9238-D65EB3BC99AD} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {D54444F7-1D85-4D5D-B1D1-10D040141A91} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {14E8C9A5-013E-49BA-B435-EFEFC77DD623} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {140AF52A-5986-4413-BF02-8EA55A61891B} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {9264CD2E-7CF8-4237-A69F-DCDA984E0613} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {62370293-92AA-4B73-B61F-5C343EEB4DED} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + {14E8C9A5-013E-49BA-B435-FFFFFF7DD623} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B5B1FD72-356F-4840-83E8-B070AC21C8D9} + EndGlobalSection +EndGlobal diff --git a/Handler/Sub/CommData/CommData.csproj b/Handler/Sub/CommData/CommData.csproj new file mode 100644 index 0000000..966ed4e --- /dev/null +++ b/Handler/Sub/CommData/CommData.csproj @@ -0,0 +1,53 @@ + + + + + Debug + AnyCPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623} + Library + Properties + VarData + VarData + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Sub/CommData/Enum.cs b/Handler/Sub/CommData/Enum.cs new file mode 100644 index 0000000..4571dd7 --- /dev/null +++ b/Handler/Sub/CommData/Enum.cs @@ -0,0 +1,474 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AR +{ + public enum eswPLCAddr + { + Ready = 0, + Spare1, + Spare2, + + /// + /// 1=Limit Down + /// 2=Detect + /// 3=Limit Up + /// + LPort, + CPort, + RPort, + + /// + /// 1 = Down, + /// 2 = Up + /// 3 = stop + /// + LMotor, + CMotor, + RMotor, + + /// + /// 시퀀스값 0~ + /// 0 : nothing + /// 1 : ~ running + /// + LSts, + CSts, + RSts, + + /// + /// 1=down, + /// 2=up, + /// 3=stop, + /// 4=refresh + /// + LCmd, + CCmd, + RCmd, + + } + + //public enum eVarUInt32 + //{ + //} + + //public enum eVarByte + //{ + // None = 0, + + + + + //} + + public enum eVarBool + { + None = 0, + NeedUserTouchAfterHome, + BarcodeHook, + NeedTopJigUnloaderPosition, + Use_Conveyor, + LEFT_ITEM_PICKOFF, + RIGT_ITEM_PICKOFF, + + //Option_vname, + Opt_UserConfim, + Opt_ServerQty, + Opt_UserQtyRQ, + Option_partUpdate, + Opt_NewReelID, + Option_AutoConf, + Opt_SIDConvert, + Opt_ApplySIDConv, + Opt_ApplyWMSInfo, + Opt_ApplySIDInfo, + Opt_ApplyJobInfo, + Opt_CheckSIDExist, + + + + Opt_WMS_Apply_PartNo, + Opt_WMS_Apply_CustCode, + Opt_WMS_Apply_SID, + Opt_WMS_Apply_VenderName, + Opt_WMS_Apply_batch, + Opt_WMS_Apply_qty, + Opt_WMS_Apply_MFG, + Opt_WMS_Where_PartNo, + Opt_WMS_Where_CustCode, + Opt_WMS_Where_SID, + Opt_WMS_Where_VLOT, + Opt_WMS_Where_MC, + Opt_WMS_Where_MFG, + Opt_WMS_WriteServer, + + + Opt_SID_Apply_PartNo, + Opt_SID_Apply_CustCode, + Opt_SID_Apply_SID, + Opt_SID_Apply_VenderName, + Opt_SID_Apply_PrintPos, + Opt_SID_Apply_batch, + Opt_SID_Apply_qty, + Opt_SID_Where_PartNo, + Opt_SID_Where_CustCode, + Opt_SID_Where_SID, + Opt_SID_Where_VLOT, + Opt_SID_Where_MC, + Opt_SID_WriteServer, + + + Opt_Job_Apply_PartNo, + Opt_Job_Apply_CustCode, + Opt_Job_Apply_SID, + Opt_Job_Apply_VenderName, + Opt_Job_Apply_PrintPos, + Opt_Job_Where_PartNo, + Opt_Job_Where_CustCode, + Opt_Job_Where_SID, + Opt_Job_Where_VLOT, + + Opt_Conv_Apply_PartNo, + Opt_Conv_Apply_CustCode, + Opt_Conv_Apply_SID, + Opt_Conv_Apply_VenderName, + Opt_Conv_Apply_PrintPos, + Opt_Conv_Apply_Batch, + Opt_Conv_Apply_QtyMax, + Opt_Conv_Where_PartNo, + Opt_Conv_Where_CustCode, + Opt_Conv_Where_SID, + Opt_Conv_Where_VLOT, + Opt_Conv_WriteServer, + + /// + /// 카메라 사용안함 + /// + Opt_DisableCamera, + + /// + /// 프린터사용안함 + /// + Opt_DisablePrinter, + + Enable_PickerMoveX, + + VisionL_Retry, + VisionR_Retry, + + Need_UserConfirm_Data, + + /// + /// 키엔스바코드의 수신을 확인합니다 + /// + wait_for_keyence, + wait_for_keyenceL, + wait_for_keyenceR, + + /// + /// 피커 키엔스 인식 실패로 재시도를 하고 있습니다. + /// + JOB_PickON_Retry, + JOB_Empty_SIDConvertInfo, + // JOB_BYPASS_LEFT, + // JOB_BYPASS_RIGHT, + + FG_RDY_CAMERA_L, + FG_RDY_CAMERA_R, + FG_INIT_MOTIO, + FG_DOORSAFTY, + FG_AREASAFTY, + FG_INIT_PRINTER, + + + FG_KEYENCE_READOK_L, + FG_KEYENCE_READOK_R, + FG_KEYENCE_TRIGGER, + FG_KEYENCE_OFFF, + FG_KEYENCE_OFFR, + + FG_RUN_LEFT, + FG_RUN_RIGHT, + + FG_BUSY_LEFT, + FG_BUSY_RIGHT, + + FG_PORT0_ENDDOWN, + FG_PORT1_ENDDOWN, + FG_PORT2_ENDDOWN, + + FG_WAIT_PAPERDETECTL, + FG_WAIT_PAPERDETECTR, + + FG_RUN_PLZ_PICKON, + FG_RUN_PRZ_PICKON, + FG_RUN_PLZ_PICKOF, + FG_RUN_PRZ_PICKOF, + + FG_RUN_PLM_PICKON, + FG_RUN_PLM_PICKOF, + FG_RUN_PRM_PICKON, + FG_RUN_PRM_PICKOF, + + FG_WAT_MAGNET0, + FG_WAT_MAGNET1, + FG_WAT_MAGNET2, + + + + FG_PRC_VISIONL, + FG_PRC_VISIONR, + + FG_END_VISIONL, + FG_END_VISIONR, + + FG_MOVE_PICKER, + FG_JOYSTICK, + + /// + /// Y축이 Front로 가지러 가기로 함 + /// + FG_CMD_YP_LPICKON, + FG_CMD_YP_LPICKOF, + FG_CMD_YP_RPICKON, + FG_CMD_YP_RPICKOF, + + //피커의 X축이 일을 하러 갔는가? + FG_RDY_PX_PICKON, + FG_RDY_PX_PICKONWAITL, + FG_RDY_PX_PICKONWAITR, + FG_RDY_PX_LPICKOF, + FG_RDY_PX_RPICKOF, + + //X축이 이동한후 해당 언로더에 자료를 셋팅했는가? + FG_SET_DATA_PORT0, + FG_SET_DATA_PORT2, + + FG_RDY_PZ_PICKON, + FG_RDY_PZ_LPICKOF, + FG_RDY_PZ_RPICKOF, + + FG_RUN_PRINTL, + FG_RUN_PRINTR, + + FG_OK_PRINTL, + FG_OK_PRINTR, + + /// + /// 해당 포트의 자재 준비여부 + /// + FG_RDY_PORT_PL, + FG_RDY_PORT_PC, + FG_RDY_PORT_PR, + + + FG_ENABLE_LEFT, + FG_ENABLE_RIGHT, + + + /// + /// 자재를 PICK 했다 + /// + FG_PK_ITEMON, + FG_PL_ITEMON, + FG_PR_ITEMON, + + FG_KEYENCE_IMAGEPROGRESS, + + /// + /// 포트에 아이템이 있는가? + /// 1번의 경우 Detect 센서가 들어오면 ItemON 설정을 한다. + /// 0,2번의 경우 피커가 아이템을 놓을때 설정한다 + /// 실제로는 ITEMON 과 Align =1, 일때 촬영이가능하게한다 + /// + FG_PORTL_ITEMON, + FG_PORTR_ITEMON, + + /// + /// 사용자가 바코드 확인 또는 정보를 편집하는 창 + /// + FG_WAIT_LOADERINFO, + + /// + /// SID정보가 복수가 검출되었을때 사용자가 선택하는 창 + /// + FG_WAIT_INFOSELECT, + FG_WAIT_INFOSELECTCLOSE, + /// + /// 작업시작화면 + /// + FG_SCR_JOBSELECT, + /// + /// 작업종료화면 + /// + //SCR_JOBFINISH, + /// + /// 작업완료 + /// + FG_JOB_END, + + FG_USERSTEP, + FG_MINSPACE, + FG_DEBUG, + + FG_AUTOOUTCONVL, + FG_AUTOOUTCONVR, + + VS_DETECT_REEL_L, + VS_DETECT_REEL_R, + VS_DETECT_CONV_L, + VS_DETECT_CONV_R, + + } + + public enum eVarString + { + Vision_Select_command, + Vision_Trig_command, + PrePick_ReelIDNew, + PrePick_ReelIDOld, + PrePick_ReelIDTarget, + JOB_CUSTOMER_CODE, + MULTISID_QUERY, + MULTISID_FIELDS, + } + + public enum eVarTime + { + DET5ON, + DET4ON, + PORT0, + PORT1, + PORT2, + MAGNET2, + MAGNET1, + MAGNET0, + QRCHECK0, + QRCHECK2, + KEYENCEWAIT, + LIVEVIEW0, + LIVEVIEW1, + LIVEVIEW2, + CHK_POSRSTCONVTIME, + PRINTL, + PRINTR, + CMDTIME_MOTYP, + CMDTIME_MOTZL, + CMDTIME_MOTZR, + JOB_END, + SMRUNERROR, + LOG_NEWIDERROR, + StatusReporttime, + JOBEVENT, + REFRESHLIST, + LEFT_ITEM_PICKOFF, + RIGT_ITEM_PICKOFF, + lastRecvWSL, + lastRecvWSR, + CONVL_START, + CONVR_START, + } + + + public enum eVarInt32 + { + PickOnCount = 0, + PickOfCount, + LPickOnCount, + RPickOnCount, + LPickOfCount, + RPickOfCount, + + LEFT_ITEM_COUNT, + RIGT_ITEM_COUNT, + + Front_Brush_Cleaning, + Rear_Brush_Cleaning, + Front_Laser_Cleaning, + Rear_Laser_Cleaning, + + + /// + /// 2번축, 3번축 각 축번호가 들어있다 + /// + PreBrushTargetF, + PreBrushTargetR, + + /// + /// 2번축, 3번축 각 축번호가 들어있다 + /// + PostBrushTargetF, + PostBrushTargetR, + + TopjigUnloadPort, + TopJigLoadPort, + DevConnectSeq, + BitmapCompatErr, + PickOnRetry, + } + + public enum eVarDBL + { + ThetaPosition = 0, + ThetaPositionL, + ThetaPositionR, + LEFT_ITEM_PICKOFF, + RIGT_ITEM_PICKOFF, + CONVL_RUNTIME, + CONVR_RUNTIME, + } + + public enum eECode : byte + { + + NOERROR = 0, + EMERGENCY = 1, + NOMODELV = 2,//작업모델 + NOMODELM = 3,//모션모델 + HOME_TIMEOUT = 9, + NOFUNCTION = 11, + + DOOFF = 27,//출력 off + DOON = 28,//출력 on + DIOFF = 29,//입력off + DION = 30,//입력 on + + MESSAGE_INFO = 32, + MESSAGE_ERROR = 33, + + AZJINIT = 39, //DIO 혹은 모션카드 초기화 X + //MOT_HSET = 41, + MOT_SVOFF = 42, + + MOT_CMD = 71, + USER_STOP = 72, + USER_STEP = 73, + POSITION_ERROR = 86, + MOTIONMODEL_MISSMATCH = 96, + + + //여기서부터는 전용코드로한다(소켓은 조금 섞여 있음) + VISCONF = 100, + UNSUPPORT, + NOJOBMODE, + PRINT, + SELECTNEXTREEL, + BCD_LEFT, + BCD_LEFT_TEMP, + BCD_LEFT_NEW, + BCD_RIGHT, + BCD_RIGHT_TEMP, + BCD_RIGHT_NEW, + BARCODEVALIDERR, + PRINTER, + QRDATAMISSMATCHL, + QRDATAMISSMATCHR, + MOTX_SAFETY, + CHANGEALERTLEFT, + CHANGEALERTRIGHT, + SIDVALIDATION, + + } +} diff --git a/Handler/Sub/CommData/Enum_IO.cs b/Handler/Sub/CommData/Enum_IO.cs new file mode 100644 index 0000000..a090d53 --- /dev/null +++ b/Handler/Sub/CommData/Enum_IO.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace AR +{ + + public enum eDIPin : byte + { + X00, X01, X02, X03, X04, X05, X06, X07, + X08, X09, X0A, X0B, X0C, X0D, X0E, X0F, + X10, X11, X12, X13, X14, X15, X16, X17, + X18, X19, X1A, X1B, X1C, X1D, X1E, X1F, + X20, X21, X22, X23, X24, X25, X26, X27, + X28, X29, X2A, X2B, X2C, X2D, X2E, X2F, + X30, X31, X32, X33, X34, X35, X36, X37, + X38, X39, X3A, X3B, X3C, X3D, X3E, X3F + } + + public enum eDIName : byte + { + BUT_STARTF = 0x00, BUT_STOPF, BUT_RESETF, BUT_EMGF, BUT_AIRF, + AIR_DETECT = 0x05, PICKER_SAFE = 0x08, + + DOORF1 = 0x0A, DOORF2, DOORF3, + DOORR1 = 0x0D, DOORR2, DOORR3, + + PORT0_SIZE_07 = 0x1A, PORT0_SIZE_13, PORTL_LIM_UP, PORTL_LIM_DN, PORTL_DET_UP, + PORT1_SIZE_07 = 0x10, PORT1_SIZE_13, PORTC_LIM_UP, PORTC_LIM_DN, PORTC_DET_UP, + PORT2_SIZE_07 = 0x15, PORT2_SIZE_13, PORTR_LIM_UP, PORTR_LIM_DN, PORTR_DET_UP, + + R_PICK_BW = 0x20, R_PICK_FW, R_PICK_VAC, + L_PICK_BW = 0x24, L_PICK_FW, L_PICK_VAC, + + L_CONV1 = 0x30, L_CONV4 = 0x33, + R_CONV1 = 0x34, R_CONV4 = 0x37, + + R_CYLUP = 0x38, R_CYLDN, + L_CYLDN = 0x3A, L_CYLUP, + + L_EXT_READY = 0x3E, + R_EXT_READY = 0x3F, + } + + public enum eDOPin : byte + { + Y00, Y01, Y02, Y03, Y04, Y05, Y06, Y07, + Y08, Y09, Y0A, Y0B, Y0C, Y0D, Y0E, Y0F, + Y10, Y11, Y12, Y13, Y14, Y15, Y16, Y17, + Y18, Y19, Y1A, Y1B, Y1C, Y1D, Y1E, Y1F, + Y20, Y21, Y22, Y23, Y24, Y25, Y26, Y27, + Y28, Y29, Y2A, Y2B, Y2C, Y2D, Y2E, Y2F, + Y30, Y31, Y32, Y33, Y34, Y35, Y36, Y37, + Y38, Y39, Y3A, Y3B, Y3C, Y3D, Y3E, Y3F + } + + public enum eDOName : byte + { + BUT_STARTF = 0x00, BUT_STOPF, BUT_RESETF, BUT_EMGF, BUT_AIRF, + + SOL_AIR = 0x07, BUZZER, + ROOMLIGHT = 0x0A, + + TWR_GRNF = 0x0D, TWR_YELF, TWR_REDF, + + PORTL_MOT_RUN = 0x1A, PORTL_MOT_DIR, PORTL_MAGNET, + PORTC_MOT_RUN = 0x10, PORTC_MOT_DIR, PORTC_MAGNET, + PORTR_MOT_RUN = 0x14, PORTR_MOT_DIR, PORTR_MAGNET, + + PRINTL_VACO = 0x1E, PRINTL_VACI, + PRINTR_VACO = 0x18, PRINTR_VACI, + PRINTL_AIRON = 0x20, PRINTR_AIRON, + PICK_VAC1 = 0x23, PICK_VAC2, PICK_VAC3, PICK_VAC4, + + SVR_PWR_0 = 0x28, SVR_PWR_1, SVR_PWR_2, SVR_PWR_3, SVR_PWR_4, SVR_PWR_5, SVR_PWR_6, + PRINTL_FWD = 0x38, R_CYLDN = 0x39, + LEFT_CONV = 0x3A, RIGHT_CONV = 0x3B, + PRINTR_FWD = 0x3C, L_CYLDN = 0x3D, + } +} diff --git a/Handler/Sub/CommData/Enum_Mot.cs b/Handler/Sub/CommData/Enum_Mot.cs new file mode 100644 index 0000000..82b47c4 --- /dev/null +++ b/Handler/Sub/CommData/Enum_Mot.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AR +{ + + /// + /// 모션 축 정보 + /// + public enum eAxis : byte + { + PX_PICK = 0, + PZ_PICK, + PL_MOVE, + PL_UPDN, + PR_MOVE, + PR_UPDN, + Z_THETA, + } + + + public enum eAxisName : byte + { + Picker_X = 0, + Picker_Z , + PrinterL_Move, + PrinterL_UpDn, + PrinterR_Move, + PrinterR_UpDn, + Theta, + } +} diff --git a/Handler/Sub/CommData/Properties/AssemblyInfo.cs b/Handler/Sub/CommData/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8d44db4 --- /dev/null +++ b/Handler/Sub/CommData/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("VarData")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("VarData")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("14e8c9a5-013e-49ba-b435-efefc77dd623")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/Sub/CommData/RS232.cs b/Handler/Sub/CommData/RS232.cs new file mode 100644 index 0000000..dace4e2 --- /dev/null +++ b/Handler/Sub/CommData/RS232.cs @@ -0,0 +1,1174 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using System.Threading; + +namespace arDev +{ + public class RS232 : IDisposable + { + protected Boolean _isinit = false; + + #region "Event Args" + + /// + /// 데이터를 수신할떄 사용함(RAW 포함) + /// + public class ReceiveDataEventArgs : EventArgs + { + private readonly byte[] _buffer = null; + + /// + /// 바이트배열의 버퍼값 + /// + public byte[] Value { get { return _buffer; } } + + /// + /// 버퍼(바이트배열)의 데이터를 문자로 반환합니다. + /// + public string StrValue + { + get + { + //return string.Empty; + + if (_buffer == null || _buffer.Length < 1) return string.Empty; + else return System.Text.Encoding.Default.GetString(_buffer); + } + } + public ReceiveDataEventArgs(byte[] buffer) + { + _buffer = buffer; + } + } + + public class MessageEventArgs : EventArgs + { + private readonly Boolean _isError = false; + public Boolean IsError { get { return _isError; } } + private readonly string _message = string.Empty; + public string Message { get { return _message; } } + public MessageEventArgs(Boolean isError, string Message) + { + _isError = isError; + _message = Message; + } + } + + #endregion + + #region "Enum & Structure" + + /// + /// 데이터수신시 해당 데이터의 끝을 결정하는 방식을 설정합니다. + /// + public enum eTerminal : byte + { + /// + /// line feed + /// + LF = 0, + + /// + /// carrige return + /// + CR, + + /// + /// cr+lf + /// + CRLF, + + /// + /// stx + ETx 구성된 프로토콜을 감지합니다. stx,etx는 임의 지정이 가능하며 기본값으로는 stx = 0x02, etx = 0x03 을 가지고 있습니다. + /// + ETX, + + /// + /// 데이터의 길이를 가지고 판단합니다. + /// + Length, + + /// + /// 설정없음 .. 일정시간동안 대기한 후 버퍼의 내용을 모두 데이터로 인정합니다. + /// + None, + + /// + /// 내부 Receive 이벤트를 사용하지 않고 Raw 이벤트를 사용합니다. + /// 이 값을 설정할 경우 내부 Receivce 이벤트 내에서 메세지 수신 이벤트가 발생하지 않습니다. + /// DataParSER을 상속하여 해당 파서에서 데이터를 분리하세요. True 이면 분리성공, false 이면 완료될때까지 대기합니다. + /// + CustomParser + } + + #endregion + + #region "Public variable" + /// + /// WriteDataSync 명령 사용시 최대로 기다리는 시간 + /// + public int syncTimeout = 5000; + + /// + /// 오류가 발생했다면 이 변수에 그 내용이 기록됩니다. + /// + public string errorMessage = string.Empty; + + ///// + ///// WriteDataSync 명령 사용시 최대로 기다리는 시간 + ///// + //public int syncTimeout = 5000; + + /// + /// 이 값은 종단기호 형식이 Length 일때 사용됩니다. 버퍼의 갯수이 이 값과 일치하면 수신 이벤트를 발생합니다. + /// + public int MaxDataLength = 0x0d; + + /// + /// 마지막으로 데이터는 전송한 시간 + /// + public DateTime lastSendTime; + + /// + /// 최종 전송 메세지 + /// + public byte[] lastSendBuffer; + + /// + /// 마지막으로 데이터를 받은 시간 + /// + public DateTime lastRecvTime = DateTime.Parse("1982-11-23"); + + /// + /// 데이터 전송시 전송메세지를 발생할것인가? 171113 + /// + public Boolean EnableTxMessage { get; set; } + + /// + /// terminal 이 stx 일때에만 사용하며 기본값은 0x03 + /// + [Description("종단기호형식이 ETX일때 사용하는 데이터의 종료문자값입니다. 바이트값이므로 0~255 사이로 입력하세요.")] + [Category("설정"), DisplayName("Data End Byte")] + public byte ETX { get; set; } + + #endregion + + #region "Protect & private Variable" + + protected Boolean CheckACK { get; set; } + protected Boolean CheckNAK { get; set; } + + /// + /// 메세지 수신시 사용하는 내부버퍼 + /// + protected List _buffer = new List(); + + + /// + /// 데이터의 끝을 분석하는 종단기호의 설정 + /// + private eTerminal _term = eTerminal.LF; + + /// + /// WriteDataSync 명령사용시 활성화됨 + /// + protected Boolean _isSync = false; + + /// + /// sync timeOUt체크시 사용합니다. + /// + private System.Diagnostics.Stopwatch _wat = new System.Diagnostics.Stopwatch(); + + /// + /// Serialport Device + /// + protected System.IO.Ports.SerialPort _device; + + /// + /// for autoreset events + /// + protected ManualResetEvent _mre; + + protected Boolean isDisposed = false; + + #endregion + + #region "Internal Events" + + void barcode_ErrorReceived(object sender, System.IO.Ports.SerialErrorReceivedEventArgs e) + { + if (Message != null) Message(this, new MessageEventArgs(true, e.ToString())); + } + + void barcode_PinChanged(object sender, System.IO.Ports.SerialPinChangedEventArgs e) + { + + if (serialPinchanged != null) + serialPinchanged(this, e); + //if (Message != null) Message(this, new MessageEventArgs(true, "PinChanged")); + } + + void barcode_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) + { + this.lastRecvTime = DateTime.Now; + + if (_isSync) return; //싱크모드일경우에는 해당 루틴에서 직접 읽는다 + _isSync = false; + //none일경우에는 100ms 정도 기다려준다. + if (_term == eTerminal.None) + { + //none 일경우에는 무조건 데이터로 취급한다. + System.Threading.Thread.Sleep(200); + _buffer.Clear(); + } + + try + { + int ReadCount = _device.BytesToRead; + + byte[] buffer = new byte[ReadCount]; + _device.Read(buffer, 0, buffer.Length); + + if (ReceiveData_Raw != null) ReceiveData_Raw(this, new ReceiveDataEventArgs(buffer)); + System.Text.StringBuilder LogMsg = new StringBuilder(); + + if (Terminal == eTerminal.CustomParser) + { + byte[] remainBuffer; + Repeat: + if (CustomParser(buffer, out remainBuffer)) + { + //parser ok + RaiseRecvData(_buffer.ToArray()); + _buffer.Clear(); + if (remainBuffer != null && remainBuffer.Length > 0) + { + //버퍼를 변경해서 다시 전송을 해준다. + buffer = new byte[remainBuffer.Length]; + Array.Copy(remainBuffer, buffer, buffer.Length); + goto Repeat; //남은 버퍼가 있다면 진행을 해준다. + } + } + } + else + { + foreach (byte bb in buffer) + { + switch (_term) + { + + case eTerminal.CR: + if (bb == 0x0D) + { + RaiseRecvData(_buffer.ToArray()); ; + _buffer.Clear(); + } + else _buffer.Add(bb); + break; + case eTerminal.LF: + if (bb == 0x0A) + { + RaiseRecvData(_buffer.ToArray()); ; + _buffer.Clear(); + } + else _buffer.Add(bb); + break; + case eTerminal.CRLF: + if (bb == 0x0A) + { + RaiseRecvData(_buffer.ToArray()); ; + _buffer.Clear(); + } + else if (bb == 0x0D) + { + //0d는 그냥 넘어간다. + } + else _buffer.Add(bb); + break; + case eTerminal.Length: + _buffer.Add(bb); + if (_buffer.Count == MaxDataLength) + { + RaiseRecvData(_buffer.ToArray()); ; + _buffer.Clear(); + } + else if (_buffer.Count > MaxDataLength) + { + RaiseMessage("Buffer Length Error " + _buffer.Count.ToString() + "/" + MaxDataLength.ToString(), true); + _buffer.Clear(); + } + break; + case eTerminal.ETX: //asc타입의 프로토콜에서는 STX,ETX가 고유값이다. + if (bb == STX) + { + _buffer.Clear(); + } + else if (bb == ETX) + { + RaiseRecvData(_buffer.ToArray()); ; + _buffer.Clear(); + } + else _buffer.Add(bb); + break; + case eTerminal.None: + _buffer.Add(bb); + break; + } + } + + //170802 + if (_term == eTerminal.None) + { + RaiseRecvData(_buffer.ToArray()); ; + _buffer.Clear(); + } + } + } + catch (Exception ex) + { + if (IsOpen()) + { + //_device.DiscardInBuffer(); + //_device.DiscardOutBuffer(); + } + errorMessage = ex.Message; + RaiseMessage(ex.Message, true); + } + + } + + + #endregion + + #region "External Events" + + /// + /// 바코드에서 들어오는 데이터의 원본 메세지 + /// + public event EventHandler ReceiveData_Raw; + + /// + /// 데이터가 들어올 경우 발생합니다 (종단기호=Termianl) 문자열이 발견된 후에 발생함 + /// + public event EventHandler ReceiveData; + + + /// + /// 데이터를 전송할 때 해당 이벤트가 발생합니다. + /// + public event EventHandler SendData; + + /// + /// 오류 및 기타 일반 메세지 + /// + public event EventHandler Message; + + /// + /// 시리얼포트의 핀 상태값이 변경될 때 발생합니다. + /// + public event EventHandler serialPinchanged; + + + #endregion + + #region "Properties" + + /// + /// 식별번호(임의지정가능) - 장치 생성시 입력 + /// + [Description("이 장치의 식별 ID(임의 지정가능)")] + [Category("설정"), DisplayName("Device No")] + public string Tag { get; set; } + + /// + /// terminal 이 etx 일때에만 사용하며 기본값은 0x02 + /// + [Description("종단기호형식이 ETX일때 사용하는 데이터의 시작문자값입니다. 바이트값이므로 0~255 사이로 입력하세요.")] + [Category("설정"), DisplayName("Data Start Byte")] + public byte STX { get; set; } + + /// + /// 내장 분석기(Parser)를 사용할 경우 최종 데이터에서 CR,LF를 제거할지 선택합니다. + /// + [Description("내장분석기(Parser)를 사용할 경우 최종 데이터에서 CR.LF를 제거할지 선택합니다.")] + [Category("기타"), DisplayName("CRLF 제거")] + public Boolean RemoveCRLFNULL { get; set; } + + /// + /// 종단기호 형식 + /// + [Description("데이터의 종단기호를 설정합니다. 지정한 데이터가 올경우")] + [Category("설정"), DisplayName("종단기호")] + public eTerminal Terminal { get { return _term; } set { _term = value; } } + + [Category("설정")] + public System.IO.Ports.Parity Parity + { + get + { + + return _device.Parity; + } + set + { + _device.Parity = value; + } + } + + [Category("설정")] + public int DataBits + { + get + { + return _device.DataBits; + } + set + { + _device.DataBits = value; + } + } + + [Category("설정")] + public System.IO.Ports.StopBits StopBits + { + get + { + return _device.StopBits; + } + set + { + _device.StopBits = value; + } + + } + + [Category("설정")] + public System.IO.Ports.Handshake Handshake + { + get + { + return _device.Handshake; + } + set + { + _device.Handshake = value; + } + + } + + #region "pin state & pin setting" + + /// + /// Data Terminal Ready + /// + [Description("Data Terminal Ready 신호의 사용여부")] + [Category("PIN")] + public Boolean DtrEnable + { + get + { + return _device.DtrEnable; + + } + set + { + _device.DtrEnable = value; + } + } + + /// + /// Request To Send + /// + [Description("Request to Send 신호의 사용여부")] + [Category("PIN")] + public Boolean RtsEnable + { + get + { + return _device.RtsEnable; + + } + set + { + _device.RtsEnable = value; + } + } + + /// + /// Data set Ready 신호 상태 + /// + [Description("Data Set Ready 신호 상태")] + [Category("PIN")] + public Boolean PIN_DSR + { + get + { + if (!IsOpen()) return false; + return _device.DsrHolding; + } + } + + /// + /// Carrier Detect + /// + [Description("Carrier Detect 신호 상태")] + [Category("PIN")] + public Boolean PIN_CD + { + get + { + if (!IsOpen()) return false; + return _device.CDHolding; + } + } + + /// + /// Clear to Send + /// + [Description("Clear to Send 신호 상태")] + [Category("PIN")] + public Boolean PIN_CTS + { + get + { + if (!IsOpen()) return false; + return _device.CtsHolding; + } + } + + /// + /// Break State + /// + [Description("중단신호 상태")] + [Category("PIN")] + public Boolean PIN_BreakState + { + get + { + if (!IsOpen()) return false; + return _device.BreakState; + } + } + + + #endregion + + + + + /// + /// 포트가 열려있는지 확인 + /// + [Description("현재 시리얼포트가 열려있는지 확인합니다")] + [Category("정보"), DisplayName("Port Open")] + public virtual Boolean IsOpen() + { + if (_device == null) return false; + return _device.IsOpen; + } + + /// + /// 초기화등이 성공했는지 확인합니다.close 되었다면 실패입니다. isinit 변수값을 적절히 수정하시기 바랍니다. + /// + [Description("초기화성공여부 별도의 초기화 코드가없다면 isOpen 과 동일합니다.")] + [Category("정보"), DisplayName("Init OK?")] + public virtual Boolean IsInit() + { + + if (!IsOpen() || !_isinit) return false; + return true; + + } + + /// + /// 쓰기타임아웃 + /// + [Description("쓰기명령어의 최대대기시간(단위:ms)\r\n지정 시간을 초과할 경우 오류가 발생합니다.")] + [Category("설정"), DisplayName("쓰기 제한시간")] + public int WriteTimeout + { + get { return _device.WriteTimeout; } + set { _device.WriteTimeout = value; } + } + + /// + /// 읽기타임아웃 + /// + [Description("읽기명령어의 최대대기시간(단위:ms)\r\n지정 시간을 초과할 경우 오류가 발생합니다.")] + [Category("설정"), DisplayName("읽기 제한시간")] + public int ReadTimeout + { + get { return _device.ReadTimeout; } + set { _device.ReadTimeout = value; } + } + + /// + /// 포트이름 + /// + [Description("시리얼 포트 이름")] + [Category("설정"), DisplayName("Port Name")] + public string PortName { get { return _device.PortName; } set { if (string.IsNullOrEmpty(value) == false) _device.PortName = value; } } + /// + /// RS232 Baud Rate + /// + [Description("시리얼 포트 전송 속도")] + [Category("설정"), DisplayName("Baud Rate")] + public int BaudRate { get { return _device.BaudRate; } set { _device.BaudRate = value; } } + + #endregion + + #region "Method" + + /// + /// 쓰기버퍼비우기 + /// + public void ClearWriteBuffer() + { + if (_device.IsOpen) _device.DiscardOutBuffer(); + } + + /// + /// 읽기버퍼비우기 + /// + public void ClearReadBuffer() + { + if (_device.IsOpen) _device.DiscardInBuffer(); + } + + /// + /// 장치의 초기화작업을 수행합니다.(이 값은 기본값으로 true가 무조건 설정됩니다) 오버라이드하여 각 상황에 맞게 처리하세요. + /// + protected virtual void Init() + { + if (!IsOpen()) _isinit = false; + else _isinit = true; + } + + + + protected virtual Boolean CustomParser(byte[] buf, out byte[] remainBuffer) + { + remainBuffer = new byte[] { }; + return true; + } + + #region "Raise Message Events (임의로 메세지를 발생시킵니다)" + + + /// + /// 보낸메세지 이벤트를 발생 + /// + /// String Data + public void RaiseSendData(string data) + { + RaiseSendData(System.Text.Encoding.Default.GetBytes(data)); + } + + /// + /// 보낸메세지 이벤트를 발생 합니다. + /// + /// Byte Array + public void RaiseSendData(byte[] data) + { + try + { + if (SendData != null) SendData(this, new ReceiveDataEventArgs(data)); + } + catch (Exception ex) + { + RaiseMessage("RaiseSendData:" + ex.Message, true); + } + + } + + /// + /// 지정한 데이터로 바코드가 수신된것처럼 발생시킵니다. + /// + /// + public void RaiseRecvData(byte[] b) + { + byte[] Data; + + if (RemoveCRLFNULL) //제거해야하는경우에만 처리 170822 + Data = RemoveCRLF(b); + else + Data = b; + + try + { + if (ReceiveData != null) ReceiveData(this, new ReceiveDataEventArgs(Data)); + } + catch (Exception ex) + { + RaiseMessage("RaiseDataMessage:" + ex.Message, true); + } + } + + /// + /// 지정한 데이터로 바코드가 수신된것처럼 발생시킵니다. + /// + /// + public void RaiseRecvData(string data) + { + RaiseRecvData(System.Text.Encoding.Default.GetBytes(data)); + } + + /// + /// 메세지이벤트를 발생합니다. 오류메세지일 경우 2번째 파라미터를 true 로 입력하세요. + /// + /// 메세지 + /// 오류라면 True로 설정하세요. 기본값=False + public void RaiseMessage(string message, Boolean isError = false) + { + if (isError) errorMessage = message; //170920 + if (Message != null) Message(this, new MessageEventArgs(isError, message)); + } + + + #endregion + + /// + /// 포트열기(실패시 False)를 반환 + /// + public virtual Boolean Open(Boolean runInit = true) + { + try + { + _device.Open(); + if (_device.IsOpen) + { + Init(); + } + else + { + _isinit = false; + } + + return _isinit; + } + catch (Exception ex) + { + errorMessage = ex.Message; + RaiseMessage(ex.Message, true); + return false; + } + } + public virtual Boolean Open(string portname, int baud, Boolean runInit = true) + { + try + { + this.PortName = portname; + this.BaudRate = baud; + _device.Open(); + if (_device.IsOpen) + { + Init(); + } + else + { + _isinit = false; + } + + return _isinit; + } + catch (Exception ex) + { + errorMessage = ex.Message; + RaiseMessage(ex.Message, true); + return false; + } + } + + /// + /// 포트닫기 + /// + public virtual void Close() + { + if (_device != null && _device.IsOpen) + { + _isinit = false; + _device.DiscardInBuffer(); + _device.DiscardOutBuffer(); + + //외부에서 닫기를 하면 진행된다? + System.Threading.Tasks.Task.Run(new Action(() => + { + _device.Close(); + })); + + + } + } + + /// + /// 메세지내용중 Cr,LF 를 제거합니다. + /// + protected byte[] RemoveCRLF(byte[] src) + { + List bcdbuf = new List(); + foreach (byte by in src) + { + if (by == 0x00 || by == 0x0d || by == 0x0a || by == 0x02 || by == 0x03) continue; + bcdbuf.Add(by); + } + return bcdbuf.ToArray(); + } + + #endregion + + #region "Method Write Data" + + /// + /// 포트에 쓰기(barcode_DataReceived 이벤트로 메세지수신) + /// + public virtual Boolean WriteData(string data) + { + byte[] buf = System.Text.Encoding.Default.GetBytes(data); + return WriteData(buf); + } + + public virtual Boolean Write(string data) + { + return WriteData(data); + } + public virtual Boolean Write(byte[] buf) + { + return WriteData(buf); + } + + /// + /// 포트에 쓰기 반환될 때까지 기다림(SyncTimeOut 값까지 기다림) + /// + public virtual byte[] WriteDataSync(string data) + { + byte[] buf = System.Text.Encoding.Default.GetBytes(data); + return WriteDataSync(buf); + } + + /// + /// _buffer를 클리어하고 입력된 데이터를 버퍼에 추가합니다. + /// + /// + public void setRecvBuffer(byte[] buf) + { + this._buffer.Clear(); + this._buffer.AddRange(buf); + } + + public int WriteError = 0; + public string WriteErrorMessage = string.Empty; + + /// + /// 포트에 쓰기 반환될 때까지 기다림(SyncTimeOut 값까지 기다림) + /// + public virtual byte[] WriteDataSync(byte[] data, Boolean useReset = true) + { + errorMessage = string.Empty; + _isSync = true; + byte[] recvbuf = null; + // Boolean bRet = false; + + //171214 + if (!IsOpen()) + { + errorMessage = "Port Closed"; + return null; + } + + //171205 : 타임아웃시간추가 + if (useReset) + { + if (!_mre.WaitOne(syncTimeout)) + { + errorMessage = string.Format("WriteDataSync:MRE:WaitOne:TimeOut 3000ms"); + RaiseMessage(errorMessage, true); + return null; + } + + _mre.Reset(); + } + + + //save last command + lastSendTime = DateTime.Now; + if (lastSendBuffer == null) lastSendBuffer = new byte[data.Length]; //171113 + else Array.Resize(ref lastSendBuffer, data.Length); + Array.Copy(data, lastSendBuffer, data.Length); + Boolean sendOK = false; + + try + { + _device.DiscardInBuffer(); + _device.DiscardOutBuffer(); + _buffer.Clear(); //171205 + _device.Write(data, 0, data.Length); + WriteError = 0; + WriteErrorMessage = string.Empty; + sendOK = true; + } + catch (Exception ex) + { + WriteError += 1; + WriteErrorMessage = ex.Message; + } + + if (sendOK) + { + try + { + //171113 + if (EnableTxMessage && SendData != null) SendData(this, new ReceiveDataEventArgs(data)); + + _wat.Restart(); + Boolean bTimeOut = false; + _buffer.Clear(); + Boolean bDone = false; + while (!bDone) + { + if (_wat.ElapsedMilliseconds > WriteTimeout) + { + errorMessage = "(Sync)WriteTimeOut"; + bTimeOut = true; + break; + } + else + { + int RecvCnt = _device.BytesToRead; + if (RecvCnt > 0) + { + byte[] rbuf = new byte[RecvCnt]; + _device.Read(rbuf, 0, rbuf.Length); + + if (_term == eTerminal.CustomParser) + { + byte[] remainBuffer; + Repeat: + if (CustomParser(rbuf, out remainBuffer)) + { + var newMem = new byte[_buffer.Count]; + _buffer.CopyTo(newMem); + RaiseRecvData(newMem); + bDone = true; + if (remainBuffer != null && remainBuffer.Length > 0) + { + rbuf = new byte[remainBuffer.Length]; + Buffer.BlockCopy(remainBuffer, 0, rbuf, 0, rbuf.Length); + goto Repeat; + } + } + } + else + { + foreach (byte b in rbuf) + { + if (CheckACK && b == 0x06) //ack + { + _buffer.Add(b); + bDone = true; + break; + } + else if (CheckNAK && b == 0x15) //nak + { + _buffer.Add(b); + bDone = true; + break; + } + else + { + switch (_term) + { + case eTerminal.CR: + if (b == 0x0D) + { + bDone = true; + break; + } + else _buffer.Add(b); + break; + case eTerminal.LF: + if (b == 0x0A) + { + bDone = true; + break; + } + else _buffer.Add(b); + break; + case eTerminal.CRLF: + if (b == 0x0A) + { + bDone = true; + break; + } + else if (b == 0x0d) + { + //pass + } + else + { + _buffer.Add(b); + } + break; + case eTerminal.Length: + _buffer.Add(b); + if (_buffer.Count == MaxDataLength) + { + bDone = true; + break; + } + else if (_buffer.Count > MaxDataLength) + { + RaiseMessage("Buffer Length Error " + _buffer.Count.ToString() + "/" + MaxDataLength.ToString(), true); + _buffer.Clear(); + } + + break; + case eTerminal.ETX: + + if (b == STX) + { + _buffer.Clear(); + } + else if (b == ETX) + { + bDone = true; + break; + } + else _buffer.Add(b); + break; + } + } + + } + } + } + + } + } + _wat.Stop(); + if (!bTimeOut) + { + recvbuf = new byte[_buffer.Count]; + Buffer.BlockCopy(_buffer.ToArray(), 0, recvbuf, 0, recvbuf.Length); + //recvbuf = _buffer.ToArray(); + // bRet = true; + } + } + catch (Exception ex) + { + errorMessage = ex.Message; + //bRet = false; + } + finally + { + if (useReset) + _mre.Set();//release + } + } + + //syncmode off + _isSync = false; + return recvbuf; + } + + /// + /// 포트에 쓰기(barcode_DataReceived 이벤트로 메세지수신) + /// + public virtual Boolean WriteData(byte[] data) + { + Boolean bRet = false; + + //171205 : 타임아웃시간추가 + if (!_mre.WaitOne(3000)) + { + errorMessage = string.Format("WriteData:MRE:WaitOne:TimeOut 3000ms"); + RaiseMessage(errorMessage, true); + return false; + } + + _mre.Reset(); + + //Array.Resize(ref data, data.Length + 2); + + try + { + lastSendTime = DateTime.Now; + if (lastSendBuffer == null) lastSendBuffer = new byte[data.Length]; //171113 + else Array.Resize(ref lastSendBuffer, data.Length); + Array.Copy(data, lastSendBuffer, data.Length); + _device.Write(data, 0, data.Length); + + //171113 + if (EnableTxMessage && SendData != null) SendData(this, new ReceiveDataEventArgs(data)); + + bRet = true; + WriteError = 0; + WriteErrorMessage = string.Empty; + } + catch (Exception ex) + { + // this.isinit = false; + RaiseMessage(ex.Message, true);// if (ReceivceData != null) ReceivceData(this, true, ex.Message); + bRet = false; + WriteError += 1; //연속쓰기오류횟수 + WriteErrorMessage = ex.Message; + } + finally + { + _mre.Set(); + } + return bRet; + } + + #endregion + + + /// + /// 지정한ID를 가진 장치를 생성합니다. + /// + /// + public RS232(string tag_ = "") + { + _mre = new ManualResetEvent(true); + this.Tag = tag_; + this._device = new System.IO.Ports.SerialPort(); + + _device.DataReceived += barcode_DataReceived; + _device.ErrorReceived += barcode_ErrorReceived; + _device.PinChanged += barcode_PinChanged; + _device.ReadTimeout = 2000; + _device.WriteTimeout = 2000; + _device.BaudRate = 9600; + _term = eTerminal.CRLF; + STX = 0x02; + ETX = 0x03; + RemoveCRLFNULL = false; + EnableTxMessage = false; + } + + ~RS232() + { + Dispose(); + } + + + + /// + /// close를 호출합니다. + /// + public virtual void Dispose() + { + if (!isDisposed) //180219 + { + isDisposed = true; + _isinit = false; + _device.DataReceived -= barcode_DataReceived; + _device.ErrorReceived -= barcode_ErrorReceived; + _device.PinChanged -= barcode_PinChanged; + Close(); + } + } + } +} diff --git a/Handler/Sub/CommSM b/Handler/Sub/CommSM new file mode 160000 index 0000000..3edfe1c --- /dev/null +++ b/Handler/Sub/CommSM @@ -0,0 +1 @@ +Subproject commit 3edfe1c9df44dc04411fb486d909211e8a620274 diff --git a/Handler/Sub/MemoryMapCore/Client.cs b/Handler/Sub/MemoryMapCore/Client.cs new file mode 100644 index 0000000..536a038 --- /dev/null +++ b/Handler/Sub/MemoryMapCore/Client.cs @@ -0,0 +1,36 @@ +using System; +using System.IO.MemoryMappedFiles; +using System.Threading; + +namespace AR.MemoryMap +{ + public class Client : Core + { + public Client(string MapFileName, int MapFileSize, int loopDelay = 50) : base(MapFileName, MapFileSize, loopDelay) + { + StartAction = () => + { + try + { + var MapFileSync = $"{MapFileName}{MapFileSize}"; + mmf = MemoryMappedFile.CreateOrOpen(MapFileName, MapFileSize); + mutex = new Mutex(false, MapFileSync, out mutexCreated); + ErrorMessage = string.Empty; + return true; + } + catch (Exception ex) + { + ErrorMessage = ex.Message; + return false; + } + + }; + StopAction = () => + { + ErrorMessage = string.Empty; + brun = false; + return true; + }; + } + } +} diff --git a/Handler/Sub/MemoryMapCore/Core.cs b/Handler/Sub/MemoryMapCore/Core.cs new file mode 100644 index 0000000..16ee418 --- /dev/null +++ b/Handler/Sub/MemoryMapCore/Core.cs @@ -0,0 +1,574 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; + +namespace AR.MemoryMap +{ + public abstract class Core + { + protected ManualResetEvent mre; + protected MemoryMappedFile mmf; + protected Mutex mutex; + protected bool mutexCreated; + protected Func StartAction; + protected Func StopAction; + string MapFileName = string.Empty; + public int WriteTime = 100; + public int ReadTime = 100; + int MapSize = 100; + public bool Init { get; set; } = false; + Task loop; + protected bool brun = false; + public int LoopDelay { get; set; } + public string ErrorMessage { get; set; } + public Core(string mapFileName, int mapSize, int loopDelay = 50) + { + LoopDelay = loopDelay; + this.MapFileName = mapFileName; + this.MapSize = mapSize; + this.monitorvalue = new byte[mapSize]; + mre = new ManualResetEvent(false); + } + ~Core() + { + brun = false; + } + + public bool Start() + { + Init = StartAction.Invoke(); + return Init; + } + public void StartMonitor() + { + if (Init == false) return; + if (IsMonitorRun) return; + + + brun = true; + loop = Task.Factory.StartNew(() => + { + Monitor_Loop(); + }); + } + public void StopMonitor() + { + brun = false; + } + public bool IsMonitorRun + { + get + { + if (loop == null) return false; + if (loop.IsCompleted) return false; + if (loop.IsCanceled) return false; + return true; + } + } + + public bool SetMonitorTarget(bool All) + { + if (mre.WaitOne(100) == false) return false; + + + mre.Set(); + return true; + } + + byte[] monitorvalue; + + public void Stop() + { + StopAction.Invoke(); + } + private void Monitor_Loop() + { + while (brun) + { + //작업가능확인 + bool readok = false; + byte[] value = null; + + try + { + if (mre.WaitOne(100)) + { + try + { + //메모리접근 권한 확인 + if (MutexWaitOne(100)) + { + //값을 읽은 경우 + if (ReadBytes(0, this.MapSize, out value)) + { + readok = true; + } + + } + } + finally { mutex.ReleaseMutex(); } + } + } + finally { mre.Set(); } + + + if (readok) + { + //값의 변화가 있다면 이벤트 발생 + List changeindex = new List(); + for (int i = 0; i < value.Length; i++) + { + if (value[i] != monitorvalue[i]) changeindex.Add(i); + } + if (changeindex.Any()) + { + ValueChanged.Invoke(this, new monitorvalueargs(changeindex.ToArray(), monitorvalue, value)); + } + //신규값을 업데이트 + Array.Copy(value, monitorvalue, value.Length); + } + + //write + System.Threading.Thread.Sleep(LoopDelay); + } + } + public bool MutexWaitOne(int milli) + { + var MapFileSync = $"{MapFileName}{MapSize}"; + if (mutexCreated == false) + { + mutex = new Mutex(false, MapFileSync, out mutexCreated); + return mutex.WaitOne(milli); + } + else + { + //이미생성된 경우에는 에러처리를 해야한다 + try + { + return mutex.WaitOne(milli); + } + catch + { + //오류가있으니 다시 작성한다 + mutex = new Mutex(false, MapFileSync, out mutexCreated); + return false; + } + } + } + + public event EventHandler ValueChanged; + public class monitorvalueargs : EventArgs + { + public byte[] newdata; + public byte[] olddata; + public int[] idxlist; + public monitorvalueargs(int[] idxs, byte[] beforedata, byte[] afterdata) + { + idxlist = new int[idxs.Length]; + Array.Copy(idxs, this.idxlist, idxs.Length); + newdata = new byte[afterdata.Length]; + Array.Copy(afterdata, newdata, afterdata.Length); + olddata = new byte[beforedata.Length]; + Array.Copy(beforedata, olddata, beforedata.Length); + } + } + + #region "WRITE" + public bool Write(int address, Boolean value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(value.GetType()); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + + public bool Write(int address, byte[] value, int startIndex = 0, int size = 0) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + if (size == 0) size = Marshal.SizeOf(value.GetType()); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value,startIndex,size); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, byte value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(value.GetType()); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, string value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, Int32 value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, Int16 value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, UInt32 value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, UInt16 value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, Single value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + public bool Write(int address, Double value) + { + if (Init == false) return false; + if (MutexWaitOne(WriteTime) == false) return false; + Type type = value.GetType(); + var size = Marshal.SizeOf(type); + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + using (var writer = new BinaryWriter(stream)) + writer.Write(value); + mutex.ReleaseMutex(); + return true; + } + + //public bool Write(int address, T value) + //{ + // if (checktype(value.GetType()) == false) return false; + // if (MutexWaitOne(3000) == false) return false; + // var size = Marshal.SizeOf(typeof(T)); + // using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + // { + // using (var reader = new BinaryWriter(stream)) + // { + // var a = (byte[])Convert.ChangeType(value, typeof(byte[])); + // reader.Write(a, 0, a.Length); + // } + // } + // mutex.ReleaseMutex(); + // return true; + //} + #endregion + #region "READ" + public bool ReadSingle(int address, out Single value) + { + value = 0; + if (Init == false) return false; + var retval = true; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 1; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToSingle(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadDouble(int address, out double value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 1; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToDouble(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadBytes(int address, int size, out byte[] value) + { + var retval = true; + value = new byte[size]; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + reader.Read(value, 0, size); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadByte(int address, out byte value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 1; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = buffer.First(); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadInt16(int address, out Int16 value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 4; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToInt16(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadInt32(int address, out Int32 value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 4; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToInt32(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadInt64(int address, out Int64 value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 4; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToInt64(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadUInt16(int address, out UInt16 value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 4; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToUInt16(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadUInt32(int address, out UInt32 value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 4; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToUInt32(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + public bool ReadUInt64(int address, out UInt64 value) + { + var retval = true; + value = 0; + if (Init == false) return false; + var type = value.GetType(); + if (MutexWaitOne(ReadTime) == false) return false; + var size = 4; + using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + { + using (var reader = new BinaryReader(stream)) + { + byte[] buffer = new byte[size]; + reader.Read(buffer, 0, size); + value = BitConverter.ToUInt64(buffer, 0); + } + } + mutex.ReleaseMutex(); + return retval; + } + + //public bool Read(int address, out T value) where T : IConvertible + //{ + // var retval = true; + // value = default(T); + // var type = value.GetType(); + // if (checktype(type) == false) return false; + + // if (MutexWaitOne(3000) == false) return false; + // var size = Marshal.SizeOf(typeof(T)); + // using (MemoryMappedViewStream stream = mmf.CreateViewStream(address, size)) + // { + // using (var reader = new BinaryReader(stream)) + // { + // byte[] buffer = new byte[size]; + // reader.Read(buffer, 0, size); + // if (type == typeof(Int32)) + // value = (T)Convert.ChangeType(BitConverter.ToInt32(buffer, 0), typeof(T)); + // else if (type == typeof(UInt32)) + // value = (T)Convert.ChangeType(BitConverter.ToUInt32(buffer, 0), typeof(T)); + // else if (type == typeof(Int16)) + // value = (T)Convert.ChangeType(BitConverter.ToInt16(buffer, 0), typeof(T)); + // else if (type == typeof(UInt16)) + // value = (T)Convert.ChangeType(BitConverter.ToUInt16(buffer, 0), typeof(T)); + // else if (type == typeof(byte)) + // value = (T)Convert.ChangeType(buffer[0], typeof(T)); + // else if (type == typeof(string)) + // value = (T)Convert.ChangeType(System.Text.Encoding.Default.GetString(buffer), typeof(T)); + // else retval = false; + // } + // } + // mutex.ReleaseMutex(); + // return retval; + //} + #endregion + + + /// + /// 지정한 타입이 호환되는 타입인가? + /// + /// + /// + //bool checktype(Type value) + //{ + // if (value == typeof(Int32)) return true; + // else if (value == typeof(UInt32)) return true; + // else if (value == typeof(Int16)) return true; + // else if (value == typeof(UInt16)) return true; + // else if (value == typeof(byte)) return true; + // else if (value == typeof(string)) return true; + // else return false; + //} + + } +} diff --git a/Handler/Sub/MemoryMapCore/MemoryMap.txt b/Handler/Sub/MemoryMapCore/MemoryMap.txt new file mode 100644 index 0000000..fb00664 --- /dev/null +++ b/Handler/Sub/MemoryMapCore/MemoryMap.txt @@ -0,0 +1,45 @@ +IO + +01:VERSION(0~255) +10:DEVICE_ID +01:DICount(0~255) +01:DOCount(0~255) +---------------------12byte----------- +##Command Area +02:Command Device +02:Command Code +04:Command Value +---------------------20byte----------- +01:Status + 0 : init(ʱȭ) + 1 : error + +02:StatusCode(-32767~32767) +32:DIValue (dicount dicount/8) +32:DOValue (docount docount/8) +---------------------87byte----------- + + +MOT +01:VERSION(0~255) +10:DEVICE_ID +01:Axis Count(0~255) +---------------------12byte---------------- +02:Status + 0 : init(ʱȭ) + 1 : error + +02:StatusCode(-32767~32767) +---------------------16byte---------------- +ະ Ͱ ȯȴ. 10byte +01:Axis No +01:Axist Status + 0 : Servo On + 1 : Inposition + 2 : N-Limit + 3 : P-Limit + 4 : Origin Sensor + 5 : HomeSet + 7 : Emergency +04:Current Position +04:Command Position \ No newline at end of file diff --git a/Handler/Sub/MemoryMapCore/MemoryMapCore.csproj b/Handler/Sub/MemoryMapCore/MemoryMapCore.csproj new file mode 100644 index 0000000..02c051c --- /dev/null +++ b/Handler/Sub/MemoryMapCore/MemoryMapCore.csproj @@ -0,0 +1,52 @@ + + + + + Debug + AnyCPU + {140AF52A-5986-4413-BF02-8EA55A61891B} + Library + Properties + MemoryMapCore + MemoryMapCore + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Handler/Sub/MemoryMapCore/Properties/AssemblyInfo.cs b/Handler/Sub/MemoryMapCore/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c47289d --- /dev/null +++ b/Handler/Sub/MemoryMapCore/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("MemoryMapCore")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("MemoryMapCore")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("140af52a-5986-4413-bf02-8ea55a61891b")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/Sub/MemoryMapCore/Server.cs b/Handler/Sub/MemoryMapCore/Server.cs new file mode 100644 index 0000000..9c98f3b --- /dev/null +++ b/Handler/Sub/MemoryMapCore/Server.cs @@ -0,0 +1,40 @@ +using System; +using System.CodeDom; +using System.Collections.Generic; +using System.IO.MemoryMappedFiles; +using System.Security.Policy; +using System.Text; +using System.Threading; + +namespace AR.MemoryMap +{ + public class Server : Core + { + public Server(string MapFileName, int MapFileSize, int loopDelay = 50) : base(MapFileName, MapFileSize, loopDelay) + { + StartAction = () => + { + try + { + var MapFileSync = $"{MapFileName}{MapFileSize}"; + mmf = MemoryMappedFile.CreateOrOpen(MapFileName, MapFileSize); + mutex = new Mutex(false, MapFileSync, out mutexCreated); + ErrorMessage = string.Empty; + return true; + } + catch (Exception ex) + { + ErrorMessage = ex.Message; + return false; + } + + }; + StopAction = () => + { + ErrorMessage = string.Empty; + brun = false; + return true; + }; + } + } +} diff --git a/Handler/Sub/Setting/Model/Common.cs b/Handler/Sub/Setting/Model/Common.cs new file mode 100644 index 0000000..24d2847 --- /dev/null +++ b/Handler/Sub/Setting/Model/Common.cs @@ -0,0 +1,580 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing.Design; +using System.Linq; +using System.Management; +using System.Security.Policy; +using System.Text; +using System.Windows.Forms; + +namespace AR +{ + public class CommonSetting : SettingJson + { + public CommonSetting() + { + this.filename = UTIL.MakePath("Data", "Setting.json"); + } + + + #region "log" + + [Category("System Log - Main")] + public Boolean Log_CameraConn { get; set; } + [Category("System Log - Main"), DisplayName("Digital Input"), + Description("Records status changes of input/output devices.")] + public Boolean Log_DI { get; set; } + [Category("System Log - Main"), DisplayName("Digital Output"), + Description("Records status changes of input/output devices.")] + public Boolean Log_DO { get; set; } + [Category("System Log - Main"), DisplayName("Network Alive Check(Ping)"), + Description("Use debug messages")] + public Boolean Log_Debug { get; set; } + [Category("System Log - Main"), DisplayName("S/M Step Change"), + Description("Records state machine transition status.")] + public Boolean Log_StepChange { get; set; } + [Category("System Log - Main"), DisplayName("Motion State Change"), + Description("Records motion state changes.")] + public Boolean Log_motState { get; set; } + [Category("System Log - Main")] + public Boolean Log_flag { get; set; } + [Category("System Log - Main")] + public Boolean Log_ILock { get; set; } + [Category("System Log - Function"), DisplayName("Inter Lock")] + public Boolean Enable_Log_ILock { get; set; } + [Category("System Log - Function"), DisplayName("Flag")] + public Boolean Enable_Log_Flag { get; set; } + [Category("System Log - Function"), DisplayName("Motor Stop Message")] + public Boolean Enable_Log_MotStopReason { get; set; } + + + #endregion + + #region "Communication" + + + + [Category("Communication"), DisplayName("Keynece IP(Front)"), Description("Keyence Barcode IP Address")] + public string Keyence_IPF { get; set; } + [Category("Communication"), DisplayName("Keyence IP(Rear)"), Description("Keyence Barcode IP Address")] + public string Keyence_IPR { get; set; } + + [Category("Communication"), DisplayName("Keyence Port"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Keyence_Port { get; set; } + + [Category("Communication"), DisplayName("Left Printer (Port)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string PrintL_Port { get; set; } + [Category("Communication"), DisplayName("Left Printer (Baud)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int PrintL_Baud { get; set; } + [Category("Communication"), DisplayName("Right Printer (Port)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string PrintR_Port { get; set; } + [Category("Communication"), DisplayName("Right Printer (Baud)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int PrintR_Baud { get; set; } + + + + [Category("Communication"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Barcode_Port { get; set; } + [Category("Communication"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Barcode_Baud { get; set; } + + + #endregion + + #region "Time Out" + + [Category("Timeout Setting"), DisplayName(), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_AutoConfirm { get; set; } + + [Category("Timeout Setting"), DisplayName("Job completion wait time (sec)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_JOBEnd { get; set; } + + [Category("Timeout Setting"), DisplayName("Max vision analysis time (Loader)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_VisionProcessL { get; set; } + + [Category("Timeout Setting"), DisplayName("Max vision analysis time (Unloader)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_VisionProcessU { get; set; } + + [Category("Timeout Setting"), DisplayName("Equipment initialization wait time (sec)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_HomeSearch { get; set; } + + [Category("Timeout Setting"), DisplayName("Individual operation wait time (sec)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public double Timeout_StepMaxTime { get; set; } + + [Category("Timeout Setting"), DisplayName("Max motion operation time (sec)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_MotionCommand { get; set; } + + [Category("Timeout Setting"), DisplayName("Max DIO operation time (sec)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_DIOCommand { get; set; } + + [Category("Timeout Setting"), DisplayName("Auto Conveyor output time (sec)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int Timeout_AutoOutConvSignal { get; set; } + + + #endregion + + [Category("WMS")] + public bool WMS_DB_PROD { get; set; } + [Category("WMS")] + public string WMS_PROGRAM_ID { get; set; } + [Category("WMS")] + public string WMS_CENTER_CD { get; set; } + [Category("WMS")] + public string WMS_REG_USERID { get; set; } + + #region "Advanced Parameter" + + + [Category("Advanced Parameter"), DisplayName("Remote Controller Port"), Description("Debug port info (serial communication), Input example) COM1:9600"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Serial_Remocon { get; set; } + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int RetryPickOnMaxCount { get; set; } + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int RetryPickOnAngle { get; set; } + + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float JOG_Speed { get; set; } + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float JOG_Acc { get; set; } + [Category("Advanced Parameter")] + public Boolean Disable_HomePortDown { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PrinterL { get; set; } + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PrinterR { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PLVac { get; set; } + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PRVac { get; set; } + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PKVac { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PLAir { get; set; } + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PRAir { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PortL { get; set; } + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PortC { get; set; } + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_PortR { get; set; } + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_SIDReferenceCheck { get; set; } + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_BottomAirBlow { get; set; } + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Enable_ButtonStart { get; set; } + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_RequestJobSeqNo { get; set; } + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean DisableSensor_AIRCheck { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_TowerLamp { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_RoomLight { get; set; } + + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public bool Disable_vacum { get; set; } + + [Category("Advanced Parameter"), DisplayName("*.Speed Limit")] + public Boolean Enable_SpeedLimit { get; set; } + [Category("Advanced Parameter"), DisplayName("*.Max Speed"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int LimitSpeed { get; set; } + + [Category("Advanced Parameter"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_SidQtyCheck { get; set; } + + [Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean EnableDebugMode { get; set; } + + //[Category("Advanced Parameter"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + //public int AutoConveyorReelOut { get; set; } + + #endregion + + #region "function" + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Force_JobEndBuzzer { get; set; } + + + [Browsable(false)] + public Boolean Disable_Buzzer { get; set; } + + [Browsable(false)] + public Boolean Enable_Magnet0 { get; set; } + + [Browsable(false)] + public Boolean Enable_Magnet1 { get; set; } + + [Browsable(false)] + public Boolean Enable_Magnet2 { get; set; } + [Browsable(false)] + public Boolean Enable_PickerCylinder { get; set; } + + + public string GetDataPath() + { + if (Path_Data == null) Path_Data = AppDomain.CurrentDomain.BaseDirectory; + var di = new System.IO.DirectoryInfo(this.Path_Data); + return di.FullName; + } + + [Category("Function"), DisplayName("Label QR Code Verification"), Description("Verifies QR code of attached label with print data"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Enable_Unloader_QRValidation { get; set; } + + [Category("Function"), DisplayName("Save Captured Images"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Save_Image { get; set; } + + [Category("Function"), DisplayName("Picker Auto Move (Front Door)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean PickerAutoMoveForDoor { get; set; } + + [Category("Function"), DisplayName("Data Save Path"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Path_Data { get; set; } + + [Category("Function"), Browsable(false), DisplayName("Room Light Auto Control"), + Description("Automatically turns room light ON/OFF according to door status"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Enable_AutoLight { get; set; } + + //[Category("Function"), DisplayName("AIR OFF Timer(ms)"), + //Description("공압 OFF시 유지 시간(ms), 지정 시간 동안 스위치를 ON 시켜야 공압이 OFF 됩니다.")] + //public int AirOFFTimer { get; set; } + + [Category("Function"), DisplayName("Buzzer Duration (ms)"), + Description("Buzzer sounds for specified duration (ms) when triggered"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int buzz_run_ms { get; set; } + + #endregion + + #region "Vision" + [Category("Vision"), DisplayName("13' Image Center Position"), Description("Keyence image rotation axis coordinates")] + public System.Drawing.Point CenterPosition13 { get; set; } + [Category("Vision"), DisplayName("7' Image Center Position"), Description("Keyence image rotation axis coordinates")] + public System.Drawing.Point CenterPosition7 { get; set; } + + [Category("Vision"), DisplayName("Disable Left Camera"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_Left { get; set; } + [Category("Vision"), DisplayName("Disable Right Camera"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Disable_Right { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string HostIPL { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string HostIPR { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int HostPortL { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int HostPortR { get; set; } + [Category("Vision"), DisplayName("Camera Filename"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string CameraLFile { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float AngleOffsetL { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float AngleOffsetR { get; set; } + + #endregion + + #region "Count Reset Setting" + + [Category("Count Reset Setting"), Browsable(false), DisplayName("A/M Clear Enable"), + Description("AM reset enabled\nSet to True to reset work count"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean datetime_Check_1 { get; set; } + [Category("Count Reset Setting"), Browsable(false), DisplayName("P/M Clear Enable"), + Description("PM reset enabled\nSet to True to reset work count"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean datetime_Check_2 { get; set; } + [Category("Count Reset Setting"), Browsable(false), DisplayName("A/M Clear Time(HH:mm)"), + Description("AM reset time(HH:mm)\nExample) 09:00"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string datetime_Reset_1 { get; set; } + [Category("Count Reset Setting"), Browsable(false), DisplayName("P/M Clear Time(HH:mm)"), + Description("PM reset time(HH:mm)\nExample) 19:00"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string datetime_Reset_2 { get; set; } + + #endregion + + #region "Sensitive" + [Category("Sensitive"), DisplayName("Un/Loader Port Detect (fall)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort PortDetectFall { get; set; } + [Category("Sensitive"), DisplayName("Un/Loader Port Detect (rise)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort PortDetectRise { get; set; } + [Category("Sensitive"), DisplayName("Door Detection Sensor (rise)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort SaftyDetectRise { get; set; } + [Category("Sensitive"), DisplayName("Door Detection Sensor (fall)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort SaftyDetectFall { get; set; } + [Category("Sensitive"), DisplayName("AIR Button (rise/fall)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort AirChange { get; set; } + + #endregion + + #region "Operation Delay" + [Category("Operation Delay(ms)"), DisplayName("Wait time after label attach"), Description("PURGE wait time after label attachment"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int PrintVacOffPurgeMS { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Cart detect wait time (Left)"), Description("Cart will be HELD after specified time - ms"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort WaitTime_Magnet0 { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Cart detect wait time (Center)"), Description("Cart will be HELD after specified time - ms"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort WaitTime_Magnet1 { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Cart detect wait time (Right)"), Description("Cart will be HELD after specified time - ms"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort WaitTime_Magnet2 { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Print wait time (Left)"), Description("Wait time after printer label output (Left) - ms"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int PrintLWaitMS { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Print wait time (Right)"), Description("Wait time after printer label output (Right) - ms"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int PrintRWaitMS { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Port Down Time (Unloader)"), Description("Port descends for specified time during alignment"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float PortAlignDownTimeU { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Port Down Time (Loader)"), Description("Port descends for specified time during alignment"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float PortAlignDownTimeL { get; set; } + [Category("Operation Delay(sec)"), DisplayName("Loader Port Down Time (Finish)"), Description("Descends for specified time (ms) after job completion"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public ushort Port1FisnishDownTime { get; set; } + #endregion + + #region "GENERAL + [Category("General Setting"), DisplayName("Room Light Auto OFF Time (min)")] + public int AutoOffRoomLightMin { get; set; } + + [Category("General Setting"), DisplayName("Equipment Asset Number"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Asset { get; set; } + + [Category("General Setting"), DisplayName("Equipment Name"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string McName { get; set; } + + [Category("General Setting"), DisplayName("Ignore Barcode"), Description("Ignores barcodes starting with entered value. Separate multiple entries with comma (,)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string IgnoreBarcode { get; set; } + + [Category("General Setting"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string ReelIdDeviceID { get; set; } + [Category("General Setting"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string ReelIdDeviceLoc { get; set; } + [Category("General Setting"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public bool Enable_AutoChangeModelbyHandBarcode { get; set; } + + #endregion + //public Boolean MoveYForPaperVaccume { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float MoveYForPaperVaccumeValue { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public uint MoveYForPaperVaccumeVel { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public uint MoveYForPaperVaccumeAcc { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean OnlineMode { get; set; } + + //public Boolean STDLabelFormat7 { get; set; } + #region "Printer" + [Category("Printer"), DisplayName("Draw Barcode Outer Box"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean DrawOutbox { get; set; } + + #endregion + + + [DisplayName("Barcode Position Rotation (Rear)")] + public float RearBarcodeRotate { get; set; } + [DisplayName("Barcode Position Rotation (Front)")] + public float FrontBarcodeRotate { get; set; } + + [Browsable(false)] + public bool SystemBypass { get; set; } + + + #region "general" + + [Category("General Setting"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Sidinfofilename { get; set; } + [Category("General Setting"), DisplayName("Bug Report Recipients"), Description("Bug report recipient list. Separate multiple recipients with semicolon"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string BugreportToList { get; set; } + + [Category("General Setting"), Browsable(false), + Description("Data auto-delete period (days) disabled=0"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int AutoDeleteDay { get; set; } + [Category("General Setting"), Browsable(false), + Description("Data auto-delete condition (remaining capacity %)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int AutoDeleteThreshold { get; set; } + + [Category("General Setting"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Password_Setup { get; set; } + + [Category("General Setting"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string Language { get; set; } + + [Category("General Setting"), DisplayName("Full Screen Window State"), + Description("Use full screen mode."), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean FullScreen { get; set; } + + + #region "표시안함" + [Category("Sensor Detect"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Detect_CartL { get; set; } + [Category("Sensor Detect"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Detect_CartC { get; set; } + [Category("Sensor Detect"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Detect_CartR { get; set; } + [Category("Sensor Detect"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Detect_PrintL { get; set; } + [Category("Sensor Detect"), Browsable(false), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public Boolean Detect_PrintR { get; set; } + //[Category("Sensor Detect"), Browsable(false)] + //public Boolean Detect_CenterSafty { get; set; } + #endregion + + #endregion + + #region "Report" + [Category("Report"), + Description("Equipment identification code for status recording (4 digits)"), + DisplayName("M/C ID")] + public string MCID { get; set; } + + [Category("Report"), + Description("Saves work records to Equipment Engineering (EE) Database. Allows remote monitoring of equipment status"), + DisplayName("SAVE EE-DB")] + public Boolean Save_EEDatabase { get; set; } + [Category("Report"), Description("Status transmission interval (sec)")] + public int StatusInterval { get; set; } + #endregion + + #region "swplc" + public string swplc_name { get; set; } + public int swplc_size { get; set; } + #endregion + + [Category("Develop")] + public string Bugreport_mail { get; set; } + + public override void AfterLoad() + { + if (Timeout_AutoOutConvSignal < 1) Timeout_AutoOutConvSignal = 5; + if (WMS_CENTER_CD.isEmpty()) WMS_CENTER_CD = "V1"; + if (WMS_PROGRAM_ID.isEmpty()) WMS_PROGRAM_ID = "LABEL ATTACH"; + if (WMS_REG_USERID.isEmpty()) WMS_REG_USERID = "ATVLA1"; + if (swplc_size < 1) swplc_size = 100; + if (swplc_name.isEmpty()) swplc_name = "swplc"; + if (StatusInterval < 10) StatusInterval = 300; //5분간격 + + var currentpath = AppDomain.CurrentDomain.BaseDirectory; + if (AutoOffRoomLightMin == 0) AutoOffRoomLightMin = 5; + + if (RetryPickOnAngle == 0) RetryPickOnAngle = 79; + + if (Barcode_Baud == 0) Barcode_Baud = 9600; + if (JOG_Speed < 1) JOG_Speed = 200; + if (JOG_Acc < 1) JOG_Acc = 500; + + if (PrintL_Baud == 0) PrintL_Baud = 115200; + if (PrintR_Baud == 0) PrintR_Baud = 115200; + + + if (BugreportToList.isEmpty()) BugreportToList = "chikyun.kim@amkor.co.kr"; + if (HostIPL.isEmpty() && HostPortL < 1) + { + HostIPL = "127.0.0.1"; + HostPortL = 7979; + } + if (HostIPR.isEmpty() && HostPortR < 1) + { + HostIPR = "127.0.0.1"; + HostPortR = 7980; + } + if (ReelIdDeviceLoc.isEmpty()) ReelIdDeviceLoc = "4"; + if (ReelIdDeviceID.isEmpty()) ReelIdDeviceID = "A"; + if (IgnoreBarcode.isEmpty()) IgnoreBarcode = "{{{"; + if (Timeout_AutoConfirm == 0) Timeout_AutoConfirm = 5; + //if (PrintVacOffPurgesec <= 0.0) PrintVacOffPurgesec = 1.1f; + if (PrintVacOffPurgeMS == 0) PrintVacOffPurgeMS = 500; + if (MoveYForPaperVaccumeVel == 0) MoveYForPaperVaccumeVel = 10; + if (MoveYForPaperVaccumeAcc == 0) MoveYForPaperVaccumeAcc = 1000; + + //포트얼라인시간 210401 + if (PortAlignDownTimeU == 0f && + PortAlignDownTimeL == 0f) + { + PortAlignDownTimeL = 1.5f; + PortAlignDownTimeU = 1.0f; + } + + if (PrintLWaitMS == 0) PrintLWaitMS = 1500; + if (PrintRWaitMS == 0) PrintRWaitMS = 1500; + + if (WaitTime_Magnet0 == 0) WaitTime_Magnet0 = 3000; + if (WaitTime_Magnet1 == 0) WaitTime_Magnet1 = 3000; + if (WaitTime_Magnet2 == 0) WaitTime_Magnet2 = 3000; + + //if (PrintLeftName.isEmpty()) PrintLeftName = "PrinterL"; + //if (PrintRightName.isEmpty()) PrintRightName = "PrinterR"; + + if (SaftyDetectRise == 0) SaftyDetectRise = 20; + if (SaftyDetectFall == 0) SaftyDetectFall = 1000; //안전센서는 느리게 해제 한다 + + if (Timeout_JOBEnd == 0) Timeout_JOBEnd = 10; + + if (Timeout_VisionProcessL == 0) Timeout_VisionProcessL = 10000; + if (Timeout_VisionProcessU == 0) Timeout_VisionProcessU = 10000; + if (PortDetectFall == 0) PortDetectFall = 50; + if (PortDetectRise == 0) PortDetectRise = 10; + + if (AirChange == 0) AirChange = 3000; + + if (Keyence_IPF.isEmpty()) Keyence_IPF = "192.168.100.100"; + //if (Keyence_IPR.isEmpty()) Keyence_IPR = "192.168.100.101"; + if (Keyence_Port == 0) Keyence_Port = 9004; + + //데이터베이스 + //if (Keyence_IPL.isEmpty() == true) Keyence_IPL = "net.pipe://127.0.0.1/barcode"; + //if (Keyence_IPR.isEmpty() == true) Keyence_IPR = "net.pipe://127.0.0.1/barcode"; + + if (Timeout_MotionCommand == 0) Timeout_MotionCommand = 10; + if (Timeout_DIOCommand == 0) Timeout_DIOCommand = 10; + + if (AutoDeleteThreshold == 0) AutoDeleteThreshold = 20; + if (Timeout_HomeSearch == 0) Timeout_HomeSearch = 50; + //if (AirOFFTimer == 0) AirOFFTimer = 3000; //181226 + if (Asset == "") Asset = "DEV_SPLIT"; + if (Language.isEmpty()) Language = "Kor"; + //if (Password_Setup.isEmpty()) Password_Setup = "0000"; + + if (Path_Data == "") Path_Data = @".\SaveData"; + try + { + if (System.IO.Directory.Exists(GetDataPath()) == false) + System.IO.Directory.CreateDirectory(GetDataPath()); + } + catch + { + + } + //if (Password_User.isEmpty()) Password_User = "9999"; + } + + public override void AfterSave() + { + //throw new NotImplementedException(); + } + + public void CopyTo(CommonSetting dest) + { + //이곳의 모든 쓰기가능한 속성값을 대상에 써준다. + Type thClass = this.GetType(); + foreach (var method in thClass.GetMethods()) + { + var parameters = method.GetParameters(); + if (!method.Name.StartsWith("get_")) continue; + + string keyname = method.Name.Substring(4); + string methodName = method.Name; + + object odata = GetType().GetMethod(methodName).Invoke(this, null); + var wMethod = dest.GetType().GetMethod(Convert.ToString("set_") + keyname); + if (wMethod != null) wMethod.Invoke(dest, new object[] { odata }); + } + } + } + +} diff --git a/Handler/Sub/Setting/Model/Count.cs b/Handler/Sub/Setting/Model/Count.cs new file mode 100644 index 0000000..a00dbeb --- /dev/null +++ b/Handler/Sub/Setting/Model/Count.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace AR +{ + public class CountSetting : SettingJson + { + public int seq { get; set; } + public string DateStr { get; set; } + + + + public void ClearP() + { + CountV0 = CountV1 = CountV2 = CountE = CountP0 = CountP1 = CountP2 = CountPrintL = CountPrintR = 0; + this.Save(); + } + + public void ClearDay() + { + DateStr = string.Empty; + CountDP0 = CountDP1 = CountDP2 = CountDP3 = CountDP4 = 0; + this.Save(); + } + + public int CountD + { + get + { + return CountDP0 + CountDP1 + CountDP2 + CountDP3 + CountDP4; + } + } + public int Count + { + get + { + return CountP0 + CountP1 + CountP2 + CountPrintL + CountPrintR; + } + } + + public int CountDP0 { get; set; } + public int CountDP1 { get; set; } + public int CountDP2 { get; set; } + public int CountDP3 { get; set; } + public int CountDP4 { get; set; } + + + + + //메인카운터 + public int CountP0 { get; set; } + public int CountP1 { get; set; } + public int CountP2 { get; set; } + public int CountPrintL { get; set; } + public int CountPrintR { get; set; } + public int CountE { get; set; } + public int CountV0 { get; set; } + public int CountV1 { get; set; } + public int CountV2 { get; set; } + + + public CountSetting() + { + this.filename = AR.UTIL.MakePath("Data", "counter.json"); + } + public override void AfterLoad() + { + //if (CountReset == null) CountReset = DateTime.Parse("1982-11-23"); + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/Sub/Setting/Model/System.cs b/Handler/Sub/Setting/Model/System.cs new file mode 100644 index 0000000..b7af3a0 --- /dev/null +++ b/Handler/Sub/Setting/Model/System.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + +namespace AR +{ + + public class SystemSetting : SettingJson + { + public int SaftySensor_Threshold { get; set; } + + #region "System Setting" + public int MotaxisCount { get; set; } + #endregion + + #region "Signal Reverse" + + + [Category("Signal Reverse")] + public Boolean ReverseSIG_Emgergency { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_ButtonAir { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_DoorF { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_DoorR { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_AirCheck { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortLimitUp { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortLimitDn { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortDetect0Up { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortDetect1Up { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PortDetect2Up { get; set; } + [Category("Signal Reverse")] + public Boolean ReverseSIG_PickerSafe { get; set; } + + [Category("Signal Reverse")] + public Boolean ReverseSIG_ExtConvReady { get; set; } + + #endregion + + + [Category("Door Safty"), DisplayName("Disable Front - Left")] + + public Boolean Disable_safty_F0 { get; set; } + [Category("Door Safty"), DisplayName("Disable Front - Center")] + + public Boolean Disable_safty_F1 { get; set; } + [Category("Door Safty"), DisplayName("Disable Front - Right")] + + public Boolean Disable_safty_F2 { get; set; } + [Category("Door Safty"), DisplayName("Disable Rear - Left")] + + public Boolean Disable_safty_R0 { get; set; } + [Category("Door Safty"), DisplayName("Disable Rear - Center")] + + public Boolean Disable_safty_R1 { get; set; } + [Category("Door Safty"), DisplayName("Disable Rear - Right")] + + public Boolean Disable_safty_R2 { get; set; } + + public SystemSetting() + { + this.filename = UTIL.MakePath("Data", "system.json"); + } + public override void AfterLoad() + { + MotaxisCount = 7; + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/Sub/Setting/Model/User.cs b/Handler/Sub/Setting/Model/User.cs new file mode 100644 index 0000000..93d7151 --- /dev/null +++ b/Handler/Sub/Setting/Model/User.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; + + +namespace AR +{ + public class UserSetting : SettingJson + { + public string customerlist { get; set; } + public Boolean Option_QtyUpdate1 { get; set; } + public Boolean Option_PartUpdate { get; set; } + public Boolean Option_printforce1 { get; set; } + public Boolean Option_Confirm1 { get; set; } + public Boolean Option_AutoConfirm { get; set; } + public Boolean Option_vname { get; set; } + public Boolean Option_FixPrint1 { get; set; } + public string Option_PrintPos1 { get; set; } + public Boolean Option_SidConv { get; set; } + + //public Boolean Option_QtyUpdate3 { get; set; } + //public Boolean Option_printforce3 { get; set; } + //public Boolean Option_Confirm3 { get; set; } + //public Boolean Option_FixPrint3 { get; set; } + //public string Option_PrintPos3 { get; set; } + + public string LastJobUnP11 { get; set; } + public string LastJobUnP12 { get; set; } + public string LastJobUnP21 { get; set; } + public string LastJobUnP22 { get; set; } + public string LastJobUnP31 { get; set; } + public string LastJobUnP32 { get; set; } + public string LastJobUnP41 { get; set; } + public string LastJobUnP42 { get; set; } + + + public string LastLot { get; set; } + public string LastAltag { get; set; } + public string LastModelM { get; set; } + public string LastModelV { get; set; } + + public string LastMC { get; set; } + + public int jobtype { get; set; } + public int scantype { get; set; } + public bool useConv { get; set; } + public UserSetting() + { + this.filename = UTIL.MakePath("data", "UserSet.json"); + } + + public override void AfterLoad() + { + + if (LastJobUnP11.isEmpty()) LastJobUnP11 = "AUTO"; + if (LastJobUnP12.isEmpty()) LastJobUnP12 = "AUTO"; + if (LastJobUnP21.isEmpty()) LastJobUnP21 = "AUTO"; + if (LastJobUnP22.isEmpty()) LastJobUnP22 = "AUTO"; + if (LastJobUnP31.isEmpty()) LastJobUnP31 = "AUTO"; + if (LastJobUnP32.isEmpty()) LastJobUnP32 = "AUTO"; + if (LastJobUnP41.isEmpty()) LastJobUnP41 = "AUTO"; + if (LastJobUnP42.isEmpty()) LastJobUnP42 = "AUTO"; + + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/Handler/Sub/Setting/Properties/AssemblyInfo.cs b/Handler/Sub/Setting/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6b2402d --- /dev/null +++ b/Handler/Sub/Setting/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("Setting")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Setting")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("48654765-548d-42ed-9238-d65eb3bc99ad")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/Sub/Setting/SETTING.cs b/Handler/Sub/Setting/SETTING.cs new file mode 100644 index 0000000..e253288 --- /dev/null +++ b/Handler/Sub/Setting/SETTING.cs @@ -0,0 +1,36 @@ +using System; +using System.Data; + +namespace AR +{ + public static class SETTING + { + public static SystemSetting System; + public static CountSetting Counter; + public static CommonSetting Data; + public static UserSetting User; + public static Boolean isInit { get; private set; } = false; + public static void Load() + { + if (Data == null) Data = new CommonSetting(); + Data.Load(); + if (User == null) User = new UserSetting(); + User.Load(); + if (System == null) System = new SystemSetting(); + System.Load(); + if (Counter == null) Counter = new CountSetting(); + Counter.Load(); + isInit = true; + } + public static void Save() + { + Data.Save(); + User.Save(); + System.Save(); + Counter.Save(); + } + + + } + +} diff --git a/Handler/Sub/Setting/Setting.csproj b/Handler/Sub/Setting/Setting.csproj new file mode 100644 index 0000000..8cd4930 --- /dev/null +++ b/Handler/Sub/Setting/Setting.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {48654765-548D-42ED-9238-D65EB3BC99AD} + Library + Properties + Setting + Setting + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + + + + {14e8c9a5-013e-49ba-b435-ffffff7dd623} + arCommUtil + + + + \ No newline at end of file diff --git a/Handler/Sub/StdLabelPrint/CAmkorSTDBarcode.cs b/Handler/Sub/StdLabelPrint/CAmkorSTDBarcode.cs new file mode 100644 index 0000000..54fc129 --- /dev/null +++ b/Handler/Sub/StdLabelPrint/CAmkorSTDBarcode.cs @@ -0,0 +1,196 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StdLabelPrint +{ + public class CAmkorSTDBarcode + { + public string Message { get; private set; } + public Boolean isValid = false; + public string SID { get; set; } + public string VLOT { get; set; } + public string RID { get; set; } + public string MFGDate { get; set; } + //public string MFGDateRaw { get; set; } + public string VENDERNAME { get; set; } + public string PARTNO { get; set; } + public int QTY { get; set; } + public string RAW { get; set; } + public Boolean DateError { get; private set; } + public Boolean DisposalCode { get; set; } + + public Boolean NewLen15Barcode { get; set; } + + public void CopyTo(CAmkorSTDBarcode obj) + { + if (obj == null) obj = new CAmkorSTDBarcode(); + else obj.Clear(); + obj.Message = this.Message; + obj.isValid = this.isValid; + obj.SID = this.SID; + obj.VLOT = this.VLOT; + obj.RID = this.RID; + obj.MFGDate = this.MFGDate; + obj.VENDERNAME = this.VENDERNAME; + obj.PARTNO = this.PARTNO; + obj.QTY = this.QTY; + obj.RAW = this.RAW; + obj.DateError = this.DateError; + obj.DisposalCode = this.DisposalCode; + obj.NewLen15Barcode = this.NewLen15Barcode; + } + public CAmkorSTDBarcode() + { + Clear(); + } + public void Clear() + { + this.DisposalCode = false; + this.NewLen15Barcode = false; + this.Message = string.Empty; + this.isValid = false; + this.SID = string.Empty; + this.VLOT = string.Empty; + this.RID = string.Empty; + //this.MFGDateRaw = string.Empty; + this.MFGDate = string.Empty;// new DateTime(1982, 11, 23); + this.VENDERNAME = string.Empty; + this.PARTNO = string.Empty; + this.QTY = 0; + this.RAW = string.Empty; + DateError = false; + } + public CAmkorSTDBarcode(string raw) + { + SetBarcode(raw); + } + public void SetBarcodeDemo() + { + //SetBarcode("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;"); + SetBarcode("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;"); + } + + /// + /// 현재 속성의 값을 가지고 바코드값을 반환합니다. + /// 원본 바코드 값을 확인하려면 RAW 속성을 확인하세요 + /// + /// + public string GetBarcode() + { + if (string.IsNullOrWhiteSpace(PARTNO)) + return string.Format("{0};{1};{2};{3};{4};{5}", + SID, VLOT, VENDERNAME, QTY, RID, MFGDate); + else + return string.Format("{0};{1};{2};{3};{4};{5};{6}", + SID, VLOT, VENDERNAME, QTY, RID, MFGDate, PARTNO); + } + public void SetBarcode(string raw) + { + //101416868;01A3KX;KYOCERA;20000;RC00014A225001I;20220511;N/A + + + isValid = false; + + this.RAW = raw; + var buf = raw.Split(';'); + if (buf.Length < 5) + { + isValid = false; + Message = "buffer len error : " + raw; + return; + } + decimal vSID = 0; + double vQty = 0; + if (decimal.TryParse(buf[0], out vSID) == false) return; + + this.SID = buf[0]; + this.VLOT = buf[1]; + + + //101인경우에는 3번 항목이 벤더네임이다. + //103은 partno 값이 들어간다 + if (this.SID.StartsWith("103")) + { + if (buf.Length == 7) //구형바코드 + { + this.VENDERNAME = buf[2]; + this.PARTNO = string.Empty; + Message = "폐기된 103코드 입니다"; + DisposalCode = true; + } + else + { + //05월 신형은 파트번호가 들어있다 + this.PARTNO = buf[2]; + this.VENDERNAME = string.Empty; + DisposalCode = false; + } + } + else + { + this.VENDERNAME = buf[2]; + this.PARTNO = string.Empty; + DisposalCode = false; + } + + //일부 데이터를 변조한다 210709 + if (this.VENDERNAME == "K118165") this.VENDERNAME = "DELTA"; + else if (this.VENDERNAME == "K113986") this.VENDERNAME = "DREAM CHIP"; + + + if (double.TryParse(buf[3], out vQty) == false) return; + this.QTY = (int)vQty; + + this.RID = buf[4]; + //DateTime vMFGDate; + DateError = false; + this.MFGDate = buf[5].Trim(); + + //신형바코드는 angle 에서 제외하려고 판정한다 + if (this.RID.Length == 15 && this.RID.StartsWith("RC")) //210703 + this.NewLen15Barcode = true; + else + this.NewLen15Barcode = false; + + + //if (buf[5].Length == 4 && this.SUPPLY == "SAMSUNG") + //{ + // //삼성은 주차로 한다 + // DateError = true; + // Message = "Date Error(samsung)"; + // MFGDate = new DateTime(2000+ int.Parse( buf[5].Substring(0,2) ), 1, 1); + + // //DateTime.Now. + //} + //else if (buf[5].Length != 8) + //{ + // Message = "Date value Length Error : " + buf[5]; + // MFGDate = new DateTime(1900, 1, 1); + // return; + //} + //else + //{ + // buf[5] = buf[5].Substring(0, 4) + "-" + buf[5].Substring(4, 2) + "-" + buf[5].Substring(6, 2); + // if (DateTime.TryParse(buf[5], out vMFGDate) == false) return; + // MFGDate = vMFGDate; + //} + + //마지막 요소가 PartNo 이다. (아직 이코드는 본적 없음) + if (this.SID.StartsWith("103") && buf.Length == 7) //구형번호이다 + { + this.PARTNO = buf[6]; + } + + if (buf.Length == 7 && string.IsNullOrEmpty(this.PARTNO)) + { + this.PARTNO = buf[6]; + } + //else this.PARTNO = string.Empty; + + isValid = true; + } + } +} diff --git a/Handler/Sub/StdLabelPrint/Def.cs b/Handler/Sub/StdLabelPrint/Def.cs new file mode 100644 index 0000000..70ab841 --- /dev/null +++ b/Handler/Sub/StdLabelPrint/Def.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Runtime.InteropServices; + +namespace StdLabelPrint +{ + public partial class LabelPrint + { + private const int ERROR_INSUFFICIENT_BUFFER = 122; + + [FlagsAttribute] + public enum PrinterEnumFlags + { + PRINTER_ENUM_DEFAULT = 0x00000001, + PRINTER_ENUM_LOCAL = 0x00000002, + PRINTER_ENUM_CONNECTIONS = 0x00000004, + PRINTER_ENUM_FAVORITE = 0x00000004, + PRINTER_ENUM_NAME = 0x00000008, + PRINTER_ENUM_REMOTE = 0x00000010, + PRINTER_ENUM_SHARED = 0x00000020, + PRINTER_ENUM_NETWORK = 0x00000040, + PRINTER_ENUM_EXPAND = 0x00004000, + PRINTER_ENUM_CONTAINER = 0x00008000, + PRINTER_ENUM_ICONMASK = 0x00ff0000, + PRINTER_ENUM_ICON1 = 0x00010000, + PRINTER_ENUM_ICON2 = 0x00020000, + PRINTER_ENUM_ICON3 = 0x00040000, + PRINTER_ENUM_ICON4 = 0x00080000, + PRINTER_ENUM_ICON5 = 0x00100000, + PRINTER_ENUM_ICON6 = 0x00200000, + PRINTER_ENUM_ICON7 = 0x00400000, + PRINTER_ENUM_ICON8 = 0x00800000, + PRINTER_ENUM_HIDE = 0x01000000, + PRINTER_ENUM_CATEGORY_ALL = 0x02000000, + PRINTER_ENUM_CATEGORY_3D = 0x04000000 + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] + public struct PRINTER_INFO_2 + { + [MarshalAs(UnmanagedType.LPTStr)] + public string pServerName; + [MarshalAs(UnmanagedType.LPTStr)] + public string pPrinterName; + [MarshalAs(UnmanagedType.LPTStr)] + public string pShareName; + [MarshalAs(UnmanagedType.LPTStr)] + public string pPortName; + [MarshalAs(UnmanagedType.LPTStr)] + public string pDriverName; + [MarshalAs(UnmanagedType.LPTStr)] + public string pComment; + [MarshalAs(UnmanagedType.LPTStr)] + public string pLocation; + public IntPtr pDevMode; + [MarshalAs(UnmanagedType.LPTStr)] + public string pSepFile; + [MarshalAs(UnmanagedType.LPTStr)] + public string pPrintProcessor; + [MarshalAs(UnmanagedType.LPTStr)] + public string pDatatype; + [MarshalAs(UnmanagedType.LPTStr)] + public string pParameters; + public IntPtr pSecurityDescriptor; + public uint Attributes; // See note below! + public uint Priority; + public uint DefaultPriority; + public uint StartTime; + public uint UntilTime; + public uint Status; + public uint cJobs; + public uint AveragePPM; + } + [StructLayout(LayoutKind.Sequential)] + public struct DOCINFO + { + [MarshalAs(UnmanagedType.LPWStr)] public string pDocName; + [MarshalAs(UnmanagedType.LPWStr)] public string pOutputFile; + [MarshalAs(UnmanagedType.LPWStr)] public string pDataType; + } + public class PrintDirect + { + [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = false, + CallingConvention = CallingConvention.StdCall)] + public static extern long OpenPrinter(string pPrinterName, ref IntPtr phPrinter, int pDefault); + [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = false, + CallingConvention = CallingConvention.StdCall)] + public static extern long StartDocPrinter(IntPtr hPrinter, int Level, ref DOCINFO + pDocInfo); + [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, + CallingConvention = CallingConvention.StdCall)] + public static extern long StartPagePrinter(IntPtr hPrinter); + [DllImport("winspool.drv", CharSet = CharSet.Ansi, ExactSpelling = true, + CallingConvention = CallingConvention.StdCall)] + public static extern long WritePrinter(IntPtr hPrinter, string data, int buf, ref int pcWritten); + [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, + CallingConvention = CallingConvention.StdCall)] + public static extern long EndPagePrinter(IntPtr hPrinter); + [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, + CallingConvention = CallingConvention.StdCall)] + public static extern long EndDocPrinter(IntPtr hPrinter); + [DllImport("winspool.drv", CharSet = CharSet.Unicode, ExactSpelling = true, + CallingConvention = CallingConvention.StdCall)] + public static extern long ClosePrinter(IntPtr hPrinter); + + [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] + public static extern bool EnumPrinters(PrinterEnumFlags Flags, string Name, uint Level, IntPtr pPrinterEnum, uint cbBuf, ref uint pcbNeeded, ref uint pcReturned); + + + + } + + + } +} diff --git a/Handler/Sub/StdLabelPrint/LabelPrint.cs b/Handler/Sub/StdLabelPrint/LabelPrint.cs new file mode 100644 index 0000000..bbff481 --- /dev/null +++ b/Handler/Sub/StdLabelPrint/LabelPrint.cs @@ -0,0 +1,308 @@ +using System; +using System.ComponentModel; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Runtime.InteropServices; + +namespace StdLabelPrint +{ + public partial class LabelPrint + { + public string printerName { get; set; } = string.Empty; + public List connectedPrinter = new List(); + public string LastPrintZPL = string.Empty; + public string qrData = string.Empty; + public string baseZPL { get; set; } + + public LabelPrint(string _prtName) + { + //GetPrinterList(); + + //if (connectedPrinter.Contains(_prtName) == false) + // throw new Exception("연결된 프린터가 아닙니다."); + + printerName = _prtName; + baseZPL = Properties.Settings.Default.zpl; + + } + + public List GetPrinterList() + { + connectedPrinter = new List(); + var list_local = FindPrinters(PrinterEnumFlags.PRINTER_ENUM_LOCAL); + var list_connected = FindPrinters(PrinterEnumFlags.PRINTER_ENUM_CONNECTIONS); + try + { + connectedPrinter.AddRange(list_local); + } + catch { } + + try + { + connectedPrinter.AddRange(list_connected); + } + catch { } + return connectedPrinter; + } + public string makeZPL_210101(Reel reel, Boolean D1RID, Boolean drawbox, out string qrData) + { + string prtData = string.Empty; + qrData = string.Format("{0};{1};{2};{3};{4};{5};{6}", reel.sid, reel.lot, reel.manu, reel.qty, reel.id, reel.mfg, reel.partnum); + prtData = "^XA\r\n"; + prtData += "^MMT\r\n"; + prtData += "^PW519\r\n"; + prtData += "^LL0200\r\n"; + prtData += "^LS0\r\n"; + prtData += "^FO128,96^GFA,01536,01536,00048,:Z64:\r\n"; + prtData += "eJxjYBgFo2AUkADs/xMN/g1G9aNgFMABAIF9rE0=:1194\r\n"; + + if (drawbox) + prtData += "^FO1,7^GB505,185,4^FS\r\n"; + + prtData += "^BY2,3,41^FT280,82^BCN,,N,N,N,A\r\n"; + prtData += "^FD" + reel.sid + "^FS\r\n"; + prtData += "^FT12,160^BQN,2,4\r\n"; + prtData += string.Format("^FH\\^FDLA,{0}^FS\r\n", qrData); + prtData += "^BY2,3,32^FT86,185^BCN,,N,N,N,A\r\n"; + prtData += string.Format("^FD{0};{1}^FS\r\n", reel.sid, reel.lot); + prtData += "^FO278,7^GB0,26,4^FS\r\n"; + prtData += "^FT160,29^A0N,20,19^FH\\^FDSID^FS\r\n"; + prtData += "^FT159,111^A0N,20,19^FH\\^FDPN^FS\r\n"; + prtData += "^FT159,137^A0N,20,19^FH\\^FDRID^FS\r\n"; + prtData += "^FT194,29^A0N,20,19^FH\\^FD" + reel.sid + "^FS\r\n"; + prtData += "^FT324,29^A0N,20,19^FH\\^FD" + reel.lot + "^FS\r\n"; + prtData += "^FT195,111^A0N,20,19^FH\\^FD" + reel.partnum + "^FS\r\n"; + + prtData += "^FT195,137^A0N,20,19^FH\\^FD" + (D1RID ? reel.id : string.Empty) + "^FS\r\n"; //210302 + + prtData += "^FT441,137^A0N,20,19^FH\\^FD" + reel.qty.ToString() + "^FS\r\n"; + prtData += "^FT285,29^A0N,20,19^FH\\^FDLOT^FS\r\n"; + prtData += "^FT396,137^A0N,20,19^FH\\^FDQTY^FS\r\n"; + prtData += "^FO154,7^GB352,28,4^FS\r\n"; + prtData += "^FO154,89^GB352,54,4^FS\r\n"; + prtData += "^FO190,90^GB0,51,4^FS\r\n"; + prtData += "^FO188,9^GB0,24,4^FS\r\n"; + prtData += "^FO388,117^GB0,26,4^FS\r\n"; + prtData += "^FO430,116^GB0,26,4^FS\r\n"; + prtData += "^FO316,7^GB0,26,4^FS\r\n"; + prtData += "^PQ1,0,1,Y^XZ\r\n"; + return prtData; + } + public string makeZPL_210510(Reel reel, Boolean drawbox, out string qrData) + { + string m_strSend = string.Empty; + qrData = string.Format("{0};{1};{2};{3};{4};{5}", reel.sid, reel.lot, reel.partnum, reel.qty, reel.id, reel.mfg); + + m_strSend = this.baseZPL; + m_strSend = m_strSend.Replace("{qrData}", qrData); + m_strSend = m_strSend.Replace("{sid}", reel.sid); + m_strSend = m_strSend.Replace("{lot}", reel.lot); + m_strSend = m_strSend.Replace("{partnum}", reel.partnum); + m_strSend = m_strSend.Replace("{rid}", reel.id); + m_strSend = m_strSend.Replace("{qty}", reel.qty.ToString()); + m_strSend = m_strSend.Replace("{mfg}", reel.mfg); + m_strSend = m_strSend.Replace("{supply}", reel.manu); + + //줄바꿈제거 + m_strSend = m_strSend.Replace("\r", "").Replace("\n", ""); + return m_strSend; + } + public string makeZPL_210908(Reel reel, Boolean drawbox, out string qrData) + { + string m_strSend = string.Empty; + qrData = string.Format("{0};{1};{2};{3};{4};{5};{6}", reel.sid, reel.lot, reel.manu, reel.qty, reel.id, reel.mfg, reel.partnum); + + m_strSend = this.baseZPL; + m_strSend = m_strSend.Replace("{qrData}", qrData); + m_strSend = m_strSend.Replace("{sid}", reel.sid); + m_strSend = m_strSend.Replace("{lot}", reel.lot); + m_strSend = m_strSend.Replace("{partnum}", reel.partnum); + m_strSend = m_strSend.Replace("{rid}", reel.id); + m_strSend = m_strSend.Replace("{qty}", reel.qty.ToString()); + m_strSend = m_strSend.Replace("{mfg}", reel.mfg); + m_strSend = m_strSend.Replace("{supply}", reel.manu); + + //줄바꿈제거 + m_strSend = m_strSend.Replace("\r", "").Replace("\n", ""); + return m_strSend; + } + public Boolean TestPrint(Boolean drawbox, string manu = "", string mfgdate = "", Boolean Array7 = false) + { + var dtstr = DateTime.Now.ToShortDateString(); + var printcode = "103077807;Z577603504;105-35282-1105;15000;RC00004A219001W;20210612"; + var reel = new StdLabelPrint.Reel(printcode); + //reel.id = "RLID" + DateTime.Now.ToString("MMHHmmssfff"); + reel.sid = "103000000"; + reel.partnum = "PARTNO".PadRight(20, '0'); //20자리 + + if (mfgdate == "") reel.mfg = dtstr; + else reel.mfg = mfgdate; + + reel.lot = "LOT000000000"; + if (manu == "") reel.manu = "ATK4EET1"; + else reel.manu = manu; + + reel.qty = 15000; + var rlt = Print(reel, true, drawbox, Array7); + var fi = new System.IO.FileInfo(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "temp_zpl.txt")); + System.IO.File.WriteAllText(fi.FullName, LastPrintZPL, System.Text.Encoding.Default); + return rlt; + } + + + public Boolean Print(Reel reel, Boolean display1drid, Boolean drawOUtBox, Boolean Array7 = false) + { + string prtData; + if (Array7) + prtData = makeZPL_210908(reel, drawOUtBox, out qrData); + else + prtData = makeZPL_210510(reel, drawOUtBox, out qrData); + + return Print(prtData); + } + + public bool Print(string _zpl) + { + this.LastPrintZPL = _zpl; + + bool retval = false; + System.IntPtr lhPrinter = new System.IntPtr(); + DOCINFO di = new DOCINFO(); + int pcWritten = 0; + //string st1; + // text to print with a form feed character + //st1 = "This is std label by using zpl\f"; + di.pDocName = "Component Std Label"; + di.pDataType = "RAW"; + // the \x1b means an ascii escape character + + //lhPrinter contains the handle for the printer opened + //If lhPrinter is 0 then an error has occured + + //GetPrinterList(); + + //if (connectedPrinter.Contains(printerName) == false) + // throw new Exception("연결된 프린터가 아닙니다."); + + + PrintDirect.OpenPrinter(printerName, ref lhPrinter, 0); + PrintDirect.StartDocPrinter(lhPrinter, 1, ref di); + PrintDirect.StartPagePrinter(lhPrinter); + try + { + PrintDirect.WritePrinter(lhPrinter, _zpl, _zpl.Length, ref pcWritten); + retval = true; + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } + PrintDirect.EndPagePrinter(lhPrinter); + PrintDirect.EndDocPrinter(lhPrinter); + PrintDirect.ClosePrinter(lhPrinter); + return retval; + } + private List FindPrinters(PrinterEnumFlags Flags) + { + List prtList = new List(); + uint cbNeeded = 0; + uint cReturned = 0; + if (PrintDirect.EnumPrinters(Flags, null, 2, IntPtr.Zero, 0, ref cbNeeded, ref cReturned)) + { + return null; + } + int lastWin32Error = Marshal.GetLastWin32Error(); + if (lastWin32Error == ERROR_INSUFFICIENT_BUFFER) + { + IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded); + if (PrintDirect.EnumPrinters(Flags, null, 2, pAddr, cbNeeded, ref cbNeeded, ref cReturned)) + { + PRINTER_INFO_2[] printerInfo2 = new PRINTER_INFO_2[cReturned]; + int offset = pAddr.ToInt32(); + Type type = typeof(PRINTER_INFO_2); + int increment = Marshal.SizeOf(type); + for (int i = 0; i < cReturned; i++) + { + printerInfo2[i] = (PRINTER_INFO_2)Marshal.PtrToStructure(new IntPtr(offset), type); + prtList.Add(printerInfo2[i].pPrinterName); + offset += increment; + } + Marshal.FreeHGlobal(pAddr); + return prtList; + } + lastWin32Error = Marshal.GetLastWin32Error(); + } + throw new Win32Exception(lastWin32Error); + } + + + + } + public class Reel + { + public string sid { get; set; } + public string lot { get; set; } + public string mfg { get; set; } + public int qty { get; set; } + public string id { get; set; } + //public string date { get; set; } + public string partnum { get; set; } + public string manu { get; set; } + + public Reel() + { + Clear(); + } + public void Clear() + { + sid = string.Empty; + lot = string.Empty; + mfg = string.Empty; + lot = string.Empty; + id = string.Empty; + //date = string.Empty; + partnum = string.Empty; + manu = string.Empty; + qty = 0; + } + public Reel(string _sid, string _lot, string _manu, int _qty, string _id, string _mfgdate, string _partnum) + { + int sidNum = 0; + if (int.TryParse(_sid, out sidNum) && sidNum.ToString().Length == 9) + sid = sidNum.ToString(); + else + throw new Exception("SID가 숫자가 아니거나 9자리 숫자가 아닙니다."); + + lot = _lot; + mfg = _mfgdate; + qty = _qty; + id = _id; + partnum = _partnum; + manu = _manu; + } + public Reel(string qrbarcodestr) + { + var spData = qrbarcodestr.Split(';'); + if (spData.Length < 6) + throw new Exception("Barcode Length가 적습니다."); + + sid = spData[0]; + lot = spData[1]; + manu = spData[2]; + + int _qty = 0; + + if (int.TryParse(spData[3], out _qty)) + qty = _qty; + else + throw new Exception("수량란에 숫자 정보가 아닙니다."); + + id = spData[4]; + mfg = spData[5]; + if (spData.Length > 6) partnum = spData[6]; + else partnum = string.Empty; + } + } +} diff --git a/Handler/Sub/StdLabelPrint/Properties/AssemblyInfo.cs b/Handler/Sub/StdLabelPrint/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5f1c25c --- /dev/null +++ b/Handler/Sub/StdLabelPrint/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("StdLabelPrint")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("StdLabelPrint")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("b18d3b96-2fdf-4ed9-9a49-d9b8cee4ed6d")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/Sub/StdLabelPrint/Properties/Settings.Designer.cs b/Handler/Sub/StdLabelPrint/Properties/Settings.Designer.cs new file mode 100644 index 0000000..85d769a --- /dev/null +++ b/Handler/Sub/StdLabelPrint/Properties/Settings.Designer.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace StdLabelPrint.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute(@"^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ +^XA +^MMT +^PW519 +^LL0200 +^LS25 +^FO205,5^GB305,186,4^FS +^FT25,170^BQN,2,4 +^FDLA, +{qrData} +^FS +^FO205,9^GB0,183,4^FS +^FO250,9^GB0,183,4^FS +^FO209,34^GB299,0,4^FS +^FO209,65^GB299,0,4^FS +^FO207,95^GB300,0,4^FS +^FO207,126^GB303,0,4^FS +^FT211,30^A0N,23,24^FDSID^FS +^FT210,59^A0N,23,24^FDLOT^FS +^FT215,91^A0N,23,24^FDPN^FS +^FT212,153^A0N,23,24^FDRID^FS +^FT210,120^A0N,23,24^FDQ'ty^FS +^FT260,31^A0N,23,24^FD +{sid} +^FS +^FT260,60^A0N,23,24^FD +{lot} +^FS +^FT258,93^A0N,27,16^FD +{partnum} +^FS +^FT256,150^A0N,21,19^FD +{rid} +^FS +^FT259,121^A0N,23,24^FD +{qty} +^FS +^FO207,157^GB303,0,4^FS +^FT212,182^A0N,20,19^FDDate^FS +^FT260,183^A0N,23,24^FD +{mfg} +^FS +^PQ1,0,1,Y^XZ")] + public string zpl { + get { + return ((string)(this["zpl"])); + } + set { + this["zpl"] = value; + } + } + } +} diff --git a/Handler/Sub/StdLabelPrint/Properties/Settings.settings b/Handler/Sub/StdLabelPrint/Properties/Settings.settings new file mode 100644 index 0000000..4047e3c --- /dev/null +++ b/Handler/Sub/StdLabelPrint/Properties/Settings.settings @@ -0,0 +1,51 @@ + + + + + + ^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ +^XA +^MMT +^PW519 +^LL0200 +^LS25 +^FO205,5^GB305,186,4^FS +^FT25,170^BQN,2,4 +^FDLA, +{qrData} +^FS +^FO205,9^GB0,183,4^FS +^FO250,9^GB0,183,4^FS +^FO209,34^GB299,0,4^FS +^FO209,65^GB299,0,4^FS +^FO207,95^GB300,0,4^FS +^FO207,126^GB303,0,4^FS +^FT211,30^A0N,23,24^FDSID^FS +^FT210,59^A0N,23,24^FDLOT^FS +^FT215,91^A0N,23,24^FDPN^FS +^FT212,153^A0N,23,24^FDRID^FS +^FT210,120^A0N,23,24^FDQ'ty^FS +^FT260,31^A0N,23,24^FD +{sid} +^FS +^FT260,60^A0N,23,24^FD +{lot} +^FS +^FT258,93^A0N,27,16^FD +{partnum} +^FS +^FT256,150^A0N,21,19^FD +{rid} +^FS +^FT259,121^A0N,23,24^FD +{qty} +^FS +^FO207,157^GB303,0,4^FS +^FT212,182^A0N,20,19^FDDate^FS +^FT260,183^A0N,23,24^FD +{mfg} +^FS +^PQ1,0,1,Y^XZ + + + \ No newline at end of file diff --git a/Handler/Sub/StdLabelPrint/StdLabelPrint.csproj b/Handler/Sub/StdLabelPrint/StdLabelPrint.csproj new file mode 100644 index 0000000..5b0bf36 --- /dev/null +++ b/Handler/Sub/StdLabelPrint/StdLabelPrint.csproj @@ -0,0 +1,63 @@ + + + + + Debug + AnyCPU + {B18D3B96-2FDF-4ED9-9A49-D9B8CEE4ED6D} + Library + Properties + StdLabelPrint + StdLabelPrint + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + True + True + Settings.settings + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + \ No newline at end of file diff --git a/Handler/Sub/StdLabelPrint/app.config b/Handler/Sub/StdLabelPrint/app.config new file mode 100644 index 0000000..d4bd795 --- /dev/null +++ b/Handler/Sub/StdLabelPrint/app.config @@ -0,0 +1,57 @@ + + + + +
+ + + + + + ^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ +^XA +^MMT +^PW519 +^LL0200 +^LS25 +^FO205,5^GB305,186,4^FS +^FT25,170^BQN,2,4 +^FDLA, +{qrData} +^FS +^FO205,9^GB0,183,4^FS +^FO250,9^GB0,183,4^FS +^FO209,34^GB299,0,4^FS +^FO209,65^GB299,0,4^FS +^FO207,95^GB300,0,4^FS +^FO207,126^GB303,0,4^FS +^FT211,30^A0N,23,24^FDSID^FS +^FT210,59^A0N,23,24^FDLOT^FS +^FT215,91^A0N,23,24^FDPN^FS +^FT212,153^A0N,23,24^FDRID^FS +^FT210,120^A0N,23,24^FDQ'ty^FS +^FT260,31^A0N,23,24^FD +{sid} +^FS +^FT260,60^A0N,23,24^FD +{lot} +^FS +^FT258,93^A0N,27,16^FD +{partnum} +^FS +^FT256,150^A0N,21,19^FD +{rid} +^FS +^FT259,121^A0N,23,24^FD +{qty} +^FS +^FO207,157^GB303,0,4^FS +^FT212,182^A0N,20,19^FDDate^FS +^FT260,183^A0N,23,24^FD +{mfg} +^FS +^PQ1,0,1,Y^XZ + + + + \ No newline at end of file diff --git a/Handler/Sub/UIControl/CIcon.cs b/Handler/Sub/UIControl/CIcon.cs new file mode 100644 index 0000000..5dbe9d3 --- /dev/null +++ b/Handler/Sub/UIControl/CIcon.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public class CIcon + { + public string Text { get; set; } + public string Tag { get; set; } + public RectangleF Rect { get; set; } + public Boolean Focus { get; set; } + public Boolean Select { get; set; } + public CIcon() : this(string.Empty, RectangleF.Empty) { } + public CIcon(string tag,RectangleF rect) + { + Text = string.Empty; + Tag = tag; + Rect = rect; + } + public float X { get { return Rect.X; } } + public float Y { get { return Rect.Y; } } + public float W { get { return Rect.Width; } } + public float H { get { return Rect.Height; } } + } +} diff --git a/Handler/Sub/UIControl/CItem.cs b/Handler/Sub/UIControl/CItem.cs new file mode 100644 index 0000000..9ec1950 --- /dev/null +++ b/Handler/Sub/UIControl/CItem.cs @@ -0,0 +1,158 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +namespace UIControl +{ + [Serializable] + public class CItem + { + public Boolean Delete { get; set; } + /// + /// 어떠한 포트에서 픽업 되었는지 + /// + public int iPort { get; set; } + + /// + /// 출력 포트 + /// + public int oPort { get; set; } + + /// + /// 배출여부 + /// + public int ErrorOut { get; set; } + + /// + /// 크기는 어떠한지(7 or 13) + /// + public string Size { get; set; } + + /// + /// 존번호 0~10 + /// + public int index { get; set; } + + /// + /// 피커에의해서 드랍된 시간 + /// + public DateTime DropTime { get; set; } + + /// + /// 차수별 일련번호 + /// + public UInt16 Seq { get; set; } + + public DateTime BarcodeStart { get; set; } + public DateTime BarcodeEnd { get; set; } + + public DateTime PlcStartTime { get; set; } + public DateTime PlcEndTime { get; set; } + + public DateTime ZoneIntime { get; set; } + + /// + /// 컨베이어에 들어온 시간 + /// 피커에서 드랍되면 dropTime 과 동일하며, 외부에서 들어오면 센서가 최초 감지한 시간이 된다 + /// + public DateTime InTime { get; set; } + public DateTime OutTime { get; set; } + public Rectangle Rect { get; set; } + + /// + /// jobhistory에 연결되는 데이터 키 + /// + public string JGUID { get; set; } + + /// + /// 바코드 데이터와 연결되는 키값 + /// + public string Tag { get; set; } + public string RID { get; set; } + public string SID { get; set; } + public string BarcodeRaw { get; set; } + public string BarcodeMsg { get; set; } + public Boolean Processing { get; set; } + public string GUID { get; private set; } + public int Qty { get; set; } + public List UnloaderMsg { get; set; } + + /// + /// 바코드의 완료여부, timeout 혻은 설정 되었을때 적용 + /// + public Boolean BarcodeDone { get; set; } + + public Boolean hasBarcode + { + get + { + return !string.IsNullOrEmpty(RID); + } + } + + public void AddMessage(string msg) + { + if (this.UnloaderMsg.Contains(msg) == false) + UnloaderMsg.Add(msg); + } + + public CItem() + { + Qty = 0; + UnloaderMsg = new List(); + ErrorOut = 0; + this.GUID = Guid.NewGuid().ToString(); + Tag = string.Empty; + JGUID = string.Empty; + Seq = 0; + SID = string.Empty; + BarcodeRaw = string.Empty; + BarcodeMsg = string.Empty; + RID = string.Empty; + Rect = Rectangle.Empty; + Delete = false; + Processing = false; + DropTime = DateTime.Parse("1982-11-23"); + BarcodeStart = DateTime.Parse("1982-11-23"); + BarcodeEnd = DateTime.Parse("1982-11-23"); + PlcStartTime = DateTime.Parse("1982-11-23"); + PlcEndTime = DateTime.Parse("1982-11-23"); + InTime = DateTime.Parse("1982-11-23"); + OutTime = DateTime.Parse("1982-11-23"); + ZoneIntime = DateTime.Parse("1982-11-23"); + + index = -1; + oPort = -1; + iPort = -1; + Size = string.Empty; + } + public CItem Clone() + { + var item = new CItem(); + item.Qty = Qty; + item.Seq = Seq;//0; + item.SID =SID;// string.Empty; + item.BarcodeRaw = BarcodeRaw;//string.Empty; + item.BarcodeMsg = BarcodeMsg;//string.Empty; + item.RID = RID;//string.Empty; + item.Rect = Rect;//Rectangle.Empty; + item.Delete = Delete;//DropTime;//; + + item.DropTime =DropTime;// DateTime.Parse("1982-11-23"); + item.BarcodeStart =BarcodeStart;// DateTime.Parse("1982-11-23"); + item.BarcodeEnd = BarcodeEnd;//DropTime;//.Parse("1982-11-23"); + item.PlcStartTime = PlcStartTime;//DateTime.Parse("1982-11-23"); + item.PlcEndTime =PlcEndTime;// DateTime.Parse("1982-11-23"); + item.InTime = InTime;//DropTime;//.Parse("1982-11-23"); + item.OutTime = OutTime;//DateTime.Parse("1982-11-23"); + item.ZoneIntime = ZoneIntime;//DateTime.Parse("1982-11-23"); + item.index = index; + item.oPort = oPort; + item.iPort = iPort; + item.Size = Size; + return item; + } + + } +} diff --git a/Handler/Sub/UIControl/CMenu.cs b/Handler/Sub/UIControl/CMenu.cs new file mode 100644 index 0000000..4112084 --- /dev/null +++ b/Handler/Sub/UIControl/CMenu.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + + + [Serializable] + public class CMenuButton + { + public eButtonType Shape { get; set; } + public string Text { get; set; } + public string Tag { get; set; } + public Rectangle Rect { get; set; } + public Color BackColor { get; set; } + public Color ForeColor { get; set; } + public Color OverColor { get; set; } + public Color BorderColor { get; set; } + public byte BorderSize { get; set; } + public Font Font { get; set; } + public CMenuButton() : this(string.Empty, string.Empty) { } + public CMenuButton(string text, string tag) + { + Font = null; + BorderColor = Color.Black; + BorderSize = 5; + Shape = eButtonType.Rectangle; + this.Text = text; + this.Tag = tag; + BackColor = Color.White; + OverColor = Color.Gold; + ForeColor = Color.Black; + text = "Button"; + } + public string menutag { get; set; } + } + + [Serializable] + public class CMenu + { + public string Title { get; set; } + public string Text { get; set; } + public string Tag { get; set; } + public RectangleF Rect { get; set; } + public Boolean Focus { get; set; } + public Boolean Select { get; set; } + public eMsgIcon Icon { get; set; } + public CMenuButton[] buttons { get; set; } + public Font Font { get; set; } + public Color BackColor { get; set; } + public Color ForeColor { get; set; } + public Color BorderColor { get; set; } + + /// + /// 반드시 사용자의 허가를 받아야 넘어갈 수 있는 메뉴 + /// + public Boolean RequireInput { get; set; } + + public CMenu() : this("Contents", "Title", "tag", eMsgIcon.Info, null) { } + + public CMenu(string text_, string title_, string tag_, eMsgIcon icon_, params CMenuButton[] buttons_) + { + this.Tag = tag_; + this.Title = title_; + this.Text = text_; + this.Icon = icon_; + this.buttons = buttons_; + this.Font = new Font("맑은 고딕", 15, FontStyle.Bold); + BackColor = Color.White; + ForeColor = Color.Black; + BorderColor = Color.Orange; + RequireInput = false; + + } + public float X { get { return Rect.X; } } + public float Y { get { return Rect.Y; } } + public float W { get { return Rect.Width; } } + public float H { get { return Rect.Height; } } + } +} diff --git a/Handler/Sub/UIControl/CPicker.cs b/Handler/Sub/UIControl/CPicker.cs new file mode 100644 index 0000000..8cd9a29 --- /dev/null +++ b/Handler/Sub/UIControl/CPicker.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public class CPicker + { + + /// + /// 언로드포트 위치(L/R) + /// + public string PortPos { get; set; } + /// + /// 프린트 위치(H/L) + /// + public string PrintPos { get; set; } + + /// + /// 릴이 있는 경우 해당 릴이 어느 포트에서 왔는지의 번호 + /// + public short PortIndex { get; set; } + + /// + /// 현재 작업이 프론트 포트의 작업인가? (portindex 값을 가지고 판단함) + /// + public Boolean isFrontJob + { + get + { + if (PortIndex <= 1) return true; + else return false; + } + } + + public Boolean Overload { get; set; } + + + /// + /// VAC센서의 값을 가지고 있음, 현재 릴이 감지되었는가? + /// + public Boolean isReelDetect + { + get + { + return VacOutput.Where(t => t == true).Count() > 0; + } + } + + /// + /// PICK후 60mm위치에서 미리 확인한 감지 상태값 + /// 이값을 가지고 도중에 떨궜을 상황을 감지한다 + /// + public Boolean PreCheckItemOn { get; set; } + public Boolean HasRealItemOn { get; set; } + public Boolean ItemOn { get; set; } + //public Boolean[] VacDetect { get; set; } + public Boolean[] VacOutput { get; set; } + public CPicker() + { + this.Overload = false; + PortPos = "7"; + PortIndex = -1; + HasRealItemOn = false; + PreCheckItemOn = false; + } + public void Clear() + { + this.Overload = false; + ItemOn = false; + PortPos = "--"; + PortIndex = -1; + //if(VacDetect != null && VacDetect.Length > 0) + //{ + // for (int i = 0; i < VacDetect.Length; i++) + // VacDetect[i] = false; + //} + if (VacOutput != null && VacOutput.Length > 0) + { + for (int i = 0; i < VacOutput.Length; i++) + VacOutput[i] = false; + } + } + + + + } +} diff --git a/Handler/Sub/UIControl/CPort.cs b/Handler/Sub/UIControl/CPort.cs new file mode 100644 index 0000000..929c097 --- /dev/null +++ b/Handler/Sub/UIControl/CPort.cs @@ -0,0 +1,482 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public class CPort + { + public Boolean SaftyErr { get; set; } + //public Boolean Safty2Err { get; set; } + // public Boolean SaftyErr { get { return Safty1Err || Safty2Err; } } + public Boolean MotorRun { get; set; } + public Boolean MotorDir { get; set; } + public int arrowIndex { get; set; } + public Boolean LimitUpper { get; set; } + public Boolean LimitLower { get; set; } + public Boolean OverLoad + { + get + { + return LimitLower && DetectUp; + } + } + public byte AlignOK { get; set; } + public void AlignReset() { AlignOK = 0; errorCount = 0; } + public Boolean Ready { get; set; } + + public Boolean DetectUp { get; set; } //상단에 있는 자재 감지 센서 + + + /// + /// 7인치 13인치의 크기 정보를 표시한다 + /// + public string title { get; set; } + public int reelNo { get; set; } + + /// + /// 차수별 릴 작업 수량이 표시됨 + /// + public int reelCount { get; set; } + + public int errorCount { get; set; } + public int CartSize { get; set; } + + + + public System.Drawing.Color bgColor { get; set; } + private Boolean _enable = false; + + public Color fgColor { get; set; } + public Color fgColorCount { get; set; } + + public Rectangle rect_title { get; set; } + public RectangleF Rect { get; set; } + public Rectangle rect_count { get; set; } + public int AnimationStepPort { get; set; } + + /// + /// 0:notcart , 1:ready, 2:full + /// + public ushort State { get; set; } + + public Boolean Enable + { + get { return _enable; } + set + { + _enable = value; + this.bgColor = value ? Color.Lime : Color.FromArgb(43, 43, 43); + this.fgColor = value ? Color.White : Color.DimGray; + } + } + + public CPort() + { + CartSize = 0; + Ready = false; + Enable = false; + rect_title = Rectangle.Empty; + rect_count = Rectangle.Empty; + Rect = RectangleF.Empty; + reelNo = -1; + arrowIndex = 2; + reelCount = 0; + fgColor = Color.Black; + Clear(); + AlignOK = 0; + AnimationStepPort = 9; + //Items.Clear(); + } + //public void ClearItem() + //{ + // Items.Clear(); + //} + public void Clear() + { + CartSize = 0; + Enable = true; + SaftyErr = false; + MotorRun = false; + MotorDir = false; + LimitUpper = false; + LimitLower = false; + reelNo = 0; + reelCount = 0; + DetectUp = false; + } + + public void Display(Graphics g, Font fCnt, Font fMsg, Boolean Magneton, Boolean VisionRdy, Boolean VisionEnd, Boolean ItemOn, Boolean VisionLock, int VisionCnt) + { + if (Enable == false) + { + g.DrawLine(Pens.DimGray, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); + g.DrawLine(Pens.DimGray, Rect.Right, Rect.Top, Rect.Left, Rect.Bottom); + } + + //모터사용시 화살표 + eDirection DirL = MotorDir == false ? eDirection.TopToBottom : eDirection.BottomToTop; + if (MotorRun) UIControl.Common.Draw_Arrow(g, Rect, DirL, arrowIndex, AnimationStepPort, Color.Gold, fMsg); + + //글자표시 (크기 및 작업 수량) + var sf = new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + }; + + + //리밋영역표시(상/하) + var limitSizeH = (int)(Rect.Height * 0.2); + + + if (OverLoad == true)//과적 + { + g.FillRectangle(Brushes.Red, Rect); + g.DrawString("OVER\nLOAD", fMsg, new SolidBrush(fgColor), Rect, sf); + } + else + { + if (errorCount > 5) + { + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Gold)), Rect); + } + else + { + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), Rect); + } + + + if (errorCount > 0) + { + if (errorCount > 05) + { + g.DrawString(reelCount.ToString() + "\n(ERROR)", fCnt, new SolidBrush(Color.Red), Rect, sf); + } + else g.DrawString(reelCount.ToString() + "\nE:" + errorCount.ToString(), fCnt, new SolidBrush(Color.Red), Rect, sf); + } + else + { + + g.DrawString(reelCount.ToString(), fCnt, new SolidBrush(fgColor), Rect, sf); + } + } + + //마그넷상태표시 + var magheight = 30; + var magrect = new RectangleF(this.Rect.Left, this.Rect.Bottom - magheight, this.Rect.Width, magheight); + if (Magneton) + { + g.DrawString("LOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Gold, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + else + { + g.FillRectangle(Brushes.DimGray, magrect); + g.DrawString("UNLOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + //아이템을 가지고 있다면 처리해준다. + if (ItemOn) + { + magrect = new RectangleF(this.Rect.Left, this.Rect.Top, this.Rect.Width, magheight); + g.FillRectangle(Brushes.Gold, magrect); + g.DrawString("ITEM-ON", new Font("Consolas", 12, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + + + //데두리표시 ( 비활성 회색, 활성 감지 : 라임, 미감지 흰색) + Color borderL = Enable ? (LimitUpper ? Color.Red : (LimitLower ? Color.Blue : (DetectUp ? Color.Lime : Color.White))) : Color.DimGray; + if (OverLoad) borderL = Color.White; + int bordersize = 7;//ortL.enable ? 7 : 1; + + //비젼영역추가 201228 + using (Font f = new Font("Consolas", 8, FontStyle.Bold)) + { + var vrect = new RectangleF(Rect.Right, Rect.Top, 20, Rect.Height); + Color fcolor2 = Color.Gray; + var drawstr = "VISON RDY"; + if (VisionEnd) { drawstr = "VISION END"; fcolor2 = Color.Lime; } + else if (VisionRdy) { drawstr = "VISION RUN"; fcolor2 = Color.Gold; }; + drawstr += "(" + VisionCnt.ToString() + ")"; + if (VisionLock) g.DrawRect(vrect, Color.Blue, 7); + else g.DrawRect(vrect, fcolor2, 7); + g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + FormatFlags = StringFormatFlags.DirectionVertical + }); + + vrect = new RectangleF(Rect.Left - 20, Rect.Top, 20, Rect.Height); + fcolor2 = Color.Gray; + drawstr = "PORT RDY(" + this.AlignOK.ToString() + ")"; + if (Ready) fcolor2 = Color.Lime; + g.DrawRect(vrect, fcolor2, 7); + g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + FormatFlags = StringFormatFlags.DirectionVertical + }); + } + + + if (OverLoad == false) + { + var fontsize = 9; + using (Font fnt = new Font("Consolas", fontsize, FontStyle.Bold)) + { + //상단 리밋은 상단에 + if (LimitUpper) + { + var msgLU = "+ LIMIT"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Top - msgH - bordersize / 2.0f + 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Red)), RectMsgL); + // g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgLU, fnt, Color.White, RectMsgL); + + } + + //아이템 감지신호는 상단 아래쪽으로 + if (Ready) + { + //var msgLU = "READY"; + //var fsize = g.MeasureString(msgLU, fnt); + //var msgW = fsize.Width * 1.5f; + //var msgH = fsize.Height * 1.5f; + //if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + //var RectMsgL = new RectangleF( + //Rect.Left + (Rect.Width - msgW) / 2.0f, + //Rect.Top + bordersize / 2.0f - 1, + //msgW, msgH); + + //g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL); + //// g.DrawRectangle(Pens.Black, RectMsgL); + //g.DrawString(msgLU, fnt, Color.Black, RectMsgL); + } + + + //하단 리밋은 하단에표시 + if (LimitLower) + { + var msgLU = "- LIMIT"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Top - msgH - bordersize / 2.0f + 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Blue)), RectMsgL); + //g.DrawString(msgLU, fnt, Brushes.White, RectMsgL, sf); + g.DrawString(msgLU, fnt, Color.White, RectMsgL); + + } + + + //아이템 감지 + if (DetectUp) + { + var msgLU = "DETECT"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Bottom + 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL); + //g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgLU, fnt, Color.Black, RectMsgL); + + } + + //안전 오류는 중앙에 + + if (SaftyErr) + { + var msgS = "SAFTY ERROR"; + var fsize = g.MeasureString(msgS, fMsg); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.80f) msgW = this.Rect.Width * 0.8f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Top + (Rect.Height - msgH) / 2.0f, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Khaki)), RectMsgL); + g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgS, fMsg, Color.Maroon, RectMsgL); + + } + } + + } + + //테두리가 리밋영역을 감추도록 그린다 + g.DrawRectangle(new Pen(borderL, bordersize), Rect.Left, Rect.Top, Rect.Width, Rect.Height); + + + + + sf.Dispose(); + } + + public void DisplayConv(Graphics g, Font fCnt, Font fMsg, Boolean Magneton, Boolean VisionRdy, Boolean VisionEnd, Boolean ItemOn, Boolean VisionLock, int VisionCnt, bool cvbusy, bool cvreadyoff) + { + if (Enable == false) + { + g.DrawLine(Pens.DimGray, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); + g.DrawLine(Pens.DimGray, Rect.Right, Rect.Top, Rect.Left, Rect.Bottom); + } + + + //모터사용시 화살표 + eDirection DirL = MotorDir == false ? eDirection.TopToBottom : eDirection.BottomToTop; + if (MotorRun) UIControl.Common.Draw_Arrow(g, Rect, DirL, arrowIndex, AnimationStepPort, Color.Gold, fMsg); + + //글자표시 (크기 및 작업 수량) + var sf = new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + }; + + + //리밋영역표시(상/하) + var limitSizeH = (int)(Rect.Height * 0.2); + + + if (errorCount > 5) + { + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Gold)), Rect); + } + else + { + if (cvbusy) + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Tomato)), Rect); + if (cvreadyoff) + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Red)), Rect); + else + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), Rect); + } + + if (reelCount != 0) + { + //버튼형태처럼 보이게한다. + g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Gold)), Rect); + g.DrawRectangle(new Pen(Color.WhiteSmoke, 5), Rect.Left, Rect.Top, Rect.Width, Rect.Height); + } + + if (errorCount > 0) + { + if (errorCount > 05) + { + g.DrawString(reelCount.ToString() + "\n(ERROR)", fCnt, new SolidBrush(Color.Red), Rect, sf); + } + else g.DrawString(reelCount.ToString() + "\nE:" + errorCount.ToString(), fCnt, new SolidBrush(Color.Red), Rect, sf); + } + else if (reelCount > 0) + { + + g.DrawString(reelCount.ToString(), fCnt, new SolidBrush(fgColor), Rect, sf); + } + + //마그넷상태표시 + var magheight = 30; + var magrect = new RectangleF(this.Rect.Left, this.Rect.Bottom - magheight, this.Rect.Width, magheight); + //if (Magneton) + //{ + // g.DrawString("LOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Gold, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + //} + //else + //{ + // g.FillRectangle(Brushes.DimGray, magrect); + // g.DrawString("UNLOCK(" + CartSize.ToString() + ")", new Font("Consolas", 10, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + //} + + //아이템을 가지고 있다면 처리해준다. + if (ItemOn) + { + magrect = new RectangleF(this.Rect.Left, this.Rect.Top, this.Rect.Width, magheight); + g.FillRectangle(Brushes.Gold, magrect); + g.DrawString("ITEM-ON", new Font("Consolas", 12, FontStyle.Bold), Brushes.Black, magrect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + + + //데두리표시 ( 비활성 회색, 활성 감지 : 라임, 미감지 흰색) + Color borderL = Enable ? Color.White : Color.DimGray; + //if (OverLoad) borderL = Color.White; + int bordersize = 7;//ortL.enable ? 7 : 1; + + //비젼영역추가 201228 + using (Font f = new Font("Consolas", 8, FontStyle.Bold)) + { + var vrect = new RectangleF(Rect.Right, Rect.Top, 20, Rect.Height); + Color fcolor2 = Color.Gray; + var drawstr = "VISON RDY"; + if (VisionEnd) { drawstr = "VISION END"; fcolor2 = Color.Lime; } + else if (VisionRdy) { drawstr = "VISION RUN"; fcolor2 = Color.Gold; }; + drawstr += "(" + VisionCnt.ToString() + ")"; + if (VisionLock) g.DrawRect(vrect, Color.Blue, 7); + else g.DrawRect(vrect, fcolor2, 7); + g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + FormatFlags = StringFormatFlags.DirectionVertical + }); + + vrect = new RectangleF(Rect.Left - 20, Rect.Top, 20, Rect.Height); + fcolor2 = Color.Gray; + drawstr = "EXT RDY"; + if (cvreadyoff) fcolor2 = Color.Red; + else if (Ready) fcolor2 = Color.Lime; + g.DrawRect(vrect, fcolor2, 7); + g.DrawString(drawstr, f, new SolidBrush(fcolor2), vrect, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + FormatFlags = StringFormatFlags.DirectionVertical + }); + } + + + //테두리가 리밋영역을 감추도록 그린다 + if (reelCount == 0) + { + g.DrawRectangle(new Pen(borderL, bordersize), Rect.Left, Rect.Top, Rect.Width, Rect.Height); + } + + + + + + sf.Dispose(); + } + + + } +} diff --git a/Handler/Sub/UIControl/Common.cs b/Handler/Sub/UIControl/Common.cs new file mode 100644 index 0000000..ba367e3 --- /dev/null +++ b/Handler/Sub/UIControl/Common.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public static class Common + { + public static void Draw_Arrow(Graphics g, RectangleF rect, eDirection dir, int arrowindex, int animstep, Color basecolor,Font f ) + { + //컨베어 RUN 표시기 표시 + var paddingX = rect.Height * 0.15f; //상하단에 이만큼의 여백을 준다 + var paddingY = rect.Height * 0.15f; + var sigHeight = rect.Height - (paddingX * 2.0f); + var sigWidth = rect.Width / animstep; + + if (dir == eDirection.BottomToTop || dir == eDirection.TopToBottom) + { + paddingX = rect.Width * 0.15f; + paddingY = rect.Height / 10.0f; + sigWidth = rect.Width - (paddingX * 2.0f); + sigHeight = rect.Height / 4.5f; + } + List pts = new List(); + + //사각영역을 표시해준다. + //if (dir == eDirection.LeftToRight || dir == eDirection.RightToLeft) + //{ + // var rect2width = rect.Width / animstep; + // for (int i = 0; i < animstep; i++) + // { + // var rect2 = new RectangleF(rect.X + i * rect2width, rect.Y, rect2width, rect.Height); + // g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height); + // g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top); + // } + //} + //else + //{ + // var rect2width = rect.Height / animstep; + // for (int i = 0; i < animstep; i++) + // { + // var rect2 = new RectangleF(rect.X, rect.Y + i * rect2width, rect.Width, rect2width); + // g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height); + // g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top); + // } + //} + + + + var bX = rect.X + paddingX; + var bY = rect.Y + paddingY; + + if (dir == eDirection.LeftToRight) + { + var gridSize = rect.Width / animstep; + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth * 2.0f, rect.Y + paddingX + sigHeight / 2.0f)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX + sigHeight)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight / 2.0f)); + } + else if (dir == eDirection.RightToLeft) + { + var gridSize = rect.Width / animstep; + paddingY = rect.Height * 0.1f; //상,하 여백을 10%크기로 한다 + sigHeight = rect.Height - paddingY * 2.0f; + + bX = rect.X + ((animstep - 1) - arrowindex) * gridSize; + bY = rect.Y + paddingY; + + pts.Add(new PointF(bX, bY)); + pts.Add(new PointF(bX - gridSize, bY + sigHeight / 2.0f)); + pts.Add(new PointF(bX, bY + sigHeight)); + pts.Add(new PointF(bX + gridSize, bY + sigHeight)); + pts.Add(new PointF(bX, bY + sigHeight / 2.0f)); + pts.Add(new PointF(bX + gridSize, bY)); + } + else if (dir == eDirection.TopToBottom) + { + var gridSize = rect.Height / animstep; + paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다 + sigWidth = rect.Width - paddingX * 2.0f; + + bX = rect.X + paddingX; + bY = rect.Y + (arrowindex + 1) * gridSize; + + + pts.Add(new PointF(bX, bY)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY + gridSize)); + pts.Add(new PointF(bX + sigWidth, bY)); + pts.Add(new PointF(bX + sigWidth, bY - gridSize)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY)); + pts.Add(new PointF(bX, bY - gridSize)); + + } + else if (dir == eDirection.BottomToTop) + { + var gridSize = rect.Height / animstep; + paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다 + sigWidth = rect.Width - paddingX * 2.0f; + + bX = rect.X + paddingX; + bY = rect.Y + ((animstep - 1) - arrowindex) * gridSize; + + + pts.Add(new PointF(bX, bY)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY - gridSize)); + pts.Add(new PointF(bX + sigWidth, bY)); + pts.Add(new PointF(bX + sigWidth, bY + gridSize)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY)); + pts.Add(new PointF(bX, bY + gridSize)); + } + if (pts.Count > 0) + { + g.FillPolygon(new SolidBrush(Color.FromArgb(10, basecolor)), pts.ToArray()); + g.DrawPolygon(new Pen(Color.FromArgb(100, basecolor)), pts.ToArray()); + } + + //g.DrawString(arrowindex.ToString(), f, Brushes.Yellow, rect.Left, rect.Top - 20); + } + + } +} diff --git a/Handler/Sub/UIControl/EnumStruct.cs b/Handler/Sub/UIControl/EnumStruct.cs new file mode 100644 index 0000000..957388f --- /dev/null +++ b/Handler/Sub/UIControl/EnumStruct.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public enum eMsgIcon + { + None, + Info, + Alert, + Error, + Help + } + public enum eButtonType + { + Rectangle = 0, + Circle, + } + public enum eDirection + { + LeftToRight, + RightToLeft, + BottomToTop, + TopToBottom + } + public partial class HMI + { + enum eAxis : byte + { + Y_P = 0, + Z_F, + Z_R, + X_F, + X_R, + } + public enum eScean : byte + { + Nomal = 0, + MotHome, + + xmove, + } + } +} diff --git a/Handler/Sub/UIControl/Events.cs b/Handler/Sub/UIControl/Events.cs new file mode 100644 index 0000000..f8071f0 --- /dev/null +++ b/Handler/Sub/UIControl/Events.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public partial class HMI + { + public class MessageArgs : EventArgs + { + public string Message { get; set; } + public Boolean isError { get; set; } + public MessageArgs(string m, Boolean err) + { + this.Message = m; + this.isError = err; + } + } + + + public event EventHandler Message; + + } +} diff --git a/Handler/Sub/UIControl/HMI.cs b/Handler/Sub/UIControl/HMI.cs new file mode 100644 index 0000000..24b47dc --- /dev/null +++ b/Handler/Sub/UIControl/HMI.cs @@ -0,0 +1,1469 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Windows.Forms; +using AR; + +namespace UIControl +{ + public partial class HMI : System.Windows.Forms.Control + { + arDev.DIO.IDIO dio = null; + arDev.MOT.IMotion mot = null; + + #region "Variable - Private" + Timer tm; + Boolean _ardebugmode = false; + eScean _scean = eScean.Nomal; + //기타 내부 변수 + int AnimationStepConv = 30; //컨베어 이동 애니메이션 최대 값 + //int AnimationStepPort = 9; //포트 이동 애니메이션 최대 값 + Boolean bRemakeRect = true; //이값이 활성화되면 각 영역을 다시 그리게 된다 + DateTime updatetime = DateTime.Now; //화면을 다시 그린 시간 + Brush BRPortBg = new SolidBrush(Color.FromArgb(50, Color.DimGray)); + Brush BRDetectDn = new SolidBrush(Color.FromArgb(50, Color.DimGray)); + StringFormat sfCenter; + StringFormat sfLeft = new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center }; + SolidBrush brVacOff = new SolidBrush(Color.FromArgb(150, Color.White)); + SolidBrush brVacOn = new SolidBrush(Color.FromArgb(200, Color.Lime)); + Font arFont_MotPosName { get; set; } + + Pen penVacOn = new Pen(Color.Red, 5); + Pen penVacOff = new Pen(Color.Black, 5); + + //영역(큰 그림?) (bRemakeRect 에 의 해 생성된다) + RectangleF rect_main = RectangleF.Empty; + // RectangleF rect_frontShuttle = RectangleF.Empty; + //RectangleF rect_rearShuttle = RectangleF.Empty; + RectangleF rect_conveyor = RectangleF.Empty; + RectangleF rect_picker = RectangleF.Empty; + RectangleF rect_printl = RectangleF.Empty; + RectangleF rect_printr = RectangleF.Empty; + + + //영역(피커) + RectangleF rect_picker_left = RectangleF.Empty; + RectangleF rect_picker_front_vac1 = RectangleF.Empty; + RectangleF rect_picker_front_vac2 = RectangleF.Empty; + RectangleF rect_picker_front_vac3 = RectangleF.Empty; + RectangleF rect_picker_front_vac4 = RectangleF.Empty; + + //X축 포트 (F-L:0, F-R:1, R-L:2, R-R:3 + //RectangleF[] rect_port = new RectangleF[4]; + RectangleF[] rect_zone = new RectangleF[11]; + + //CIcon[] icons = new CIcon[7]; + List Buttons = new List(); + List menuButtons = new List(); + + #endregion + + #region "Variable - Public" + // public double[] arMotorPosition = new double[] { 0, 0, 0, 0, 0 }; + public int ConveyorRunPoint = 1; //컨베어 모터 이동시 이동 화살표의 위치값(내부 타이머에의해 증가함) + public double arMcLengthW = 1460; + public double arMcLengthH = 1350;// + public bool CVLeftBusy = false; + public bool CVLeftReady = false; + public bool CVRightBusy = false; + public bool CVRightReady = false; + #endregion + + RectangleF rect_vision = RectangleF.Empty; + + public string arVision_RID { get; set; } + public string arVision_SID { get; set; } + + RectangleF rect_zlaxis = RectangleF.Empty;// new RectangleF((float)motZLPosX, (float)motZPosY, motZwPx, (float)motZhPx); + + public Boolean arVisionProcessL { get; set; } + public Boolean arVisionProcessC { get; set; } + public Boolean arVisionProcessR { get; set; } + + #region "Property" + + public int arCountV0 { get; set; } + public int arCountV1 { get; set; } + public int arCountV2 { get; set; } + + public int arCountPrint0 { get; set; } + public int arCountPrint1 { get; set; } + + public Boolean arPortLItemOn { get; set; } + public Boolean arPortRItemOn { get; set; } + + public Boolean arPLItemON { get; set; } + public Boolean arPRItemON { get; set; } + public Boolean arMagnet0 { get; set; } + public Boolean arMagnet1 { get; set; } + public Boolean arMagnet2 { get; set; } + public Boolean arPickerSafeZone { get; set; } + + private Padding _padding = new Padding(0); + public new Padding Padding { get { return _padding; } set { _padding = value; bRemakeRect = true; this.Invalidate(); } } + + /// + /// 현재 메뉴가 표시되어있는가? + /// + public Boolean HasPopupMenu { get; private set; } + /// + /// 현재표시된 메뉴는 사용자의 입력을 반드시 받아야 하는가? + /// + public Boolean PopupMenuRequireInput { get; private set; } + public Font arFont_PortMessage { get; set; } + + + public eScean Scean { get { return _scean; } set { _scean = value; bRemakeRect = true; this.Invalidate(); } } + + //컨베이어에 설치된 자재 감지 센서 + public Boolean[] arDI_Cv_Detect { get; set; } + //컨베이어 입구 안전 센서 + public Boolean arInitMOT { get; set; } + public Boolean arJobEND { get; set; } + public Boolean arLowDiskSpace { get; set; } //용량 부족 메세지 여부 + public double arFreespace { get; set; } //남은 디스크 용량 비율 + + public Boolean arFGVision0RDY { get; set; } + public Boolean arFGVision1RDY { get; set; } + public Boolean arFGVision2RDY { get; set; } + + public Boolean arFGVision0END { get; set; } + public Boolean arFGVision1END { get; set; } + public Boolean arFGVision2END { get; set; } + + public Boolean arFGPrinter0RDY { get; set; } + public Boolean arFGPrinter1RDY { get; set; } + public Boolean arFGPrinter2RDY { get; set; } + + public Boolean arFGPrinter0END { get; set; } + public Boolean arFGPrinter1END { get; set; } + public Boolean arFGPrinter2END { get; set; } + + + public Boolean arDI_SaftyOk { get; set; } + + public string arMotPosNamePX { get; set; } + public string arMotPosNamePZ { get; set; } + public string arMotPosNameLM { get; set; } + public string arMotPosNameLZ { get; set; } + public string arMotPosNameRM { get; set; } + public string arMotPosNameRZ { get; set; } + + public Boolean arMotILockPKX { get; set; } + public Boolean arMotILockPKZ { get; set; } + public Boolean arMotILockPLM { get; set; } + public Boolean arMotILockPLZ { get; set; } + public Boolean arMotILockPRM { get; set; } + public Boolean arMotILockPRZ { get; set; } + + public Boolean arMotILockPRL { get; set; } + public Boolean arMotILockPRR { get; set; } + public Boolean arMotILockVS0 { get; set; } + public Boolean arMotILockVS1 { get; set; } + public Boolean arMotILockVS2 { get; set; } + public Boolean arMotILockCVL { get; set; } + public Boolean arMotILockCVR { get; set; } + + public Boolean PrintLPICK { get; set; } + public Boolean PrintRPICK { get; set; } + + public Boolean L_PICK_FW { get; set; } + public Boolean L_PICK_BW { get; set; } + public Boolean R_PICK_FW { get; set; } + public Boolean R_PICK_BW { get; set; } + + public Boolean[] arMOT_LimUp = new bool[] { false, false, false, false, false, false, false }; + public Boolean[] arMOT_LimDn = new bool[] { false, false, false, false, false, false, false }; + public Boolean[] arMOT_Origin = new bool[] { false, false, false, false, false, false, false }; + public Boolean[] arMOT_Alm = new bool[] { false, false, false, false, false, false, false }; + public Boolean[] arMOT_HSet = new bool[] { false, false, false, false, false, false, false }; + public Boolean[] arMOT_SVOn = new bool[] { false, false, false, false, false, false, false }; + + public Boolean arFlag_Minspace { get; set; } + + public byte arUnloaderSeq { get; set; } + public Boolean arFlag_UnloaderBusy { get; set; } + public Boolean arFlag_UnloaderErr { get; set; } + public Boolean arConn_REM { get; set; } + + + public Boolean arFG_RDY_YP_FPICKON { get; set; } + public Boolean arFG_RDY_YP_FPICKOF { get; set; } + public Boolean arFG_RDY_YP_RPICKON { get; set; } + public Boolean arFG_RDY_YP_RPICKOF { get; set; } + + public Boolean arFG_CMD_YP_FPICKON { get; set; } + //public Boolean arFG_CMD_YP_FPICKOF { get; set; } + public Boolean arFG_CMD_YP_RPICKON { get; set; } + //public Boolean arFG_CMD_YP_RPICKOF { get; set; } + + + + + //비상정지 센서 상태 + public Boolean arDI_Emergency { get; set; } + + public Boolean arDIAir { get; set; } + + public Boolean arConn_MOT { get; set; } + public Boolean arConn_DIO { get; set; } + public Boolean arAIRDetect { get; set; } + public Boolean arConn_BCD { get; set; } + public Boolean arConn_PLC { get; set; } + + public int arLastDetectIndex { get; set; } + + + public Boolean arDebugMode { get { return _ardebugmode; } set { this._ardebugmode = value; Invalidate(); } } + + public CPort[] arVar_Port { get; set; } + public CPicker[] arVar_Picker { get; set; } + + public Boolean arConvRun { get; set; } + + + public Boolean arIsRunning { get; set; } + + + private List zitem = new List(); + public long[] zonetime = new long[11]; + + public Font arFont_count { get; set; } + public Font arFont_picker { get; set; } + + public double arMotorLengthY { get; set; } + public double arMotorLengthZL { get; set; } + public double arMotorLengthZR { get; set; } + + private double[] _armotpos = new double[] { 0, 0, 0, 0, 0, 0, 0 }; + public double[] arMotorPosition { get { return _armotpos; } set { _armotpos = value; } } + private double[] _arhomepgoress = new double[] { 0, 0, 0, 0, 0, 0, 0 }; + public double[] arHomeProgress { get { return _arhomepgoress; } set { _arhomepgoress = value; } } + + private CMenu[] _menus = null; + public CMenu[] arMenus { get { return _menus; } set { _menus = value; this.Invalidate(); } } + + #endregion + + public Boolean PickerSafezone = false; + public HMI() + { + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.ContainerControl, false); + this.SetStyle(ControlStyles.Selectable, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + + this.Resize += Loader_Resize; + + sfCenter = new StringFormat(); + sfCenter.Alignment = StringAlignment.Center; + sfCenter.LineAlignment = StringAlignment.Center; + + + tm = new Timer(); + tm.Interval = 50; //10frame; + tm.Tick += Tm_Tick; + + arLastDetectIndex = -1; + arFont_PortMessage = new Font("Consolas", 11, FontStyle.Bold); + arFont_picker = new Font("Arial", 10, FontStyle.Bold); + arFont_MotPosName = new Font("Consolas", 10, FontStyle.Bold); + + arUnloaderSeq = 0; + arMotorLengthY = 400; + arMotorLengthZL = 580; + arMotorLengthZR = 590; + + arDI_Cv_Detect = new bool[8]; + for (int i = 0; i < arDI_Cv_Detect.Length; i++) + arDI_Cv_Detect[i] = false; + + bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime); + if (designMode == false) tm.Start(); + + arFont_count = new Font("Consolas", 30, FontStyle.Bold); + + //기본수량설정됨 + arVar_Port = new CPort[3]; + arVar_Picker = new CPicker[1]; + + for (int i = 0; i < rect_zone.Length; i++) + rect_zone[i] = RectangleF.Empty; + + for (int i = 0; i < zonetime.Length; i++) + zonetime[i] = 0; + + //미리 10개를 생성한다. 슬롯에 10개이상 생기기 않는다. + zitem = new List(10); + for (int i = 0; i < zitem.Count; i++) + zitem[i] = new CItem(); + } + + + public void ClearMessage() + { + + } + + private List lkitemsF = new List(); + private List lkitemsR = new List(); + + + + #region "Common Data & Device" + + DateTime UpdateTime = DateTime.Now.AddSeconds(-1); + + //public void SetFLAG(arUtil.IInterLock dio_) + //{ + // this.flag = dio_; + // this.flag.ValueChanged += Flag_ValueChanged; + //} + public void SetDIO(arDev.DIO.IDIO dio_) + { + this.dio = dio_; + this.dio.IOValueChanged += Dio_IOValueChanged; + } + public void SetMOT(arDev.MOT.IMotion dio_) + { + this.mot = dio_; + this.mot.HomeStatusChanged += Mot_HomeStatusChanged; + this.mot.PositionChanged += Mot_PositionChanged; + this.mot.StatusChanged += Mot_StatusChanged; + } + private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e) + { + var ts = DateTime.Now - UpdateTime; + if (ts.TotalMilliseconds < 500) return; + else UpdateTime = DateTime.Now; + this.Invalidate(); + } + + private void Mot_StatusChanged(object sender, arDev.MOT.StatusChangeEventArags e) + { + var ts = DateTime.Now - UpdateTime; + if (ts.TotalMilliseconds < 500) return; + else UpdateTime = DateTime.Now; + this.Invalidate(); + } + + private void Mot_PositionChanged(object sender, arDev.MOT.PositionChangeEventArgs e) + { + var ts = DateTime.Now - UpdateTime; + if (ts.TotalMilliseconds < 500) return; + else UpdateTime = DateTime.Now; + this.Invalidate(); + } + + private void Mot_HomeStatusChanged(object sender, arDev.MOT.HomeStatusChangeEventArgs e) + { + var ts = DateTime.Now - UpdateTime; + if (ts.TotalMilliseconds < 500) return; + else UpdateTime = DateTime.Now; + this.Invalidate(); + } + + //private void Flag_ValueChanged(object sender, arUtil.InterfaceValueEventArgs e) + //{ + // var ts = DateTime.Now - UpdateTime; + // if (ts.TotalMilliseconds < 500) return; + // else UpdateTime = DateTime.Now; + // this.Invalidate(); + //} + + public Boolean MotionHome { get; set; } + + bool GetBOOL(eVarBool idx) + { + return VAR.BOOL?[(int)idx] ?? false; + } + string GetSTR(eVarString idx) + { + return VAR.STR?[(int)idx] ?? string.Empty; + } + + bool GetDOValue(eDOName pin) + { + return dio?.GetDOValue((int)pin) ?? false; + } + bool GetDIValue(eDIName pin) + { + return dio?.GetDIValue((int)pin) ?? false; + } + + #endregion + + public void ClearLockItem(int idx) + { + if (idx == 0) + { + lock (lkitemsF) + lkitemsF.Clear(); + } + else + { + lock (lkitemsR) + lkitemsR.Clear(); + } + } + public void AddLockItem(int idx, params string[] values) + { + if (idx == 0) + { + lock (lkitemsF) + { + foreach (var value in values) + { + if (lkitemsF.Contains(value) == false) + lkitemsF.Add(value); + } + } + } + else + { + lock (lkitemsR) + { + foreach (var value in values) + { + if (lkitemsR.Contains(value) == false) + lkitemsR.Add(value); + } + } + } + } + public void RemoveLockItem(int idx, params string[] values) + { + if (idx == 0) + { + lock (lkitemsF) + { + foreach (var value in values) + { + if (lkitemsF.Contains(value) == true) + lkitemsF.Remove(value); + } + } + } + else + { + lock (lkitemsR) + { + foreach (var value in values) + { + if (lkitemsR.Contains(value) == true) + lkitemsR.Remove(value); + } + } + } + + } + + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + //if (this.icons == null || icons.Length < 1) return; + + //var item = this.icons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + + ////선택된 것이 잇다면 모두 해제를 해준다. + //icons.Where(t => t.Focus == true).ToList().ForEach(t => t.Focus = false); + + + //if (item != null) + //{ + // item.Focus = true; + // this.Cursor = Cursors.Hand; + //} + //else + //{ + // this.Cursor = Cursors.Arrow; + //} + } + + public class ZoneItemClickEventargs : EventArgs + { + public CItem item { get; private set; } + public ZoneItemClickEventargs(CItem item_) + { + this.item = item_; + } + } + public class IconClickEventargs : EventArgs + { + public CIcon item { get; private set; } + public IconClickEventargs(CIcon item_) + { + this.item = item_; + } + } + public class MenuItemClickEventargs : EventArgs + { + public CMenuButton item { get; private set; } + public MenuItemClickEventargs(CMenuButton item_) + { + this.item = item_; + } + } + public event EventHandler ButtonClick; + public event EventHandler IConClick; + public event EventHandler ZoneItemClick; + protected override void OnMouseClick(MouseEventArgs e) + { + base.OnMouseClick(e); + + if (e.Button == MouseButtons.Left) + { + //var item = this.icons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + //if (item != null) + //{ + // //다른 메뉴가 선택되어잇다면 동작하지 않게 한다. + // if (IConClick != null) + // IConClick(this, new IconClickEventargs(item)); + //} + + var zitem = this.zitem.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + if (zitem != null) + { + //특정 존의 아이템을 선택했다 + if (ZoneItemClick != null) + ZoneItemClick(this, new ZoneItemClickEventargs(zitem)); + + } + + //메뉴의해 생성된 버튼 + var zbbut = this.menuButtons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + if (zbbut != null) + { + //특정 존의 아이템을 선택했다 + if (ButtonClick != null) + ButtonClick(this, new MenuItemClickEventargs(zbbut)); + + } + + //아이콘 + var zbut = this.Buttons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + if (zbut != null) + { + //특정 존의 아이템을 선택했다 + if (ButtonClick != null) + ButtonClick(this, new MenuItemClickEventargs(zbut)); + } + + } + } + void Loader_Resize(object sender, EventArgs e) + { + bRemakeRect = true; + } + + + public void RemakeRect() + { + bRemakeRect = true; + } + + /// + /// 각 영역을 현재 크기대비하여 재계산 한다 + /// + void makeRect_Normal() + { + + rect_main = new RectangleF( + DisplayRectangle.Left + Padding.Left, + DisplayRectangle.Top + Padding.Top, + DisplayRectangle.Width - Padding.Left - Padding.Right, + DisplayRectangle.Height - Padding.Top - Padding.Bottom); + + //X축 모션(셔틀) 표시 + var xPos1 = rect_main.Left + (rect_main.Width * 0.175); + var xPos2 = rect_main.Right - xPos1; + var yposR = rect_main.Height * 0.15; + var yposF = rect_main.Height * 0.85; + var h0p5 = rect_main.Height * 0.03; + var w0p5 = (rect_main.Width * 0.035) * ((rect_main.Height * 1.0) / rect_main.Width); + + //var conv_height = rect_main.Height * 0.3; + + var cx = (float)(rect_main.Top + (rect_main.Width / 2.0)); + var cy = (float)(rect_main.Top + (rect_main.Height / 2.0)); + + + var conv_height = CvtMMtoPX_H(350, 0); //컨베이어 높이 + var conv_width = CvtMMtoPX_W(arMcLengthW, 0); //컨베어이어너비는 장비 너비와 같다 + + rect_conveyor = new RectangleF(rect_main.Left, + (float)(rect_main.Top + (rect_main.Height - conv_height) / 2.0f), + (float)conv_width, + (float)conv_height); + + var h10p = rect_main.Height * 0.03; + + + //프론트셔틀의 영역(가동 영역) - 아래서 450mm 떨어진곳 + var xAxisLengthMM = arMcLengthW - 200; // 컨베어 길이에서 좌우 100mm 씩 리밋센서가 있다 + var xAxisLengthPX = CvtMMtoPX_W(xAxisLengthMM, rect_conveyor.Left); + //rect_frontShuttle = new RectangleF( + // (float)(CvtMMtoPX_W(100, rect_conveyor.Left)), + // (float)(CvtMMtoPX_H(100, rect_main.Top)), + // (float)xAxisLengthPX, + // (float)(CvtMMtoPX_H(20, 0))); + + + //세로축 총길이 1400mm Y축 모터는 양끝에 100mm 의 여유가 있으며, Y축 + + var pickWidth = rect_main.Width * 0.6f; + var pickerX = rect_main.Width / 2.0f;// CvtMMtoPX_W(750, rect_conveyor.Left); + + var YAxisLenWMM = arMcLengthW - 100 * 2; + var YAxisLenHMM = 100;// + var yAxisLenWPx = CvtMMtoPX_W(YAxisLenWMM, 0); //너비 + var yAxisLenHPx = CvtMMtoPX_H(YAxisLenHMM, 0); //길이 + var yAxisX = CvtMMtoPX_W(100, rect_main.Left); + var yAxisY = CvtMMtoPX_H(200, rect_main.Top); + + rect_picker = new RectangleF( + (float)(yAxisX), + (float)(yAxisY), + (float)(yAxisLenWPx), + (float)(yAxisLenHPx) + ); + + rect_printl = new RectangleF(rect_main.Left + 30, rect_picker.Bottom + 30, 30, rect_main.Height * 0.25f); + rect_printr = new RectangleF(rect_main.Right - rect_printl.Width - rect_printl.Left, rect_printl.Top, rect_printl.Width, rect_printl.Height); + + + //Y축 피커 관련 세부 영역 설정 (VAC 와 원) + + //전체영역의 80% 영역에 Y-로봇의 축을 그린다. + //var motorMax = 400; //전체 가동 길이 400mm + RectangleF rect = rect_picker; + var MotPosPx = rect.Left + rect.Width * (this.arMotorPosition[0] / (this.arMotorLengthY * 1.0f)); + cx = rect.Left + rect.Width / 2.0f; + + //상(Rear), 하(Front)로 영역을 그린다 + var port_height = rect.Height * 0.25f; + var port_width = port_height; + //;// var port_width = rect.Width * 3f; + //port_width = port_height; + var port_space = CvtMMtoPX_H(350 / 2.0f, 0); + var port_spacex = CvtMMtoPX_W(10, 0); ; + + var PickerSizeW = CvtMMtoPX_W(150, 0);// (float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0))); + var PickerSizeH = PickerSizeW;// CvtMMtoPX_H(130, 0);//(float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0))); + var PickerSpaceW = CvtMMtoPX_H(100, 0); + + + rect_picker_left = new RectangleF( + (float)(MotPosPx - PickerSpaceW), + (float)(rect.Top + 50), + (float)PickerSizeW, + (float)PickerSizeH); + + + var pointoffset = 5; + + + //진공표시영역 + rect_picker_front_vac1 = new RectangleF( + (float)rect_picker_left.Left + pointoffset, + (float)rect_picker_left.Top + pointoffset, + (float)rect_picker_left.Width * 0.2f, + (float)rect_picker_left.Height * 0.2f); + rect_picker_front_vac2 = new RectangleF( + (float)rect_picker_left.Right - rect_picker_front_vac1.Width - pointoffset, + (float)rect_picker_front_vac1.Top, + (float)rect_picker_front_vac1.Width, + (float)rect_picker_front_vac1.Height); + rect_picker_front_vac3 = new RectangleF( + (float)rect_picker_left.Left + pointoffset, + (float)rect_picker_left.Bottom - rect_picker_front_vac1.Height - pointoffset, + (float)rect_picker_front_vac1.Width, + (float)rect_picker_front_vac1.Height); + rect_picker_front_vac4 = new RectangleF( + (float)rect_picker_left.Right - rect_picker_front_vac1.Width - pointoffset, + (float)rect_picker_left.Bottom - rect_picker_front_vac1.Height - pointoffset, + (float)rect_picker_front_vac1.Width, + (float)rect_picker_front_vac1.Height); + + + //각 존의 영역 확인 + + //컨베어의 릴감지센서 위치를 표시한다 + var senseW = rect_conveyor.Width * 0.02f; + var senseH = rect_conveyor.Height * 0.05f; + var slist = new double[] { 20, 340, 550, 890, 1110, 1440 };// new double[] { 0.02, 0.25, 0.4, 0.6, 0.75, 0.9 }; //센서의 위치정보(컨베어좌측기준) + + + + //센서가 포함된 존의 영역을 생성한다 + for (int i = 0; i < slist.Length; i++) + { + //선으로 영역을 표시해준다. + var PosMM = rect_conveyor.Width * (slist[i] / arMcLengthW); + var x = (float)(rect_conveyor.Left + PosMM); + var rx = x - senseW / 2.0f; + rect_zone[i * 2] = new RectangleF(rx, rect_conveyor.Top, senseW, rect_conveyor.Height); + } + + var arraylis = new int[] { 1, 3, 5, 7, 9 }; + var zterm = 4; + for (int i = 0; i < arraylis.Length; i++) + { + var idx = arraylis[i]; + rect_zone[idx] = new RectangleF( + rect_zone[idx - 1].Right + zterm, + rect_zone[idx - 1].Top, + rect_zone[idx + 1].Left - rect_zone[idx - 1].Right - zterm * 2, + rect_zone[idx - 1].Height); + } + + //입출력포트의 영역을 다시 계산한다 + var portW = (int)(rect_main.Width * 0.125f); + var portH = (int)(rect_main.Height * 0.35f); + var portPad = (int)(rect_main.Width / 7f); + var MarginX = (int)((rect_main.Width - portW * 3 - portPad * 2) / 2.0); + var MarginY = (int)(rect_main.Height - portH - (portPad / 2f)); + + for (int i = 0; i < arVar_Port.Length; i++) + { + arVar_Port[i].Rect = new Rectangle( + (int)rect_main.Left + MarginX + (i * portW) + (i * portPad), + (int)rect_main.Top + MarginY+50, + portW, portH); + zitem.Add(new CItem + { + Rect = arVar_Port[i].Rect.toRect(), + index = i, + Tag = $"PORT{i}", + }); + + } + + } + void makeRect_xmove() + { + rect_main = new RectangleF( + DisplayRectangle.Left + DisplayRectangle.Width * 0.05f, + DisplayRectangle.Top + DisplayRectangle.Height * 0.05f, + DisplayRectangle.Width * 0.9f, + DisplayRectangle.Height * 0.9f); + + //화면에 꽉차도록 전체 영역을 할당한다. + var cx = rect_main.Left + rect_main.Width / 2.0f; + var cy = rect_main.Top + rect_main.Height / 2.0f; + + var padding = (int)(rect_main.Width * 0.03); + + var width = (int)((cx - rect_main.Left) - padding * 2); + var height = (int)((cy - rect_main.Top) - padding * 2); + arVar_Port[0].Rect = new Rectangle( + (int)rect_main.Left + padding, + (int)cy + padding, + width, height); + + arVar_Port[1].Rect = new Rectangle( + (int)cx + padding, + (int)cy + padding, + width, height); + + + arVar_Port[2].Rect = new Rectangle( + (int)(rect_main.Left + (rect_main.Width - width) / 2f), + (int)rect_main.Top + padding, + width, height); + + } + void makeRect_MotHome() + { + rect_main = new RectangleF( + DisplayRectangle.Left + DisplayRectangle.Width * 0.05f, + DisplayRectangle.Top + DisplayRectangle.Height * 0.05f, + DisplayRectangle.Width * 0.9f, + DisplayRectangle.Height * 0.9f); + } + + double CvtMMtoPX_W(double PosMM, double startPos) + { + //컨베어 기준으로 값을 반환한ㄷ. + return startPos + rect_main.Width * (PosMM / arMcLengthW); + } + double CvtMMtoPX_H(double PosMM, double startPos) + { + //컨베어 기준으로 값을 반환한ㄷ. + return startPos + rect_main.Height * (PosMM / arMcLengthH); + } + + #region "Menu Method" + public void ClearMenu() + { + _menus = null; + this.Invalidate(); + } + public void AddMenu(CMenu menu) + { + var curCnt = 0; + if (this._menus != null) curCnt = this._menus.Length; + Array.Resize(ref _menus, curCnt + 1); + _menus[curCnt] = menu; + this.Invalidate(); + } + + public void DelMenu(CMenu menu) + { + List newlist = new List(); + for (int i = 0; i < _menus.Length; i++) + { + if (_menus[i] != menu) newlist.Add(_menus[i]); + } + this._menus = newlist.ToArray(); + this.Invalidate(); + } + + public void DelMenu(int idx) + { + List newlist = new List(); + for (int i = 0; i < _menus.Length; i++) + { + if (i != idx) newlist.Add(_menus[i]); + } + this._menus = newlist.ToArray(); + this.Invalidate(); + } + public void DelMenu() + { + //제거할 아이템이 없다 + if (_menus == null || _menus.Length < 1) return; + + if (_menus.Length == 1) _menus = null; + else + { + //마지막요소를 제거 해주낟 + Array.Resize(ref _menus, _menus.Length - 1); + + } + + this.Invalidate(); + } + #endregion + + protected override void OnPaint(PaintEventArgs e) + { + e.Graphics.CompositingQuality = CompositingQuality.HighQuality; + e.Graphics.InterpolationMode = InterpolationMode.High; + e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + + base.OnPaint(e); + + if (bRemakeRect) + { + this.zitem.Clear(); + if (Scean == eScean.Nomal) makeRect_Normal(); + else if (Scean == eScean.MotHome) makeRect_MotHome(); + else if (Scean == eScean.xmove) makeRect_xmove(); + bRemakeRect = false; + } + + if (this.Scean == eScean.Nomal) Scean_Normal(e.Graphics); + else if (this.Scean == eScean.MotHome) Scean_MotHome(e.Graphics); + else if (this.Scean == eScean.xmove) Scean_XMove(e.Graphics); + } + + /// + /// Z축이 아이템을 내려놓은 시간(연속으로 놓는 증상이 발생하여, 일단 이것으로 2초이상 빠르게 놓는일이 없도록 한다) + /// + public DateTime LastDropTime = DateTime.Now; + + + void RaiseMessage(string m, Boolean iserr, params object[] args) + { + if (args != null && args.Length > 0) m = string.Format(m, args); + if (Message != null) Message(this, new MessageArgs(m, iserr)); + } + + /// + /// 아이템을 DROP해도 되는가? 존 3번 부터 아이템이 존재하면 drop 불가능으로 한다 + /// + + void Scean_XMove(Graphics g) + { + //g.DrawRect(arVar_Port[0].Rect, Color.White, 3); + Pen p = new Pen(Color.White, 5); + + var pts = new List(); + pts.Add(new PointF(arVar_Port[0].Rect.Right, arVar_Port[0].Rect.Top)); + pts.Add(new PointF(arVar_Port[0].Rect.Left, arVar_Port[0].Rect.Bottom - arVar_Port[0].Rect.Height / 2f)); + pts.Add(new PointF(arVar_Port[0].Rect.Right, arVar_Port[0].Rect.Bottom)); + g.FillPolygon(Brushes.Blue, pts.ToArray()); + g.DrawPolygon(p, pts.ToArray()); + g.DrawString("[START]\nLEFT", this.Font, Brushes.Gold, arVar_Port[0].Rect, new StringFormat { Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Center }); + + pts.Clear(); + pts.Add(new PointF(arVar_Port[1].Rect.Left, arVar_Port[1].Rect.Top)); + pts.Add(new PointF(arVar_Port[1].Rect.Right, arVar_Port[1].Rect.Bottom - arVar_Port[1].Rect.Height / 2f)); + pts.Add(new PointF(arVar_Port[1].Rect.Left, arVar_Port[1].Rect.Bottom)); + g.FillPolygon(Brushes.Brown, pts.ToArray()); + g.DrawPolygon(p, pts.ToArray()); + g.DrawString("[STOP]\nRIGHT", this.Font, Brushes.Gold, arVar_Port[1].Rect, new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center }); + + if (arPickerSafeZone) + g.FillEllipse(Brushes.Lime, arVar_Port[2].Rect); + else + g.FillEllipse(Brushes.Tomato, arVar_Port[2].Rect); + g.DrawEllipse(new Pen(Color.White, 3), arVar_Port[2].Rect); + g.DrawString("PICKER\nSAFTY\n" + (arPickerSafeZone ? "ON" : "OFF"), this.Font, Brushes.Black, arVar_Port[2].Rect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + + //중앙에 메세지를 표시한다. + var cpad = rect_main.Width * 0.1f; + var cheigh = rect_main.Height * 0.20f; + var crect = new RectangleF(rect_main.Left + cpad, rect_main.Top + (rect_main.Height - cheigh) / 2f, rect_main.Width - cpad * 2f, cheigh); + g.FillRectangle(new SolidBrush(Color.FromArgb(20, 20, 20)), crect); + + if (arPickerSafeZone) + g.DrawString("Home search is possible", new Font("Tahoma", 20, FontStyle.Bold), Brushes.Lime, crect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + else + { + if (MessageOn) + g.DrawString("Move the picker to a safe position", new Font("Tahoma", 12, FontStyle.Bold), Brushes.Red, crect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + else + g.DrawString("Move the picker to a safe position", new Font("Tahoma", 12, FontStyle.Bold), Brushes.White, crect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + g.DrawRect(crect, Color.White, 5); + p.Dispose(); + var ts = DateTime.Now - ScreenUpdateTime; + if (ts.TotalMilliseconds >= 200) + { + MessageOn = !MessageOn; + ScreenUpdateTime = DateTime.Now; + } + + } + + DateTime ScreenUpdateTime = DateTime.Now; + Boolean MessageOn = false; + + + void Scean_MotHome(Graphics g) + { + //g.DrawString("mot home", this.Font, Brushes.Black, 100, 100); + g.DrawRectangle(new Pen(Color.SteelBlue, 10), this.rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height); + Font f = new Font(this.Font.Name, 20f, FontStyle.Bold); + + var titleSize = g.MeasureString("HOME", f); + + var rectTitle = new RectangleF( + rect_main.Left, + rect_main.Top + 10, + rect_main.Width, + titleSize.Height * 1.2f); + + g.DrawString("MOTION HOME", f, Brushes.White, rectTitle, sfCenter); ; + // g.DrawRectangle(Pens.Red, rectTitle.Left, rectTitle.Top, rectTitle.Width, rectTitle.Height); + + var rectBody = new RectangleF( + rect_main.Left + 10, + rectTitle.Bottom + 10, + rect_main.Width - 20, + rect_main.Height - rectTitle.Height - 10 - 20); + + //g.DrawRectangle(Pens.White, rectBody.Left, rectBody.Top, rectBody.Width, rectBody.Height); + + + + var rectT = new Rectangle( + (int)(rectBody.Left + 20), + (int)(rectBody.Top + 30), + (int)(rectBody.Width * 0.3f), + (int)(rectBody.Height * 0.07)); + + var rectXF = new Rectangle( + (int)(rectT.Right + 20), + (int)(rectBody.Top + 30), + (int)(rectBody.Width - rectT.Width - rectT.Left - 10), + (int)(rectBody.Height * 0.07)); + + //g.DrawRect(rectT, Color.White, 1); + //g.DrawRect(rectXF, Color.Red, 1); + + + var titles = new string[] { "[0] PICKER-Y", "[1] PICKER-Z", "[2] PRINTL-Y", "[3] PRINTL-Z", "[4] PRINTR-Y", "[5] PRINTR-Z", "[6] ANGLE" }; + for (int i = 0; i < titles.Length; i++) + { + var perc = arHomeProgress[i]; + var title = titles[i]; + var offsetY = (rectBody.Height * 0.12f); + + //0번은 처리하지 않음 + if (i > 0) + { + rectXF.Offset(0, (int)offsetY); + rectT.Offset(0, (int)offsetY); + } + + + //g.DrawRectangle(Pens.Yellow, rectT.Left, rectT.Top, rectT.Width, rectT.Height); + + using (Font f2 = new Font(this.Font.Name, 10f, FontStyle.Bold)) + { + g.DrawString("* " + title, f2, Brushes.Lime, rectT, sfLeft); + } + + LinearGradientBrush brProgr = new LinearGradientBrush(rectXF, Color.Gold, Color.Yellow, LinearGradientMode.Vertical); + var rectXF_P = new Rectangle(rectXF.Left, rectXF.Top, (int)(rectXF.Width * (perc / 100.0)), rectXF.Height); + g.FillRectangle(brProgr, rectXF_P); + g.DrawRectangle(Pens.Gray, rectXF); + brProgr.Dispose(); + } + + + + + + f.Dispose(); + + } + + void Scean_Normal(Graphics g) + { + //전체 영역 테두리 + //g.DrawRectangle(new Pen(Color.White, 2), rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height); + + //포트표시(셔틀위에 표시됨) + Draw_Port(g); //front + + + //프린터영역그리기 201228 + var printareahei = 100; + var printareaw = 100; + var printbordersize = 5; + var rectpl = new RectangleF(arVar_Port[0].Rect.Right + printbordersize, arVar_Port[0].Rect.Top - printareahei-20, printareaw, printareahei); + var fColorPrn = arFGPrinter0END ? Color.Lime : (arFGPrinter0RDY ? Color.Gold : Color.Gray); + g.DrawRect(rectpl, fColorPrn, printbordersize); + var prnstrbase = "";// "Print Qty:" + arCountPrint0.ToString("000") + "\n"; + var prnstr = prnstrbase + (arFGPrinter0END ? "Print Complete" : (arFGPrinter0RDY ? "Printing" : "Print Ready")); + prnstr += "\n" + arCountPrint0.ToString("0000"); + g.DrawString(prnstr, new Font("Tahoma", 10, FontStyle.Bold), new SolidBrush(fColorPrn), rectpl, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + rectpl = new RectangleF(arVar_Port[2].Rect.Left - 90 - printbordersize, arVar_Port[2].Rect.Top - printareahei-20, printareaw, printareahei); + fColorPrn = arFGPrinter1END ? Color.Lime : (arFGPrinter1RDY ? Color.Gold : Color.Gray); + g.DrawRect(rectpl, fColorPrn, printbordersize); + prnstrbase = "";// "Print Qty:" + arCountPrint1.ToString("000") + "\n"; + prnstr = prnstrbase + (arFGPrinter1END ? "Print Complete" : (arFGPrinter1RDY ? "Printing" : "Print Ready")); + prnstr += "\n" + arCountPrint1.ToString("0000"); + g.DrawString(prnstr, new Font("Tahoma", 10, FontStyle.Bold), new SolidBrush(fColorPrn), rectpl, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + //모터 Y/Z축 + Draw_PickerY(g, rect_picker); + + //왼쪽 프린터 + Draw_PickerPrinter(g, rect_printl, 2, 3, false, arMotILockPLM, arMotILockPLZ, arPLItemON, PrintLPICK, L_PICK_FW, L_PICK_BW); + + //오른쪽 프린터 + Draw_PickerPrinter(g, rect_printr, 4, 5, true, arMotILockPRM, arMotILockPRZ, arPRItemON, PrintRPICK, R_PICK_FW, R_PICK_BW); + + //정보 표시 (나중에 제거해야함) 별도 인포박스형태를 취해야 함 + Draw_Error(g); + + //메뉴는 최상위에 표시한다 + Draw_Menu(g); + + if (arDebugMode) + { + + var sb = new System.Text.StringBuilder(); + sb.AppendLine("Debug Message"); + sb.AppendLine(string.Format("Display {0}", rect_main)); + sb.AppendLine(string.Format("Mot Name : {0}/{1}/{2}/{3}/{4}/{5}", arMotPosNamePX, arMotPosNamePZ, arMotPosNameLM, arMotPosNameLZ, arMotPosNameRM, arMotPosNameRZ)); + + updatetime = DateTime.Now; + + //작업 수량 및 전체수량을 표시함 + var sb2 = new System.Text.StringBuilder(); + if (arVar_Port != null && arVar_Port.Length > 0) + { + sb.AppendLine(string.Format("DIO:{4},BCD:{5},PLC:{6}\n" + + "YP_RDY {7},{8},{9},{10}\n" + + "YP_CMD {7},{8},{9},{10}\n", + arVar_Port[0].reelCount, + arVar_Port[1].reelCount, + arVar_Port[2].reelCount, + arConn_DIO, + arConn_BCD, + arConn_PLC, + arFG_RDY_YP_FPICKON, arFG_RDY_YP_FPICKOF, arFG_RDY_YP_RPICKON, arFG_RDY_YP_RPICKOF, + arFG_CMD_YP_FPICKON, arFG_CMD_YP_RPICKON)); + + } + } + } + + void Draw_Screw(Graphics g, Rectangle rect) + { + //모터표시(X축) + g.FillRectangle(new SolidBrush(Color.FromArgb(50, 150, 150, 150)), rect); + + //해다 영역에 사선으로그림을 그린다. + var termcount = 50; + var lineterm = rect.Width / termcount; + var skew = rect.Width * 0.01f; + Pen p = new Pen(Color.FromArgb(50, 120, 120, 120), 2); + for (int i = 0; i < termcount; i++) + { + var pt1 = new PointF(rect.Left + i * lineterm, rect.Top); + var pt2 = new PointF(pt1.X + skew, rect.Bottom); + g.DrawLine(p, pt1, pt2); + } + p.Dispose(); + g.DrawRectangle(new Pen(Color.FromArgb(50, Color.Gray)), rect.Left, rect.Top, rect.Width, rect.Height); + } + + void Draw_BallScrewRail(Graphics g, RectangleF rect, int divCount, int alpha, Boolean downDirection, Boolean MLock, Boolean Org, Boolean LimDn, Boolean LimUp) + { + //모터표시(X축) + if (Org) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.SkyBlue)), rect); + else if (LimUp) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.Red)), rect); + else if (LimDn) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.Blue)), rect); + else g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, 150, 150, 150)), rect); + + //해다 영역에 사선으로그림을 그린다. + var baseSize = (downDirection == false ? rect.Width : rect.Height); + var lineterm = baseSize / divCount; + var skew = baseSize * 0.01f; + Pen p = new Pen(Color.FromArgb(alpha, 120, 120, 120), 2); + PointF pt1 = PointF.Empty; + PointF pt2 = PointF.Empty; + for (int i = 0; i < divCount; i++) + { + if (downDirection) + { + pt1 = new PointF(rect.Left, rect.Top + i * lineterm); + pt2 = new PointF(rect.Right, pt1.Y + skew); + } + else + { + pt1 = new PointF(rect.Left + i * lineterm, rect.Top); + pt2 = new PointF(pt1.X + skew, rect.Bottom); + } + g.DrawLine(p, pt1, pt2); + } + p.Dispose(); + + //limi이 걸려있다면 해당 영역에 적색으로 표시한다. + var limwidth = 30; + if (LimUp) + { + RectangleF rectlu; + if (downDirection) rectlu = new RectangleF(rect.Left, rect.Top, rect.Width, limwidth); + else rectlu = new RectangleF(rect.Right - limwidth, rect.Top, limwidth, rect.Height); + + g.FillRectangle(Brushes.Red, rectlu.Left, rectlu.Top, rectlu.Width, rectlu.Height); + } + + if (LimDn) + { + RectangleF rectlu; + if (downDirection) rectlu = new RectangleF(rect.Left, rect.Bottom - limwidth, rect.Width, limwidth); + else rectlu = new RectangleF(rect.Left, rect.Top, limwidth, rect.Height); + + g.FillRectangle(Brushes.Red, rectlu.Left, rectlu.Top, rectlu.Width, rectlu.Height); + } + //전체 테두리 + g.DrawRectangle(new Pen(Color.FromArgb(alpha, Color.Gray)), rect.Left, rect.Top, rect.Width, rect.Height); + } + + Boolean NeedHomeSet() + { + return arConn_MOT && (this.arMOT_HSet[0] == false || this.arMOT_HSet[1] == false || this.arMOT_HSet[2] == false || this.arMOT_HSet[3] == false || this.arMOT_HSet[4] == false); + } + + byte errstep = 0; + bool errstepR = true; + void Draw_Error(Graphics g) + { + //디자인 모드에서는 표시하지 않는다 200714 + if (DesignMode == true) return; + + if (arConn_DIO && this.arDI_Emergency == true) ShowPopupMessage(g, "EMERGENCY BUTTON", "Check emergency stop\nEMERGENCY or POWER LOSS", Properties.Resources.error, true); + else if (this.arDI_SaftyOk == false) ShowPopupMessage(g, "SAFTY SENSOR", "Check safety sensor", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_Alm[0] == true) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER motor alarm occurred", Properties.Resources.error, true); + else if (arConn_MOT && this.arMOT_Alm[1] == true) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT motor alarm occurred", Properties.Resources.error, true); + else if (arConn_MOT && this.arMOT_Alm[2] == true) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR motor alarm occurred", Properties.Resources.error, true); + + else if (arConn_MOT && this.arMOT_SVOn[0] == false) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER\nSERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[1] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-PICKER\nSERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[2] == false) ShowPopupMessage(g, "SERVO ALARM", "L-PRINT-Y\nSERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[3] == false) ShowPopupMessage(g, "SERVO ALARM", "L-PRINT-Z\nSERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[4] == false) ShowPopupMessage(g, "SERVO ALARM", "R-PRINT-Y\nSERVO-OFF", Properties.Resources.alert, true); + + else if (arConn_DIO && this.arAIRDetect == false) ShowPopupMessage(g, "AIR DETECT", "*Press the blue AIR button on the front to supply AIR\n* Check the AIR line", Properties.Resources.error, true); + + else if (arConn_MOT && (this.arMOT_HSet[0] == false || this.arMOT_HSet[1] == false || this.arMOT_HSet[2] == false)) + { + //안전오류도 표시해줘야한다 + var SaftyMessage = string.Empty; + if (arVar_Port[0].SaftyErr == true) SaftyMessage += "DOOR:LEFT"; + if (arVar_Port[1].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "DOOR:CENTER"; + if (arVar_Port[2].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "DOOR:RIGHT"; + + if (arPickerSafeZone == false) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "\n" : string.Empty) + "Picker safety position: OFF"; + else SaftyMessage += "Picker safety position: ON"; ; + + ShowPopupMessage(g, "SYSTEM NOT READY", "Initialization required\n" + SaftyMessage, Properties.Resources.error, true); + } + else if (arConn_MOT && this.arMOT_HSet[0] == false) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER home search required", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_HSet[1] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT home search required", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_HSet[2] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR home search required", Properties.Resources.alert, true); + + else if (arVar_Port[0].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "FRONT-LEFT", Properties.Resources.alert, true); + else if (arVar_Port[1].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "FRONT-RIGHT", Properties.Resources.alert, true); + } + + + void Draw_Menu(Graphics g) + { + if (arMenus == null || arMenus.Length < 1) { this.HasPopupMenu = false; return; } + else HasPopupMenu = true; + + ShowMaskLayer(g, Color.FromArgb(250, Color.Black)); + var item = this.arMenus.Last();//.Peek(); + //이 메뉴를 표시 합니다. + + PopupMenuRequireInput = item.RequireInput; + + var buttonSpace = 10; + var hSpace = 5; + var vSpace = 10; + var iconSize = 80; + var menuheight = 64; + var padding = 10; + var msgW = 900;// (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f); + var msgH = 400; + var rect = new RectangleF( + rect_main.Left + (rect_main.Width - msgW) / 2.0f, + rect_main.Top + (rect_main.Height - msgH) / 2.0f, + msgW, msgH); + + Rectangle rectT = Rectangle.Empty; //title + Rectangle rectI = Rectangle.Empty; //icon + Rectangle rectC = Rectangle.Empty; //content + Rectangle rectB = Rectangle.Empty; //button + + rectT = new Rectangle((int)rect.Left + padding, (int)rect.Top + padding, (int)rect.Width - (padding * 2), (int)(rect.Height * 0.1)); + rectI = new Rectangle((int)rect.Left + padding + 10, (int)rectT.Bottom + vSpace, iconSize, iconSize); //icon size + rectB = new Rectangle((int)(rect.Left + padding * 2), (int)(rect.Bottom - menuheight - padding), (int)rect.Width - (padding * 4), menuheight); + rectC = new Rectangle((int)rectI.Right + 20 + hSpace * 2, (int)rectT.Bottom + 10 + vSpace, + (int)(rect.Width - hSpace - (padding * 2) - rectI.Width), + (int)(rect.Height - rectT.Height - rectB.Height - (padding * 2) - vSpace * 2)); + + g.FillRectangle(new SolidBrush(Color.FromArgb(220, item.BackColor)), rect); + + //제목줄 표시 + using (LinearGradientBrush sb = new LinearGradientBrush(rectT, + Color.FromArgb(160, 160, 160), + Color.FromArgb(180, 180, 180), + LinearGradientMode.Vertical)) + { + g.FillRectangle(sb, rectT); + } + + + g.DrawString(item.Title, item.Font, new SolidBrush(item.ForeColor), rectT, sfCenter); + + //버튼표시 + if (item.buttons != null && item.buttons.Length > 0) + { + //현재 버튼 영역의 갯수가 다르면 다시 생성한다. + if (menuButtons.Count != item.buttons.Length) + { + + menuButtons = new List(); + foreach (var bt in item.buttons) + menuButtons.Add(bt); + + g.DrawString("!!", this.Font, Brushes.Red, rectB.Left + 10, rectB.Top + 10); + } + else + { + for (int i = 0; i < menuButtons.Count; i++) + menuButtons[i] = item.buttons[i]; + } + + g.DrawString(item.buttons.Length.ToString() + "/" + menuButtons.Count.ToString(), this.Font, Brushes.Red, rectB); + var butidx = 0; + var butwid = (rectB.Width - (item.buttons.Length - 1) * buttonSpace) / item.buttons.Length; + foreach (var but in item.buttons) + { + but.menutag = item.Tag; + but.Rect = new Rectangle(rectB.Left + butwid * butidx + buttonSpace * butidx, rectB.Top, butwid, rectB.Height); + g.FillRectangle(new SolidBrush(but.BackColor), but.Rect); + g.DrawRectangle(new Pen(but.BorderColor, but.BorderSize), but.Rect); + g.DrawString(but.Text, item.Font, new SolidBrush(but.ForeColor), but.Rect, sfCenter); + butidx++; + } + } + else menuButtons.Clear(); + + //아이콘 영역에 그림표시 + if (rectI.IsEmpty == false) + { + g.DrawImage(Properties.Resources.info, rectI); + } + + //본문데이터표시 + if (string.IsNullOrEmpty(item.Text) == false) //contec + { + g.DrawString(item.Text, item.Font, new SolidBrush(item.ForeColor), rectC); + } + + g.DrawRectangle(new Pen(Color.FromArgb(180, 180, 180), 10) { Alignment = PenAlignment.Center }, rect.Left, rect.Top, rect.Width, rect.Height); + } + + void ShowMaskLayer(Graphics g, Color maskColor) + { + g.FillRectangle(new SolidBrush(maskColor), this.DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width, DisplayRectangle.Height); + + } + + public Font MessageBody { get; set; } = new Font("Tahoma", 20, FontStyle.Bold); + public Font MessageTitle { get; set; } = new Font("Tahoma", 10, FontStyle.Bold); + + void ShowPopupMessage(Graphics g, string title, string msg, Image icon, Boolean isError) + { + if (isError == false) + { + //팝업표시할때마다 배경 마스킹을 한다 + + var maskColor = Color.FromArgb(50, Color.Gray); + ShowMaskLayer(g, maskColor); + + var msgW = (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f); + var msgH = 105; + var rect = new RectangleF( + rect_main.Left + (rect_main.Width - msgW) / 2.0f, + rect_main.Top + (rect_main.Height - msgH) / 2.0f, + msgW, msgH); + + var TitleHeight = 25; + var rectT = new Rectangle((int)rect.Left, (int)rect.Bottom - TitleHeight, (int)rect.Width, TitleHeight); + var rectI = new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height - rectT.Height); + + //g.FillRectangle(new SolidBrush(Color.FromArgb(220, Color.Black)), rect); + g.FillRectangle(new SolidBrush(Color.FromArgb(120, Color.White)), rect); + + var rectTL = new RectangleF(rectT.Left, rectT.Top, rectT.Width / 2.0f, rectT.Height); + var rectTR = new RectangleF(rectTL.Right, rectT.Top, rectTL.Width, rectTL.Height); + using (var sb = new LinearGradientBrush(rectT, Color.Transparent, Color.White, LinearGradientMode.Horizontal)) + g.FillRectangle(sb, rectTL); + using (var sb = new LinearGradientBrush(rectT, Color.White, Color.Transparent, LinearGradientMode.Horizontal)) + g.FillRectangle(sb, rectTR); + + //g.DrawImage(icon, + // (int)(rect.Left + 20), + // (int)(rect.Top + (rect.Height - icon.Height) / 2.0f)); + + g.DrawString(title, MessageTitle, Color.Black, rectT, ContentAlignment.MiddleCenter); + g.DrawString(msg, MessageBody, Color.White, rectI, ContentAlignment.MiddleCenter, Color.FromArgb(24, 24, 24)); + + if (errstep % 5 == 0) errstepR = !errstepR; + + if (errstepR) + g.DrawRectangle(new Pen(Color.Gold, 2), rect.Left, rect.Top, rect.Width, rect.Height); + else + g.DrawRectangle(new Pen(Color.White, 2), rect.Left, rect.Top, rect.Width, rect.Height); + + if (errstep < 255) errstep += 1; + else errstep = 0; + } + else + { + //팝업표시할때마다 배경 마스킹을 한다 + var maskColor = Color.FromArgb(253, 15, 15, 15); + ShowMaskLayer(g, maskColor); + + var msgW = (int)(this.rect_main.Width * 0.8f);// 640;// (int)(rect_main.Width * 0.7f); + var msgH = (int)(this.rect_main.Height * 0.8f);// + var rect = new RectangleF( + rect_main.Left + (rect_main.Width - msgW) / 2.0f, + rect_main.Top + (rect_main.Height - msgH) / 2.0f, + msgW, msgH); + + var rectT = new Rectangle((int)rect.Left, (int)rect.Bottom - 200, (int)rect.Width, 200); + var rectI = new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height - rectT.Height); + + //g.FillRectangle(new SolidBrush(Color.FromArgb(220, Color.Black)), rect); + g.FillRectangle(new SolidBrush(Color.FromArgb(253, Color.Black)), rect); + + g.DrawImage(icon, + (int)(rectI.Left + rectI.Width / 2.0f) - 40, + (int)(rectI.Top + rectI.Height / 2.0f) + 10); + + g.DrawString(msg, MessageBody, Brushes.Gold, rectT, sfCenter); + + if (errstep % 5 == 0) errstepR = !errstepR; + + if (errstepR) + g.DrawRectangle(new Pen(Color.Red, 10), rect.Left, rect.Top, rect.Width, rect.Height); + else + g.DrawRectangle(new Pen(Color.Gold, 10), rect.Left, rect.Top, rect.Width, rect.Height); + + if (errstep < 255) errstep += 1; + else errstep = 0; + } + } + + void Draw_Port(Graphics g) + { + var fSizeCnt = 20; + var convmode = VAR.BOOL?[eVarBool.Use_Conveyor] ?? false; + using (Font fCnt = new Font("consolas", fSizeCnt, FontStyle.Bold)) + { + using (Font fMSg = new Font("Tahoma", 15, FontStyle.Bold)) + { + if (convmode) + this.arVar_Port[0].DisplayConv(g, fCnt, fMSg, arMagnet0, arFGVision0RDY, arFGVision0END, arPortLItemOn, arMotILockVS0, arCountV0, CVLeftBusy, CVLeftReady); + else + this.arVar_Port[0].Display(g, fCnt, fMSg, arMagnet0, arFGVision0RDY, arFGVision0END, arPortLItemOn, arMotILockVS0, arCountV0); + + this.arVar_Port[1].Display(g, fCnt, fMSg, arMagnet1, arFGVision1RDY, arFGVision1END, false, arMotILockVS1, arCountV1); + + if (convmode) + this.arVar_Port[2].DisplayConv(g, fCnt, fMSg, arMagnet2, arFGVision2RDY, arFGVision2END, arPortRItemOn, arMotILockVS2, arCountV2, CVRightBusy, CVRightReady); + else + this.arVar_Port[2].Display(g, fCnt, fMSg, arMagnet2, arFGVision2RDY, arFGVision2END, arPortRItemOn, arMotILockVS2, arCountV2); + } + } + } + + + + + private void Tm_Tick(object sender, EventArgs e) + { + + if (ConveyorRunPoint < (AnimationStepConv - 3)) ConveyorRunPoint += 1; + else ConveyorRunPoint = 1; + + for (int i = 0; i < 3; i++) + { + + if (this.arVar_Port[i].arrowIndex < (arVar_Port[i].AnimationStepPort - 3)) this.arVar_Port[i].arrowIndex += 1; + else this.arVar_Port[i].arrowIndex = 1; + } + this.Invalidate(); + } + + } +} diff --git a/Handler/Sub/UIControl/Loader/Draw_PickerPrinter.cs b/Handler/Sub/UIControl/Loader/Draw_PickerPrinter.cs new file mode 100644 index 0000000..9d951a6 --- /dev/null +++ b/Handler/Sub/UIControl/Loader/Draw_PickerPrinter.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Windows.Forms; + + +namespace UIControl +{ + public partial class HMI + { + void Draw_PickerPrinter(Graphics g, RectangleF rect, + int motAxisY, int motAxisZ, bool reverse, + Boolean LockY, Boolean LockZ, Boolean ItemOn, Boolean ItemPickOK, + Boolean CylFW, Boolean CylBW) + { + //실제 로봇의 길이를 입력한다 (단위:mm) + var RealLenY = 400; + var RealLenZ = 250; + + g.FillRectangle(Brushes.DimGray, rect); + if (LockY) g.DrawRect(rect, Color.Blue, 5); + else g.DrawRect(rect, Color.White); + + var PXName = motAxisY == 2 ? arMotPosNameLM : arMotPosNameRM; + g.DrawString(PXName, this.arFont_MotPosName, Brushes.Black, rect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center, FormatFlags = StringFormatFlags.DirectionVertical }); + + var RPosY = this.arMotorPosition[motAxisY]; + var RPosZ = this.arMotorPosition[motAxisZ]; + //RPosY = 0; + //RPosZ = 300; + + //모터의 실제 위치에 뭉치를 그린다. + + var PosY = (float)(rect.Top + (rect.Height - (rect.Height * RPosY / RealLenY))); + + //Y뭉치를 그린다 + var rectYP = new RectangleF(rect.X - 1, PosY - (rect.Width / 2.0f), rect.Width + 2, rect.Width); + g.FillRectangle(Brushes.Yellow, rectYP); + g.DrawRect(rectYP, Color.Black, 2); + //g.DrawLine(Pens.Red, rect.X - 30, PosY, rect.Right + 130, PosY); + + + //Z축을 그린다. + RectangleF rectZ = RectangleF.Empty; + var zwidth = 60; + if (reverse) rectZ = new RectangleF(rect.X - zwidth, PosY - 10, zwidth, 20); + else rectZ = new RectangleF(rect.Right, PosY - 10, zwidth, 20); + + float PosZ = 0f; + if (reverse) PosZ = (float)(rectZ.Left + rectZ.Width - (rectZ.Width * RPosZ / RealLenZ)); + else PosZ = (float)(rectZ.Left + rectZ.Width * RPosZ / RealLenZ); + + g.FillRectangle(Brushes.DimGray, rectZ); + if (LockZ) g.DrawRect(rectZ, Color.Blue, 5); + else g.DrawRect(rectZ, Color.White); + + //z축 포지션 이름 + var ZposName = motAxisZ == 3 ? arMotPosNameLZ : arMotPosNameRZ; + g.DrawString(ZposName, this.arFont_MotPosName, Brushes.Black, rectZ, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + + //var CylStr = string.Format("FW:{0},BW:{1}", CylFW, CylBW); + //if (CylFW == true && CylFW != CylBW) CylStr = "FW"; + //else if (CylBW == true && CylFW != CylBW) CylStr = "BW"; + //g.DrawString(CylStr, this.arFont_MotPosName, Brushes.Red, rectZ.Left, rectZ.Top - 20); + + //Z뭉치를 그린다 + var rectZP = new RectangleF(PosZ - (rectZ.Height / 2.0f), rectZ.Y - 1, rectZ.Height, rectZ.Height + 2); + if (ItemOn) + { + g.FillRectangle(Brushes.Lime, rectZP); + g.DrawRect(rectZP, Color.Black, 2); + + + } + else + { + g.FillRectangle(Brushes.SkyBlue, rectZP); + g.DrawRect(rectZP, Color.Black, 2); + } + using (Font f = new Font("Consolas", 10, FontStyle.Bold)) + g.DrawString((ItemPickOK ? "O" : "X"), f, Brushes.Black, rectZP, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center + }); + + //g.DrawLine(Pens.Blue, PosZ, rectZ.Top - 30, PosZ, rectZ.Bottom + 100); + + } + } +} diff --git a/Handler/Sub/UIControl/Loader/Draw_PickerY.cs b/Handler/Sub/UIControl/Loader/Draw_PickerY.cs new file mode 100644 index 0000000..19a1a84 --- /dev/null +++ b/Handler/Sub/UIControl/Loader/Draw_PickerY.cs @@ -0,0 +1,237 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Windows.Forms; + + +namespace UIControl +{ + public partial class HMI + { + void Draw_PickerY(Graphics g, RectangleF rect) + { + + //return; + + //전체영역의 80% 영역에 Y-로봇의 축을 그린다. + //var motorMax = 400; //전체 가동 길이 400mm + var cx = rect_main.Left + rect_main.Width / 2.0f; + var cy = rect_main.Top + rect_main.Height * 0.2f;// / 2.0f - 200; + + + //모터길이가 설정되지않았따면 600으로 설정한다 + if (this.arMotorLengthY == 0) this.arMotorLengthY = 600; + var motYPosX = rect.Left + (rect.Width * ((arMotorPosition[0] + 1) / (this.arMotorLengthY * 1.0f))); + + + + //g.DrawString(arMotorPositionYP.ToString() + "/" + motYPosX.ToString(), this.Font, Brushes.Red, 100, 100); + + //Y축 모터의 현재위치를 표시한다 + g.DrawLine(new Pen(Color.SteelBlue, 10), (float)motYPosX, rect.Top, (float)motYPosX, rect.Bottom); + + g.DrawLine(new Pen(Color.Black, 1), (float)motYPosX, rect.Top - 5, (float)motYPosX, rect.Bottom + 5); + + //Y축 모터의 영역을 표시한다. + // g.DrawRect(rect_picker, Color.White, 3); + + if(arPickerSafeZone) g.FillRectangle(Brushes.Lime, rect_picker); + else g.FillRectangle(Brushes.DimGray, rect_picker); + g.DrawString(arMotPosNamePX, arFont_MotPosName, Brushes.Gray, rect_picker, new StringFormat + { + Alignment = StringAlignment.Near, + LineAlignment = StringAlignment.Center + }); + if (arMotILockPKX) g.DrawRect(rect_picker, Color.Blue, 5); + else g.DrawRect(rect_picker, Color.FromArgb(50, 50, 50), 3); + + //중앙에 Safty Zone 글자 표시함 + if(arPickerSafeZone) + { + g.DrawString("PICKER X - SAFETY ZONE", new Font("Consolas",12, FontStyle.Bold), Brushes.Black, rect_picker, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center + }); + } + + + //Z축 모터의 영역 계산 + var motZLPosX = motYPosX; + // var motZRPosX = motYPosX + CvtMMtoPX_W(motZSpaceMM / 2, 0); + var motZPosY = rect.Top - CvtMMtoPX_H(50, 0); //Y축하단에서 50mm 아래에 Z축을 표시한다. + var motZHMm = 300; + var motZhPx = CvtMMtoPX_H(motZHMm, 0); // + var motZwPx = rect.Height; + rect_zlaxis = new RectangleF((float)(motZLPosX - motZwPx / 2.0), (float)motZPosY, motZwPx, (float)motZhPx); + // rect_zraxis = new RectangleF((float)(motZRPosX - motZwPx / 2.0), (float)motZPosY, motZwPx, (float)motZhPx); + + //현재위치를 표시하는 영역생성 + var zlSize = g.MeasureString("UNKNOWN", this.Font); + var zrSize = g.MeasureString("UNKNOWN", this.Font); + var zSizeW = Math.Max(zlSize.Width, zrSize.Width); + var zSizeH = Math.Max(zlSize.Height, zrSize.Height); + var rect_zlposname = new RectangleF( + rect_zlaxis.Left + (rect_zlaxis.Width - zSizeW) / 2.0f, + rect_zlaxis.Top - zSizeH + 5, + zSizeW, + zSizeH); + + + g.FillRectangle(Brushes.DimGray, rect_zlaxis); + + + //테두리 + if (arMotILockPKZ == true) g.DrawRect(rect_zlaxis, Color.Blue, 5); + else g.DrawRect(rect_zlaxis, Color.DimGray, 3); + + + + g.FillRectangle(Brushes.DimGray, rect_zlposname); + + if (arMotILockPKZ == true) g.DrawRect(rect_zlposname, Color.Blue, 5); + else g.DrawRect(rect_zlposname, Color.DimGray, 3); + + + //피커Z축위치 표시 + g.DrawString(arMotPosNamePZ, arFont_MotPosName, Brushes.Gray, rect_zlposname, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center + }); + + + //중심점 센서 확인 + g.DrawLine(new Pen(Color.Black, 1), (float)motZLPosX, rect.Top - 5, (float)motZLPosX, rect.Bottom + 5); + + //Z축 모터위치와 길이확인 + if (this.arMotorLengthZL == 0) this.arMotorLengthZL = 600; + var motZLosY = rect_zlaxis.Top + (rect_zlaxis.Height * ((arMotorPosition[1] + 1) / (this.arMotorLengthZL * 1.0f))); + + //상(Rear), 하(Front)로 영역을 그린다 + var port_width = rect_picker_left.Width;// * 3f; + var port_height = rect_picker_left.Height; // rect.Height * 0.2f; + + //New Front Position + var newYF = (float)(motZLPosX - port_width / 2.0); + if (newYF != rect_picker_left.X) + { + var offset = newYF - rect_picker_left.X; + this.rect_picker_left.Offset(offset, 0); //좌표가 변경되었다면 재계산 + this.rect_picker_front_vac1.Offset(offset, 0); + this.rect_picker_front_vac2.Offset(offset, 0); + this.rect_picker_front_vac3.Offset(offset, 0); + this.rect_picker_front_vac4.Offset(offset, 0); + } + if (motZLosY != rect_picker_left.Y) + { + var offset = (float)(motZLosY - rect_picker_left.Y); + this.rect_picker_left.Offset(0, offset); //좌표가 변경되었다면 재계산 + this.rect_picker_front_vac1.Offset(0, offset); + this.rect_picker_front_vac2.Offset(0, offset); + this.rect_picker_front_vac3.Offset(0, offset); + this.rect_picker_front_vac4.Offset(0, offset); + } + + //피커 #1 Circle 색상 + var Bg1 = Color.FromArgb(100, 100, 100); + var Bg2 = Color.FromArgb(160, 160, 160); + if (this.arVar_Picker[0].Overload) + { + Bg1 = Color.Tomato; + Bg2 = Color.Red; + } + else + { + if (this.arVar_Picker[0].ItemOn) + { + + //if (this.arVar_Picker[0].isReelDetect) + //{ + Bg1 = Color.Lime; //.FromArgb(100, 100, 100); + Bg2 = Color.Green;//.FromArgb(160, 160, 160); + //} + //else + //{ + // Bg1 = Color.Magenta; //.FromArgb(100, 100, 100); + // Bg2 = Color.DarkMagenta;//.FromArgb(160, 160, 160); + //} + + } + else + { + Bg1 = Color.FromArgb(100, 100, 100); + Bg2 = Color.FromArgb(160, 160, 160); + } + } + + + using (var br = new LinearGradientBrush(rect_picker_left, Bg1, Bg2, LinearGradientMode.Vertical)) + { + g.FillEllipse(br, rect_picker_left); + } + + //피커 #2 Circle 색상 + if (this.arVar_Picker[1].Overload) + { + Bg1 = Color.Tomato; + Bg2 = Color.Red; + } + else + { + if (this.arVar_Picker[1].ItemOn) + { + //실제 아이템 체크 + + if (this.arVar_Picker[1].isReelDetect) + { + Bg1 = Color.Lime; //.FromArgb(100, 100, 100); + Bg2 = Color.Green;//.FromArgb(160, 160, 160); + } + else + { + Bg1 = Color.Magenta; //.FromArgb(100, 100, 100); + Bg2 = Color.DarkMagenta;//.FromArgb(160, 160, 160); + } + } + else + { + Bg1 = Color.FromArgb(100, 100, 100); + Bg2 = Color.FromArgb(160, 160, 160); + } + } + + + //피커 테두리 + using (var bgPen = new Pen(Color.Black, 3)) + { + var posT = arMotorPosition[6]; + g.DrawEllipse(bgPen, rect_picker_left); + g.DrawString(posT.ToString("N0"), this.Font, Brushes.Black, rect_picker_left,new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + //피커 내부의 진공 표현 + g.FillEllipse((this.arVar_Picker[0].VacOutput[0] ? brVacOn : brVacOff), rect_picker_front_vac1); + g.FillEllipse((this.arVar_Picker[0].VacOutput[1] ? brVacOn : brVacOff), rect_picker_front_vac2); + g.FillEllipse((this.arVar_Picker[0].VacOutput[2] ? brVacOn : brVacOff), rect_picker_front_vac3); + g.FillEllipse((this.arVar_Picker[0].VacOutput[3] ? brVacOn : brVacOff), rect_picker_front_vac4); + + //피커설명 표시 + if (arVar_Picker[0].Overload) + g.DrawString("OVL", arFont_picker, Brushes.Black, rect_picker_left, sfCenter); + else + g.DrawString(this.arVar_Picker[0].PortPos, arFont_picker, Brushes.Black, rect_picker_left, sfCenter); + + //피커 진공표시 테두리 (진공출력상태에 따라서 색상을 달리 함) + g.DrawEllipse((this.arVar_Picker[0].VacOutput[0] ? penVacOn : penVacOff), rect_picker_front_vac1); + g.DrawEllipse((this.arVar_Picker[0].VacOutput[1] ? penVacOn : penVacOff), rect_picker_front_vac2); + g.DrawEllipse((this.arVar_Picker[0].VacOutput[2] ? penVacOn : penVacOff), rect_picker_front_vac3); + g.DrawEllipse((this.arVar_Picker[0].VacOutput[3] ? penVacOn : penVacOff), rect_picker_front_vac4); + + } + } +} diff --git a/Handler/Sub/UIControl/PrintDirection.Designer.cs b/Handler/Sub/UIControl/PrintDirection.Designer.cs new file mode 100644 index 0000000..01e8149 --- /dev/null +++ b/Handler/Sub/UIControl/PrintDirection.Designer.cs @@ -0,0 +1,37 @@ +namespace UIControl +{ + partial class PrintDirection + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/Handler/Sub/UIControl/PrintDirection.cs b/Handler/Sub/UIControl/PrintDirection.cs new file mode 100644 index 0000000..ef5fadf --- /dev/null +++ b/Handler/Sub/UIControl/PrintDirection.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class PrintDirection : UserControl + { + public PrintDirection() + { + InitializeComponent(); + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.ContainerControl, false); + this.SetStyle(ControlStyles.Selectable, true); + this.Resize += Loader_Resize; + BorderColor = Color.Black; + } + [DisplayName("AR_TITLEFONT")] + public Font TitleFont { get; set; } + Boolean bRemake = true; + void Loader_Resize(object sender, EventArgs e) + { + if (this.Width < 16) this.Width = 16; + if (this.Height < 16) this.Height = 16; + bRemake = true; + } + public Color BorderColor { get; set; } + + List rects = new List(); + [DisplayName("AR_COLORS")] + public Color[] colors { get; set; } + [DisplayName("AR_TITLES")] + public string[] titles { get; set; } + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var disprect = new Rectangle(DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); ; + if (bRemake) + { + rects.Clear(); + var w = (disprect.Width - 2) / 3f; + var h = (disprect.Height - 2) / 3f; + for (int i = 2; i >= 0; i--) + { + for (int j = 0; j < 3; j++) + { + var rect = new RectangleF(j * w + 2, i * h + 2, w - 2, h - 2); + rects.Add(rect); + } + } + } + for (int i = 0; i < rects.Count; i++) + { + var item = this.rects[i]; + + if (this.colors != null && i < this.colors.Length) + { + var color = this.colors[i]; + if (color != Color.Transparent) + e.Graphics.FillRectangle(new SolidBrush(color), item); + } + + + //테두리 그리기 + if (BorderColor != Color.Transparent) + e.Graphics.DrawRect(item, BorderColor, 1); + + if (this.titles != null && i < this.titles.Length) + { + var title = this.titles[i]; + if (string.IsNullOrEmpty(title) == false) + { + using (var br = new SolidBrush(this.ForeColor)) + { + if (i == 4 && TitleFont != null) + e.Graphics.DrawString(title, this.TitleFont, br, rects[i], new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + else + e.Graphics.DrawString(title, this.Font, br, rects[i], new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + } + + } + } + + + + //전체외곽 + //e.Graphics.DrawRect(disprect, Color.Black, 1); + } + public void SetColor(int idx, Color color) + { + this.colors[idx] = color; + } + } +} diff --git a/Handler/Sub/UIControl/Properties/AssemblyInfo.cs b/Handler/Sub/UIControl/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..44193bf --- /dev/null +++ b/Handler/Sub/UIControl/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("CapCleaningControl")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CapCleaningControl")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("9264cd2e-7cf8-4237-a69f-dcda984e0613")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/Sub/UIControl/Properties/Resources.Designer.cs b/Handler/Sub/UIControl/Properties/Resources.Designer.cs new file mode 100644 index 0000000..a366221 --- /dev/null +++ b/Handler/Sub/UIControl/Properties/Resources.Designer.cs @@ -0,0 +1,243 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace UIControl.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UIControl.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap air { + get { + object obj = ResourceManager.GetObject("air", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap alert { + get { + object obj = ResourceManager.GetObject("alert", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap bcd { + get { + object obj = ResourceManager.GetObject("bcd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap bg_blue { + get { + object obj = ResourceManager.GetObject("bg_blue", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap bg_red { + get { + object obj = ResourceManager.GetObject("bg_red", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap debug { + get { + object obj = ResourceManager.GetObject("debug", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap debug40 { + get { + object obj = ResourceManager.GetObject("debug40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap emg { + get { + object obj = ResourceManager.GetObject("emg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap erase { + get { + object obj = ResourceManager.GetObject("erase", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap error { + get { + object obj = ResourceManager.GetObject("error", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap help { + get { + object obj = ResourceManager.GetObject("help", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_pause_button_30 { + get { + object obj = ResourceManager.GetObject("icons8_pause_button_30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap info { + get { + object obj = ResourceManager.GetObject("info", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap mot { + get { + object obj = ResourceManager.GetObject("mot", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap plc { + get { + object obj = ResourceManager.GetObject("plc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap reel_big { + get { + object obj = ResourceManager.GetObject("reel_big", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap reel_small { + get { + object obj = ResourceManager.GetObject("reel_small", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap safty { + get { + object obj = ResourceManager.GetObject("safty", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Handler/Sub/UIControl/Properties/Resources.resx b/Handler/Sub/UIControl/Properties/Resources.resx new file mode 100644 index 0000000..da63550 --- /dev/null +++ b/Handler/Sub/UIControl/Properties/Resources.resx @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABXRJREFUWEft + WHlM22UYxmMeMWo8ojPxH2E6l02dqPFWsrgZ2WaWsbiLjcTEOc8tGq9t0f3hkajTMGJBEDY2GFA3xmCj + COUqpXd/pa1dyzoJjGsgx2DGxOn4fN7m/fWADtNC2WL2JE8gv/f73vf5rvd7v8ZdxqUGu91+h9VqXQQu + t1gsiS6X6xo2XVxAzFK9RdLnqN1iR0WbeL+sQ3xZeVKUNTnOwqYA7+KmMwulUnkVgud8W+UVD+cMi3sU + ZydwZWGvqGh2jpjN5sXcbeaApcx9p/RUWGHBXPDjiChudJ2TJOlJ7hp7YOZWfK3yhghZU9wrdle3itxa + t/gUS/147pDftjB7WNTpbW1er/dadhFbNJkk60MIKgsgsZjRDCxlvMPhuAUDWNJokNzJ+/v8bWhvwr6R + XcQOQogrihpc5+XAqw/0CgjazWY/jEbjbapmx8AcxaivXWLOEAksZ3NsYbRIVWklXWJ5wWmham7p1ul0 + t7IpBBD0xYrC0/5ZrNbbO9kUW2i12hsRfDsJAOP58wTA9vbGkm6/wHLMKJsuDWDpC5/OG/SJS8gcFdiX + LjZdfGD2krPV7jF59l7c1097VcHm6EGbGyfyFXBTNKRlhZADWTWesfnIgbLADKQg5MJHOUx0MBgMd6u0 + 9sF3SzvEpoNdUZEOz3N7BvzCiGuLeygN7eMw0QMjfy81aFNPB0mc1mST6GBxmOiB5Vm182hb2ECRkA7E + S/v7haKmdQyDzp8WcQRKwnD4TWWzva9cax+NhkebnYNNRpsTS5oBX4ns+n8OjHYlcpTjcJOjZyZYq7d1 + aAwSwlpzwWVYuStZykSYTKbZRSiH5mYFUsJMMAF3dNLe332Vj8Zo80DHUywpFLRPvlKdDOtkpkiFREGD + 62/M5nqWFUB9ff3VWF7zB2XtYfNaLEi5cilKMTrtssh78X9+3fF/kEmSWFoAEHkdDCkYQdjbIQZ8C/xO + pXMMrC7q9Yt8MPuMwP5s9xe2ELV4XMdJifZrwAtWL5ECN9dNBqPl2Hokc1kkF7YbaO/totdXakmPWIcG + /8UNuGHoDZJZ4xF6s6WarkWOMyXguXqDWt/SNTeLC9ufhqmoqIgr0zj+kFVHykU4fRVax9CUL38GBO2g + N43sv1LnHIjDwbA/EfSwiZSJeGqq8RBCNX09x4kaWNJVVKDIvpWaX89Rcp6nN1vVuJ66wyXT8SzTOvqy + 1Z6xpKBKhU4kRv8xxwkBvq9D4HJwJ/6fxZ/DAvY3X/05UKTg0T/KpsgARwlqg/3UApw2cnQ/9o3OLJnY + 7AcG/+wP1R7xANptPthJg8hkU1gYTJKW9h75pL1oNEl6NkUOBNuSpgyM9ojWOcImP6hNanGgTUbNiTHM + 5Fo2hwDfP/wsqIKiNwz6f8Lm8ECDRLXB9ptS4/oL/6cH35WYnc9Tgl5qlTp7H5v8wLU1P682UO7TNapQ + t46hby5sz0NUPPwuMVkspZRJ4jlhU+I+1OT8ExniTnYVHhqjZKJfA6jT1sMdNCIlnCbh75YC3NvyW/cR + XFEIUsHdQoD2379xqNPXTmYyakSarfTqE74fmigbBNvpXsYgtrKLC6NOL7nuCyoelhX0ie3lbeJ17Ce6 + kuTvVNxCSAp3CwEGM0tntvyyeZzIcIwHt8E/+uRw98mBhmm7qry+juEcEmmZkQVqqMjlbhNAIsF0Ov0v + 5IfOFpH8v4zHf2G9kwqFbZP5mgDavLnYR8/wu1bmPLzUPjrSLgxmqRHBb+bmkwL7biH85VXqHGeyaty+ + F15OrUeodC39NACIm8NNIwMcPwYHymNae/+eOrcobDh+HoWmHQ5fo98HuVlEgM/ZEEuH5Hb+ND2gh8+M + /Xx2GVNGXNy/B7Gt3iRjVn4AAAAASUVORK5CYII= + + + + + ..\Resources\icons8-automatic-gearbox-warning-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAsxJREFUWEft + ll1IU1EcwBdGBUFvPfRUD0VBjaAeerCHCMyHHkrXsZwhohOE2q6F835s0jUlg6h7J2rp7hJsICzQHiJI + LGePfdFLDyVEEEG9SEEguez0P/Nfzu3cfRjn+rIf/OAw/uec38O2e11lypQpEcWMBRXTWgSpQ75X++9u + x+sLo5rWC84hYo3EavD6wihmdIJ7iFgJXl8Y1Yz1cQ4QbfGBcsTycg4QbfGBmjG8g3OAaIsPZMAv+Tnn + EGHKkegpvLo45EjMzztIgClwRu+Pb8Ori6PjxthW2Pgl46D/tvPmCJWuD9C27lu0OdxHz3depWcv6efw + ytJRjFgD76JCdvXfXhoY6aWDd0K0vaeXNso9tK49TM8EtBw9kjaE160N+AO9ApcuZUegC7IZfaUY1his + ZdmwTirG6C76aPfmxeSB8VTSTb9NHaKh7jZuHNMT0N7hVWtHNaxKNWINQcQ92bTCqhGtDUZG95BEogJH + cqAJUpGadU+zyPmpw7Q52MENZNZeCO3Ebc7yc8a9DwJ/s8j4YB03jkkktQW3OA/EvWGBrxPHuXHoOI47 + D8RNssC5B5W8sGUl9SuMblje4TC/Zt0N8F18+SxePceNQ2v88kHcsj5AxLXsqExJIHQZR9cHiPicHbVK + SXuIo+sDRKRyolb7/Ziub8Rx54EAH/gxIyhHj6QewfH8VHlb3zLZ+oTXp1d5fbS6vnU/k63ZZytzPrpi + S/qVKb2u991n60yamvQt8OQY5sUx4f9QwdH8iApksEiImc+OWzb0GMfyIzKQATHTuXFpfxBd34Rj9ogO + JH5tkhOXlkihozhmj+hACElmh2XYhWP2OBD4IStqRUl9gmP2iAwkUngvNwwlAe0pjtojNDCgSbywv8J3 + 8CKO2iMyEB5pjbwwNEEIsX0J/ofIQPY4gxD24sCeKgvgJ3DC066expEyZcqUhsv1B6iAtIhPh2shAAAA + AElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t + nL1uE0EUhS0QvBDvYCcVCHAQeRoXId4N1IBrRyClSiSwgR7vFoCgQHZkp4wpDUqo+Bnm7M5AFM1aa07n + OUf6uvG17ifvrKvTUBRFUZan3fl8vdnN7rXS/FkrySetJDu3mDXD7mR3K3bMtrCzW59Lq5vf2UhGJ5e+ + LAZmG2l222lYPe2Dg6utNHvkB24/+WR2h3PT//DdHB3/NIPZ77UCO2E37Ihd/d72x/Ow0zFXnJb68fI2 + 93KTvPliBtPwF68jL6e/TPf1vNgdDpppvue01AseWy+vN/oa/JIY6I0WFySObjk9y4PL0995xS8vMDgm + dl/N/eM8rfViKd629gO4B/BTDg2NCTjYfvyxvA+7o7bTVJ1mkj3HYZgPDYyRneGpE5jtO03VsQePcXjf + vpFCw2Kk//7cPcb5xGmqjj14hsOHkx/BYTFyZF2UArMzp6k67mBwUMx4L05TdSQwjASSSCCJBJJIIIkE + kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkE + kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCDJKgKL0gkU + LYQGxcjh+G/pxDenqTr2kGpPLrFa7UnZn2ceDE+Dw2JkZ1AW7zSTrO80Vcce3MJh1B2p+qmsfrrvqp+a + aX7XaaoOCrbs4Rk+gAq40NCYQJ8gXFimN3rvrjlNy4PmRnyorL9bBAfHwNO3C7OZlvV39v676fTUC5ob + vUQUkcX0OL+wu+KX909eljot9YPaSzQ3ugHFnYgWM7yR1rFXCzthN7w8/Z3n5f1XBagPmhvtkOmFgbFg + d17xsa0KLk+UD6I/zw4eW4o/22sGdhpjR7xta78wFEVRok2j8Qfk0Qty9BRILAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t + nMFOE1EYhRuMvozLtok+gxq1UMDAri7EXaXs2WkpbO3MGiyKb6EriVsD9g68AwFcSa73n/mnMeROM8PZ + zT0n+XZ37uT/OnOnq9NgGIZh5ufh0a8H7ShZaUXJxHHaisyVw9YMN5PMlkzaY7MsM+v4WFrj6aLb/OzW + zUIgaUfTjmqonu6Rved+id18w5W9b/ZwMLRnvZ79s/bS2tUntUJmktlkRpk1n7sZTUeNbbugWsonl/f4 + 46n9+u69vVl96r1xHbl59cx+2fyQzp6JTHZUS7noa5tucPym771JCBxv9GcSm3HyQvXMjxye7oL0zJMn + z7dxSHzeHGZPYWxMqQ9L9rXNzjx5lH2bhoQ4WN77rk+h6aqm4rTi6aEslsPUt2GIfBqMMoGROVBNxXEL + f8vic/dF8m0WIknvdfYau/+Jqqk4buGlLL6u4V+Vu3K93lGB5lI1FUcXejcKmdyLaioOBfqhQBAKBKFA + EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFA + EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKki + MCudWO94NwqRq7XFXOCFaiqOW8Tak1tUrD2RjkBjJ4Md72Yhsr+1mz+B+6qpOFI+KIul7ojVT1n1U1er + nxxLqqk4Wj6WyAVSAefbNCSkAiuVFxvTjH/eV03zI82NclFaf7cRbv3dj7d9+2icdwia56qnXKS5MZco + FXAhvc5/3azy5M3kxclQtVTItl2Q5ka1n56J0mImX6Q69mrJTDLbwdbo/zMvk3eXCtA80two7/9sw1DI + Zq722hZFDk8pH5T+PLfpiSP9s10zZKYTnXGp9AeDYRgm2DQa/wBGopc1FSaqkQAAAABJRU5ErkJggg== + + + + ..\Resources\icons8-bug-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-bug-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABOJJREFUWEft + WOtvFFUUb6Ifff8HRv8AE9xZmqJsd0ZgW0BCWWp4tDxcKIK8FFsSEx/VAlXjB1NrNWpCMUSiSLR0i00w + EEHlIeq3on4UE40K2Z2ZfR/PuXvnzr0z03Vf9VNP8ktn5575nd/ce+fcc9oyb/NWwf6Khe8yDa0zHdX6 + zaj2Nv79iMCv+2mMfLj7/2MQidye0sNPpPXQl2ldKyDgP5BHTKX0UDfE47dxmrkxFLYmpWu/egRUDVPX + fkkZodWcrnl2a2nrfSjsVFBQgrkyClZvHOydW8HevQ3sJ9fjPT3Ql4BcJ28uWnQvp2/MbkVaHwyaNbMr + Brk3DkPxi9MAV34EuPqTD8WpafQZBqt7ufIse97Qfr4ZXfAAD1OfkTgk+10hXhGF/OgIwKVrgaICgS+Q + f2c0aFZv1C2SL6syc3ZiA5TOnlcCFz49CdlDg2DvSoC1uRusresgs7cPskMv4+xOKEJL575Gjo2yQDaT + /0QeuoeHrd6C9pzVuxbgm8ssWOHoUbA2rlHGg2BtWA2Fj0+4Qi99z16Atkh26CXmY+qhT3jY6iwV1eLe + QA7s3QnIDOwLHKuEzMFnAC7/IESWzl+A/IcfiHH8wlfx8JWtnOekpTXCYO/YLIgagf10golzZlMWiLhe + VZ4sJ+HyQ7SEtMeIzFq3SiarHfiiucOvKF+8RyBgjlzLZcxudEKwL3XkLYUs9+ZrClmtMDseZdsjO/gi + 5N8bg+LnE5B/d8zrl+Qygu1vY8Hd6FQwOxezPVOaPisEls5dgPSSVi9hs5H/s63tTi7Hb+zglx4onp4q + i5v+Cq+TYO/pk8nmBGb04RiX47e0ERoQjsvb3eV9/Uj5XsdihaxhLGtjqSsde8S9Z2gHuBy/pQxt1HGk + hOsIpPNVEDQJdt8mscetHjefmnp4hMvxGzocEwS4oYXALesFQbNgbep2+Z/aIo2Fx7kcv6FDoECaTZeg + OVAEYhXkjlUQKC+xrSxxQiJoDljS5vzVLzGW6cLxcV0Q5IaHBEGzkKWkTfy4DynvirFo+Fkux29me7hD + JqF6jkjoNJHvNwPFz04xbqp41LHQMi7Hb9TgoBP1EMyZik1nFmnPuCSNgZbU4c0NH5LHchUTNRnmoTOC + CCthJxUUxsdlooZAXEwgFg5m11JpLDzJZcxu1H3JZPmxUfG29ZRZXmSf7xd8VJnLY1TmcRmzG5U8VOU6 + D9GJIqrob6+wBCuT1gKWnL+7yrjobPe0ADNVt6UpI9wlPQj2th63B8EAmef2ysR+yEcXBytYHQ78a2/v + UcbN9oUrefjqjFpDmYCOO+ftCbSPgkp+M96Jdd774jedtWrJfw0y+3epzxjaCR62eqO+VV5qgr29V22a + EJl9O9xAWKYVJ6ewnL9YbkknJhVfWlbvzCFmqMzjYWszagmR4IZMaK6IuG0n9hiU0NnYYwuhcPy4IkgA + fekZavBlLsx5v9lLtPt5uPqMRHpnkkDpITOwX/zOHNijisL0VJxMQu7Iq7jsMeVZjpmGxTlGfSu1hgFB + FNBXWkyeYQIpnQT5EGjP1b2slYxaQwxw3RtQAS519oWD2PMOBo3P1Py11mqUq6j7wmBJhDgWfcAujl/n + 6ISgJDzn/37zGp2b1ENQmU5lEoqhevIYu8Z7dPD/EYncwd3nbd781tLyLxOgcrDBNHH8AAAAAElFTkSu + QmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK + YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJrSURBVEhLvdZd + b9JQGAdwEr3wTm9M/AheqJlfxWSfQudMBnYaWarQ8WIyMBlUWoSp0CkzawWM6C5G0aiZzhfoMCZidIu6 + bG5DL8yc0mMPO8cwOIUyWv/J/6aF55eekifYzMogHT424AqdoGl6H7pkfSgvn/bzYu36XVmlfNHNU3Tk + MLplXRwe7mn0zqw6pyyCuYUlIL+sgLPe6O+BS+xx9BHzA1GGnVLThTJ4UvxUh2ELrypg2BezBseomFeA + JCsg84iMn2FCfegrvacZxW3BtWMf9se2TMH10B14aSdO+a719uSdUFxTcaMorg7e3bHbPZH0yBVBlfIl + IqLX7OMyeNbwzvPz74HDw//UlsxeNFo/rnCSCgnZqjNwE9x6ME8E2jXThN+QCurgxXA/Gk8OROPizFr1 + lwreLa2CnnFtyVzmp2unGfYIIlrTiP7YAvX+wx/uAtfeOZeaUbWjTiOiNe6Q4Elm5Y3vCGxs5es6GNHw + yfvPiQCp4mwJXAgmVDvD3UZEa9qhuBgXci+IUGNNQ3GN4KajuO1wQyjDCkPNPySjJeEQdWqow8uJiGiN + wx8/FJyQlneD4kLcObaNG0Jhzvu5PuGevEoa2E3fLq7Un9wZTKpDTCSLxuunP5XaM8pOvi5/XK6RBhot + PLHxRKZq9/ASGt05lDey380KpTeVz39IQzt1Y7OmLYfcmms8cRKNNJ46HhaUbvGeUByMFytfDOGmoDhG + cVNRnE44RKNTuW+mojh0IH6AhFuK4kCcCQsLxQ/b+H9Bcc6Nxg66rwqKtsfXAxPTK3C9olvWB/5Hosbi + R+F6RZd6jM32F+J393EUKic/AAAAAElFTkSuQmCC + + + + ..\Resources\icons8-hazard-warning-flasher-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-help-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK + YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKmSURBVEhL1ZfL + bxJRFMbrwvj4a4wLXdRUXZo4vGkxtDst0MQFGKMwMB1eKdVNI9CdaNQmxkWtIQyvqRTqprU8VpZuNLFt + FOq0tbpo7ALvCbch0gsZ4Frjl3wJmTnn/HIvl3MPff+F9NZXZxi7cFnBCka1K3lf7Uzcg88KNjZwhc+c + xmH0pOFSar17Pmfwvd0YCxertsjavmPmUw1se1zeh2cGf2Z90D2fVXMJJU7rXhoucVXPi2vm6dKe/021 + 9jC+29YQYw4X9/QesazhkwO4TGfSuUXXSCD3zfe6QoS0s3euUhtGuTo+5cDl5EnHi89NofzuA2GHWFiO + IdcULOwg+FNctr104ym/JVz6QSrWjS2hwne09RwuT5aajV8yBhalXlbabKhlDOQkrSt2EWOaVTuhd6dX + fTIOUaf2z1VrWj79ARgY1pDKmVTBd0JKfLn0s3aoz9LBkffw7FAQ2/webArmtxln8jrGNTToSb9rtVoa + YPh16N1iFuPqYvjoWYN/YZOUAKYBBhu8C5t/dDhoeZbpkkQKBtMCm0NFSWEX+jEWTrNgvBMpH5CCwbTA + tsjqL4aN3cBY1BpRl7K/+EgMBtMC21FvR33fhbHQk5Pj9pljAqNFYmx9q2EbSMFgWmArYihZYQhj/+Hh + unZbODXky2yQgsG0wAZvZn10dOUkxtaF2mXubzcQHZ/OYFxD0DLNocI2KYkG2PSoRcsEocu/4Jn9Skzs + xZ7ZL9AuVzDmqDQuod84kduifS0OT2SrKjZ6AWPIQrPS2K2p9y1PeKe+ObUsabi4CZdvL3R3PqM1+mh5 + 8QkuK09aLn13ZLKHYW9ycUvrTltxuc7EOKLnUfIyGlkrssfbYL6KBrwllSN2DpfpXjCkyx3olVySwWn0 + dOx/Yeirr+83SXRvTbd4pKkAAAAASUVORK5CYII= + + + + ..\Resources\icons8-info-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABF1JREFUWEft + Vt1PU2ccZtebu5gXy7Ys2TJ3vf9id5rtZhdeumQxQbaQQQnooAWhxZaPtpSV0p5+QG0nLT0gVaHGQqQF + lkgUK6UyQJSYbZmaqVkCi5ydp/m97Hh62h5LSxazJ3mSk/M+z+/39LwffateOySCX22lr317rxTCS2Uq + h3Ss+o+d9T6hFMJLZSqH/wPuF//pgDVnLJ/09bU/dwx2PyuF8KIGlSsvTp2xftxs9qdH40sCP5MqiZH4 + baHFHMjUt9k/pbLlQTnCMZY9ZDnDMZYtZCXCMe47ZCXDMZYc8iDCMb5yyIMMx6g6JM6oZvP5ZRiUCknJ + jSWeGRyRVTU0cRcfFKuJcfQueE42mrw31YT7MXj1UZ3e2UG2oqAfnlYTEhnIlovmXv+MklFK6/Dkb/Ud + Tg1ZVANL54fe4ksHGciSi3qD2x2O31I0gl3c+P269oHjJH9lFAuJ9w0GzkXyXJxq6z/mjszuyI2R6ZSg + t4+u1bcNfE7SklEoJMdf/7tGZztK0lyc0HQeOufk78mNLZZApqbV/hnJ9g2syRZxTcr7oDcykEwZzRZ/ + Um4UN4SHhssG1JT3EUMnaDg/Gjpdgcj0y7tNKeCggW8K2q9tXnDMbBQiNNCSbQ/ygOjZcI7z03B+fNfa + f9w7nnwhNcsD9mgDH0U8iY1f7jwV1JD3JDZt2qEjZM9CHtA7lnxRq+0vvgG/1na/Y3Jf3JKa5QHdXdHp + zNKTvQCrqafC8o3Hwu2FR1niGe/Y+F1R6zZGp4Uq4Q0qkRPQxI1vVTf2HabhwtBZAj9LzdKAg/rI9wvx + jb9Y8yUx0NzUQ+FSMCWEXfPbIJ7xDmGZDh54qUxOQK01sEBDxdFgdId5yTpkAbtPez8Ic7NrrOni7O/C + ZGh519cbW7ad5Y8a63xvgnbx2WeeSk+G0rvQMD28qIFa0oA4xhqNnhG8V4XaVvvJoej8rjwgZ4zGVmhq + 8eUQzmO6wmVNCuCMV7xToZVdaOGBFzUwJg04HJ0Xas86TmZNavBNU897vZ7or9KAg+189dzV9edohPWF + KcSXI0teiJqVudhD0fNnNiRqoJY0YI/Y64TG+j5Z1EFnDS6yAho9FxxxzqyiAYhNgHWGaSV5Xgy0hb64 + /FNKuHPj302FWqjJ6uusgUWSq0edwTXCrktave/+ys3Hew0wZSHn3LZNe+EtkudFp8Z1SNTuSDdM5tYT + oUXve8DqoxfJS4PbOHFZIeCOmoCWmuG3lQK6TdEJkuwfvU3n31WaYuxWkuSFQxf+UmmKUZMk5YHiJhGP + EhrOiyFLLKO0SWi4vJAeM5gynHM4Smg4B+6uS/5YnmOmIlA6qHHO4Uv2d4wdw5oEMa0+cyyDcPkO6opB + 8a9OnEKss1FufhvEM96xLwfK/+oqCs40EcdOZM2xvrAJMO0gntmaA3FZEKf2pctCRWE7HfiQ9ybXWYBi + 5D3JTVzRyH4wwCU0zF1f472J1UKERunC+pqgquofdvoa6+LDQkwAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAnhJREFUWEft + ls1rE1EUxd/eP0BcigvBpS5sQcVdFEVTUFuoOi1pG8ViotSkBGea1tSQzJBObEhSMOmHMYm2JqmlWgNq + IoiLdiXBD1zozmVx6cJc33u+DIozNZ1JYsU58CMhN/eew7tvYJApU1tZMIe2wRSaw6w1lDh6jj/3Mhv9 + ghgaxMOgKcRQidnoFx7iVR3eGCrMRr/++YDvvAgWL6pTvorgW0y9j9H8gPJpBMEObT6Oq/cxmh/wlQvB + LKdO/gKCrxH1PoZ5B41iBjSKGdAoZkCjmAGNYgY0yv8RcOu98vd6pT0cL+0juH3uA6/Du5ffT+5800je + yrtWs+KxrrOeiR3Mtn71jYY+9fAitIpeQfrACVI3s/+zAsl7n8dvp6EV8JEZ6B+TqzSsII6xCBur8Oxl + BQPzKyVw+SQYuMaDP5YA8tvPTM5mwe4SwDnih9TSk19qm+lN5pbBKcbIaVbP82I7i6EtPIAG7By4DPst + JxW8oahicGsmC20Wq1KzdHIwXywp9c32JguP2cqlaRZDW3hIJfWwSJs5hwvuLK7AoRNn4JTtkmJidwu0 + Hs88gCteP/0uT6dpTW+v/Ua4ygniKouhLTykQlbUfrQDjnfbwBMIQ9sRK5wbHFJMHCM36WBiUDutqUyO + 1vT0xtM5sI2GyF18wWJoCw+hKx72TyirOGztUgIQyJ0jqyE1Qv/QdaWmpzeSKbAnWvSxGNrCQ2hAQnJh + CUKJFGQfPVUMaiwUyyAn72Lz/G81Qj298XSehvtxetJ6n0fezmJoa1hOfHEGo9BsHIFoba3k4Vjv4YMH + WYSNhf98HzettQRBLJO11nVypkz9FSH0HdsLU8gVsNwDAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAADlRJREFUeF7t + XOlzFMcV96dcH5L8BTm+53alkg+5/oNUkvJ3V0VoDyGMsGFXO7urlbQ6kXbn2FurvXQghGStThsMso2N + IWAS4jJg7LKNMT6CQRDQEYOh079mZMFs7zkzwgev6le1pZnu9/qpu9/Rr+eRh/SQvr5U74t/x+oM/sni + DFhtLjnU4A0dafAo521u+ZJVkFYszeJnAH7jb3hmp+/g3fpm0bKlOfBH9KF29/WgOqH/txZBbKeK+LfF + JX7a5I9f84gjK10DeSIOHyCxiRfJwNTLJD17jGQXjjPgN/6GZ3gH73rE4ZWm9vg19GHzKKfq3VIbVepv + VDZfLapzKz+2CHIrnUUfbmuNXm+LjN+UR58jmbl/kKFnXtUF9IG+2sLjNxt9kRt2t/KB1SX56Mz+kcr+ + y0t1TulRm0d+lipu1SvvWYuMP89VgpEIjy+SFnlszeqW1+weeaHeFfyVKs6Xh6A4q1t50e5Rlulyu23E + TKsW4NmTnL5D981V+g88bHX2/1IV74tLj/uC37e5pSQVeKV3cPZ2bv44d3CbCcjQm5q5Q/dJzMpEvaP7 + e6q4XyyyCeJjVHlXPeLoanrmGHcwDxKpmaPEHRyhs1G6ahXEv6liP3h63Of7lk2QB7Z6Q8vhvebvcXoR + HlskW73hFTudjY2N8jfVYTwYgnWly+INZ192OT33xZt1xZCibpGjN7NKjczZB2atLY7+n9sEaal7IP9Z + boEvKFDqmdkoJ1dXIn/L6pau1LnEn6nD2hxCBECVdyOQW7jDE24d0sh+8mRnnDnCvOdmAjzBOzj0LPf5 + OjAGui/esDjEP6jDM5egPLpsV+C88gQCBqePEG8wSzy7Q0ROREhnbB/3PTPRQXlKlLe3L8RkSeZf4b4H + YCwYk+lKrHcEfkqn/HV55ABXEACzrrFFJk9PJ8itT3Lk6oUs2eaTSw7AaIAXeII3ZJjMJ5hMUgm5lT0H + CWbiFlfwF+pwjSUYDOx5pZZtd3KK7OoMkXfPpAlZGvocGIBPGeG2MQPgNTmVuE+Gd8+kyK4OhfQM5rlt + AIwNe6LhhkV1Vc7BYPAYI+CH0L7+MLn2fvY+wYG1j3OkqU1hyQBeeyMBHuAFnlo5MCNb+kOkjcqamz/B + bQ/DYndLZwx1cRBdOHrSK3yrdoK0SDnSF4lwhV7HwecGiDuQ4rQ3Fu7+NDl08P7Zdy/+958cCcQjTGbI + rm2PMTp3Z1ZsHimuDl8fIcJo8IZWivl57eExEohFyGef8AVeB/YiZ1eI7TW8fowA+gYP8OLJsA7I2h+N + UNn3cPuBn9hAne0tzsBfVDXURmpse7VYhNERnyStgRD7r/IE1eLE0STZ1RWnbfnLRw8wcxzdcfLq0UEu + by2wWloCYdJFx8DrLzR2iBoVeUlX7Gx3K0mPNLrKYyAO76cGQyH/5ex5xXDnyhDxi2HSn10o6E8v0Gdb + MMJ48HjzgP16Jx1DMLef26cQHF21CUpUVUd1VOeUHqXxIjcxkJp+hWxvC5HzGmtbCd58LUWa2sMsS6Lt + t1bAiO3wh8kbpyqbfffivbNpOhaFjUnbLxIQyGXW5NpQ5b3Um5otcFmwVIT+DJmeLb5Rl4MYj5Z0J6pF + TzJPneYol1clyM8kiNCX4oZ+PcmZ2za38ryqlsoIyUe6fFeznFnSl56j+164rNEohQ/fypBtrQoxIgGB + PtAX+uTxqgQYC1ywvvR8Qf9YKXavsoIVqaqnPDV4lWe7B6ZvazuDQpvo0sW05wlSDTIjMeKPjd/Xfy3w + R8dJZjTG5VENsB1hW+JNmi7q/9o9yryqntLEIg667nlpeOpIk9Bg7UvlXmADZyHe1JECPpUCMTf6WHqv + ckNWCkoyhmOAAj7QBc5Y/i70/VBVU3HC6RkOgHidPNEaIu+fq32paDE1HSc+ufYQr0UaJlN0/+L1XQs+ + eDNDnvAp3NNC6MTqkjyqmooTnX0f8E7P8J+JZvQvlXuhJ8QrFbLpQSRFZ+Fg4SyEL0yNyUVVTXzCoTfO + bbWNgV1dsZrchHI4dJCGeDT84vEsBVjNxUMD3D714My/UsTZA2f/fn6w0Ftbwje2OMVfq+oqJKsr6G8L + 77upbRyfPEx2tCvk9mU+Uz2ABXR2KUQZrTzEQ8gGJ75cyFYL4Ig/6VfYmLV8W5XxT6mOfKq6CgnlFrxE + KZKTE5r0kJE4eSxJdlYc4p1gIdvJY8avhnWMT8ZZmKrljTyo3R06qarrfkKRDupMeBvoUx2Rghyfkbgb + 4kUqCvHwDt6tJmSrFu+cTtMxRwt4Qzesnqcp8G1VbRuEKikU+mgbDdIQp8Ej0eVr/HK5F2+/nmYhXpQa + sPbIGN1zo4wvgN/+8BiJTrxAl1eYvPWaef9MANuK3S2ysWv10dSeuMZN/aPEDFVS2gaB3DOkU4lwGRmJ + W5eGiNCrkO2tMpmbT5ALb6RZlge4QB13/O0J+sxN3zFj79OiQ44QkXMg5Q6OLG9pFreoatsgqyCFUTam + bdARmyBPU3+Nx8QoQHn9UTr70qWTsngWSYVJIFY+56cXk3m6D8YK90Gqozt2ISSpatsgFDfyDl1axCw5 + fiTJZWIUhvdGSYwqr5J9De9E02GyZ58xEVExHHs5SceeKdAH6hO3epXDqto2yOZV3uM5tA7qE507leIy + MQIXz9EN2y9V5RCvfpRlbRA58J4bgbPUH3T0JAr0Edv3AqHeyruq2jbIJsiXB/IvFzRArkxPpqMc9k7E + yDzd33jPSmF2Lk7GaVveMyOAMSO5oNXHAI3dabR2SVXbBqEOGWcB2gawgviP85gYgZY+mbxPDQbvWSnA + sPj6Ze4zI7DyUY6NXasPJFmtbvmGqrYNQjE3MrvaBtTvIfXNQdNgE4IVn6ncCyx5uBq8Po2CVRAL9IH8 + INXJLVVtG1RMgWajwVvd/rcOtOHNELNRVIHFlrDZ2NkZYT4fT0mlgKTuTupg8/o0E0WXcDEjYjYQYczW + cL4yMxMn7WH9Ge1qUdSI2D2h85tReqFFfOJw1Xk9GDVELLyMidko6sbAkYaTyGtkNlAhoCSjFTvS8kCU + xcu8vsyGOLSf70hTixPuTuZLFkyaBRgv1+5BpsRSLhOe4R0XjiCLFAeZjaKhXLFkwmYhQ63bU9SgNLWK + zEmGkYB7g6WN3/gbniG1lp17MMoDiiYTUHna5E8UpLM2Cz2DM+y8GQ4yIgw4yY1ekQG/xydjLOzzS2HS + myo8s9gsbPfHr9U1B36vqm2DSiVUzQYMCVJVH79dPmT85B2cnMlsM+f1ZSZKJlRBNq9yqlTtsxmAUE91 + RsnRlyrP+Bx/ZZDs8Ee4x49mAtkqaoFfVdVVSLiGipuUvMZmAZWtg0PVJwWStE1raPPKhgFfCIdKUouq + rkLCfVtcGeU1NgO4goCCyFpCORgYV0/IlFI5HtaPNcvWyODweDOupSbzR+i+p7Dib56CKgGsM/pAdMDj + YSTCexeJ3aNcUNVUnHBZmVfaYSRyCyeIs2eAHNiv/6j0wP4Blvg02y/0SqNrlmbRraqpOKHEv1hxkVHA + OUt/rLLIoxzQB+oNO+PmXeaBLqxuaa3eIf1AVVNpogp8pntgmnulQS9Qe7yjTa6qNLgcrl/MscoJswrY + uxJTKG+bU9VTnlDSWqzAUg+QCkKaHPUnPEXoAc5tcPwwOH2Uy7tWQAdUeStVfzqAKvBFGh0UFFnWClgx + TyBjaonIvqk4K1QCL54MtaA7OY0S30OqWionlPliL8Ss4XVcLVAyhlDNzPNcVE+wUI9TnlYLUHiOQvua + r8PaBCnuFod1JxiqCdX0wshQTwiOrFoFJayqo3rCJRN20WZskcugEtQSqumFEaHe3Ys20lKjT/6uqo7a + yNIc/CuuPdV6XtIq01Bt2NzSEB4QHrbWeEMUd2Nwvc3iCPxZVYM+srrlRPHLhsWhJ1TTi1pDPYzRsTu7 + TP2+iDp8/YSrn3aPdBZXQXlMeTAiVNOLWkK9zvjULWo4Xn/M5/uGOnxjCBGKVZAv0/9oWdfGyFBNL6oJ + 9QJZ9v2EyxVHHNUSjZN/YhWk61KZnKE/NkncvSFTaqqrBWSALJCJJ+s6UKNNlXcDXyNRh2sOoTqT7okl + PzqBT9U1706SDuqTIQ3PG9hmAHda4Be6qCyQiScrgNpnjInOvN+pwzSXcB0CM7EvM1fiFO8E2Z2eI9vp + HgQrfOW8eQVKWlw+n2FWGLwhQynj159ZuI2xcM85zCR455TxFRiWUgLi+y347AlzbjMxVsDNG7QRePt0 + il0GguHAzYJSfiBkhsHAnoetSR3W5tLd1Jd0xtGbWS7nJ2Iw3ck8c6qbe8JkZjbBTuD0pLTQFpYWV2+b + u0NkJ+0bN6rKOdDw8xy96VWbRz5tmsGolODiWF1yDB8fg/fOE1iLyN5FdssShUUI8YLxKJmeuXtdH7MI + X9dY+TDHFATgN/6GSn68k6fvBuMxss0nsQIj9IUPL/J4aQEZG7zKql1Qooa7KnoIH2iwueUlfGKumgQE + blyiXMIfmyA+KUtcvQmW8mpskYjFFWT1ifiNv+GZT86yd9Gmmo/5IDEgBBDbykuGRRhGE4udPVIUWRzc + 9DY6n1gLIANSUsiqILrQHdtuBiEhaxPkRSo0PgF6S09QXyvYnnv3ojRdrvLipn+hzQhSM9vz1Mda88h7 + 1sz+QCMsK07PcACEM4wGtzJrumO8GYSb3pZm0Ust9kWcrbYqe2/CeTViZqIPVAzg0Bt94+jR6gp6Hrh1 + NYtw3xan+zav8k9WZ9KeuCYER7DU736Ie98LLGqAW4SyNwC/2Ye46TMYD+p7EiE4vIxCH/SBG5R0y/DW + VfNhiK8CoUgHoaHFGaxHzV2DN/RSg0d5hxqhS1TJn38K3iKIy/gbnqG4Ee+iDaKHooU+D+khfQ3okUf+ + D1WHWk/swkxBAAAAAElFTkSuQmCC + + rell icon ( 80x80) + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABe5JREFUWEfd + mF1zE1UYxzOjd+r38AVH/TBcOIgX3sggQtJqgQIlpQn2vSSbwiabzW42zXvSNiUJjjJKodBC6oXjgKDA + ADpjWxTEGwWkx/Pf7gm7ydlkU+SGZ+Y3k9lznv95Nuftedb1wtqOfcH3uv3S8N4htXrwWGqpL5i5TLlp + cPngxNQS2tBnZ+/Eu4bb87WPeoZe8/ijg/snEstjavVBbG6RJE4ttwR9RtXqnwfGEsuegcjgTu/kq4bc + /2der/dlj0/y9wXTP0Vnz6/zAnGCNLuwTjWueXyRAWga8s9mu72BLXuHleVw8exj3qCbQSzMP+4ZVmvd + R8U3jWE2Z3v84of9ofxtrVrjDvQsQPNIKH+ryy99YAzXmXn8kT3Dcmm1Lli5RILxPBmX002DOQW+0IAW + ezYolVa7ByKfGsM6s939ke3D8txvTEQuLZCQqpK1Gyo5fVohkeKZ+gBOgQ98oRFSFF2TtQ1F59Yc/5NY + c5hW5ixR4VgqRh7f1Qi5lyBPftdIUNHq4k6BD3yhAS2ZakrF+Xp7fyh3yz0w+YYRBt+ws7Ah2JqLzi4Q + JRMj638kdGFGbVEhxzNf1cXbgb6XFlWLBjSVlKyPgT5apUawcVrubhwlbLdinUzSaf33rjU4xnE1ToWd + bJ6a3pengX8SSyde3ViTYn7+kXsgfMQIx2o4hHHOMeGAmiN3b/KFwfUfVCIky6ZA+AjJk+Rn2penAdZu + xEkgnq33p7fQVe5hjhuCHcLRmQUyV45xBc1Ek4plRzaCNvTh+ZoplRUc4rpPdOb8epc/ctQI66ntn5ha + ZsIBJUUervHFzKzQHRnUpi1BmUEb+vB8zfyzSjeemqr79Y5pNSOsDcPFj7sVjWr5IslMt39rxlReIbGT + S5bAgFJeIql8+1lgJGlfjA3fMbVyf9ch4W0jPExveJRd/MJUhdy52v6tGX/9qtF//OkaYuAZ2ng+PG5f + UYiQqui+sdIF0u2TvjDCc7n2jcQrTBh/deOx0o7sdJQE5Lh+XoKJaJz+ezK3rx0YUzBN894RtWyE53Id + HJ+6yBrklPO3BvduqyRXDJNHxkEO8DtbEPU2c992ROnYLA4a06IRnsvVF8hcYQ1arjPRwrRoCY6BZ8UZ + sel5KzA2iwNJrxEevUGE7HXW4Bckkp9RHaMm7YNQUyLXxw6/EKkH6BUy143wrAF2CtYcLzigpGNcHydY + AjRPcacEYhvT2RgcngnKFNfHCZYpNm+STpFmzpJYMmYJEr9lPRG4wPVxgmWT9JiOmc0wKqVIMnuC5It0 + zVHSOZGMRTef2ALLMdN1NDLipELjEc59Tc6dab55LiwoRMw6T8nM4KC23McfHwq+g9KQ17kVeCklbX8t + xlL0GqSD8XxbMaqU7+/oDWwxwtuwA+OJGq+zHVoVG0Qjf6/YH+xIAo7Jmt6Xp2FHU7IAQ1GNupXnwAOZ + Sqs8j3HzCs0bE/YZTyPSzPknbr/YnG4hSURRzXNqJFz4llROOc94ylWF+nzD1WqkL5C8uv2zkVeMsKzm + 8Yn9kcLZhzxHBlIiUVM6SijQFz4snbJDzJ951DUQ9hrhNBsKlp4htdaqUJ+QU+TBL/algB0badnTbKUR + FE2fDyqXtm7NvWSEwzd8jkDFzxOZpPnadxedT20j39cUqnGySRd4adm5yyu8boTR2ty+E9toMV0v3AFd + vDTr7SzH4wENaJm1h6TSqtsX2WYM78y6fOHdg9G5FSaCKQgliqRQotfamv3RYgdKzMqXKjmm5Ejc+ulj + xd3ppw9mbp+8DRW/eU1Ks+eIoGVIqqjqpUGrzYK2Oz+qet9QPE0rtnN1HbwwptXtE983htuc4XMEKn4U + 1UwcYEdOpqskSAeW0zTZzKokWVB08BuZOdqwbht3bzg//xAbwvGaa2cbHzAj/SiqUbeaB+sEHMI459x+ + 6XDb3boZw2GOU37/uFZDaejknpVLi/rd2juWqMH3uXwC5hkuc1yPPcNKBbkbEszDQuYGwG88Q5uHlo+f + HAq9Zbi9aOZy/Qe4xYHxvg6NpAAAAABJRU5ErkJggg== + + reel icon (40x40) + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAW9JREFUWEfl + 2E1qwlAUBeBndygvC9CdCHHcuIkWqp27DK3toLiIOrRkkno1B6TcJO/e95fSA2fiUfgwPogx/yLNYvGw + K4rqOJt9UPfWPtJr7Zw3BNlPpy+nsvw+V1VD/SrL+s3a1+zIxpjJBfJ8j0NPy2V9KIpNNmQfDs2GdMGh + yZESHJoMqcGh0ZE+ODQaMgQODY6U4BBuu28wpPSbQ7jtd72RmsuKcBtXNVL7m0O4ratipM+BQLitr85I + HxwV4bahDiJ9cVSE21zaiQyBoyLc5loWSTebdA/HfUBShNskJQuZWp4xx/n8nXujtAi3Sft5MbW8PwAc + 4yWm/zUt73ZIDtY+jeiQrNmTHALp004ckhM5iEPUyNWqqbfba9m9p844RIMkGCJBinGIFKkBqnGIBpkM + h8Q4OMFwSEhkcBwSAhkNh/ggo+MQDTIZDpEgk+MQF2Q2HNKHzI5DCDDaR8AIQeiml+6CqaN6iB43xvwA + iFk1KsvXeuAAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/Handler/Sub/UIControl/Resources/air.png b/Handler/Sub/UIControl/Resources/air.png new file mode 100644 index 0000000..d897308 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/air.png differ diff --git a/Handler/Sub/UIControl/Resources/bcd.png b/Handler/Sub/UIControl/Resources/bcd.png new file mode 100644 index 0000000..fc99058 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/bcd.png differ diff --git a/Handler/Sub/UIControl/Resources/bg_blue.png b/Handler/Sub/UIControl/Resources/bg_blue.png new file mode 100644 index 0000000..2ae2259 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/bg_blue.png differ diff --git a/Handler/Sub/UIControl/Resources/bg_red.png b/Handler/Sub/UIControl/Resources/bg_red.png new file mode 100644 index 0000000..981e312 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/bg_red.png differ diff --git a/Handler/Sub/UIControl/Resources/emg.png b/Handler/Sub/UIControl/Resources/emg.png new file mode 100644 index 0000000..9e5daee Binary files /dev/null and b/Handler/Sub/UIControl/Resources/emg.png differ diff --git a/Handler/Sub/UIControl/Resources/erase.png b/Handler/Sub/UIControl/Resources/erase.png new file mode 100644 index 0000000..e6f0f75 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/erase.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-assembly-machine-40.png b/Handler/Sub/UIControl/Resources/icons8-assembly-machine-40.png new file mode 100644 index 0000000..8c48dfe Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-assembly-machine-40.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-automatic-gearbox-warning-80.png b/Handler/Sub/UIControl/Resources/icons8-automatic-gearbox-warning-80.png new file mode 100644 index 0000000..2bd7235 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-automatic-gearbox-warning-80.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-barcode-reader-40.png b/Handler/Sub/UIControl/Resources/icons8-barcode-reader-40.png new file mode 100644 index 0000000..e0ba761 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-barcode-reader-40.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-bug-40.png b/Handler/Sub/UIControl/Resources/icons8-bug-40.png new file mode 100644 index 0000000..9efaccf Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-bug-40.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-bug-80.png b/Handler/Sub/UIControl/Resources/icons8-bug-80.png new file mode 100644 index 0000000..1c529aa Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-bug-80.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-code-30.png b/Handler/Sub/UIControl/Resources/icons8-code-30.png new file mode 100644 index 0000000..95f99b8 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-code-30.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-deployment-40.png b/Handler/Sub/UIControl/Resources/icons8-deployment-40.png new file mode 100644 index 0000000..db1b184 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-deployment-40.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-emergency-stop-button-40.png b/Handler/Sub/UIControl/Resources/icons8-emergency-stop-button-40.png new file mode 100644 index 0000000..1ee1522 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-emergency-stop-button-40.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-erase-30.png b/Handler/Sub/UIControl/Resources/icons8-erase-30.png new file mode 100644 index 0000000..d2224c9 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-erase-30.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-hazard-warning-flasher-80.png b/Handler/Sub/UIControl/Resources/icons8-hazard-warning-flasher-80.png new file mode 100644 index 0000000..1ae1ccf Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-hazard-warning-flasher-80.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-help-80.png b/Handler/Sub/UIControl/Resources/icons8-help-80.png new file mode 100644 index 0000000..04d5900 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-help-80.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-high-priority-40.png b/Handler/Sub/UIControl/Resources/icons8-high-priority-40.png new file mode 100644 index 0000000..ddc9455 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-high-priority-40.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-info-80.png b/Handler/Sub/UIControl/Resources/icons8-info-80.png new file mode 100644 index 0000000..7f5bd87 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-info-80.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-pause-button-30.png b/Handler/Sub/UIControl/Resources/icons8-pause-button-30.png new file mode 100644 index 0000000..3fa608c Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-pause-button-30.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-rounded-square-80.png b/Handler/Sub/UIControl/Resources/icons8-rounded-square-80.png new file mode 100644 index 0000000..db2b607 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-rounded-square-80.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-rounded-square-80_blue.png b/Handler/Sub/UIControl/Resources/icons8-rounded-square-80_blue.png new file mode 100644 index 0000000..768e3c9 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-rounded-square-80_blue.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-rounded-square-80_red.png b/Handler/Sub/UIControl/Resources/icons8-rounded-square-80_red.png new file mode 100644 index 0000000..2e5a27e Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-rounded-square-80_red.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-settings-30.png b/Handler/Sub/UIControl/Resources/icons8-settings-30.png new file mode 100644 index 0000000..ddef91d Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-settings-30.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8-start-30.png b/Handler/Sub/UIControl/Resources/icons8-start-30.png new file mode 100644 index 0000000..100219c Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8-start-30.png differ diff --git a/Handler/Sub/UIControl/Resources/icons8_pause_button_30.png b/Handler/Sub/UIControl/Resources/icons8_pause_button_30.png new file mode 100644 index 0000000..f6d30c6 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/icons8_pause_button_30.png differ diff --git a/Handler/Sub/UIControl/Resources/mot.png b/Handler/Sub/UIControl/Resources/mot.png new file mode 100644 index 0000000..3bb6ae9 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/mot.png differ diff --git a/Handler/Sub/UIControl/Resources/plc.png b/Handler/Sub/UIControl/Resources/plc.png new file mode 100644 index 0000000..1474662 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/plc.png differ diff --git a/Handler/Sub/UIControl/Resources/reel_big.png b/Handler/Sub/UIControl/Resources/reel_big.png new file mode 100644 index 0000000..2ddd859 Binary files /dev/null and b/Handler/Sub/UIControl/Resources/reel_big.png differ diff --git a/Handler/Sub/UIControl/Resources/reel_small.png b/Handler/Sub/UIControl/Resources/reel_small.png new file mode 100644 index 0000000..3049f6b Binary files /dev/null and b/Handler/Sub/UIControl/Resources/reel_small.png differ diff --git a/Handler/Sub/UIControl/Resources/safty.png b/Handler/Sub/UIControl/Resources/safty.png new file mode 100644 index 0000000..39b1abd Binary files /dev/null and b/Handler/Sub/UIControl/Resources/safty.png differ diff --git a/Handler/Sub/UIControl/UIControl.csproj b/Handler/Sub/UIControl/UIControl.csproj new file mode 100644 index 0000000..95acab4 --- /dev/null +++ b/Handler/Sub/UIControl/UIControl.csproj @@ -0,0 +1,214 @@ + + + + + Debug + AnyCPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613} + Library + UIControl + UIControl + v4.8 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AnyCPU + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + Component + + + Component + + + Form + + + fTestControl.cs + + + Component + + + Component + + + Component + + + UserControl + + + PrintDirection.cs + + + True + True + Resources.resx + + + + + + + + fTestControl.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {62370293-92aa-4b73-b61f-5c343eeb4ded} + arAjinextek_Union + + + {14e8c9a5-013e-49ba-b435-efefc77dd623} + CommData + + + {14e8c9a5-013e-49ba-b435-ffffff7dd623} + arCommUtil + + + {48654765-548d-42ed-9238-d65eb3bc99ad} + Setting + + + + \ No newline at end of file diff --git a/Handler/Sub/UIControl/Utility.cs b/Handler/Sub/UIControl/Utility.cs new file mode 100644 index 0000000..3764f23 --- /dev/null +++ b/Handler/Sub/UIControl/Utility.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public static class Utility + { + + public static Rectangle OffsetRect(this Rectangle rect, int x,int y) + { + var retval = new Rectangle(rect.X + x, rect.Y + y, rect.Width, rect.Height); + return retval; + } + + public static void DrawString(this Graphics g, + string msg, + Font font, + Color fcolor, + RectangleF rect, + ContentAlignment textalign = ContentAlignment.MiddleCenter, + Color? ShadowColor = null, + Brush BackBrush = null, + Pen BorderPen = null) + { + DrawString(g, msg, font, fcolor, rect.toRect(), textalign, ShadowColor, BackBrush, BorderPen); + } + + public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect) + { + g.DrawRectangle(pen, rect.Left, rect.Top, rect.Width, rect.Height); + } + + public static void DrawString(this Graphics g, + string msg, + Font font, + Color fcolor, + Rectangle rect, + ContentAlignment textalign = ContentAlignment.MiddleCenter, + Color? ShadowColor = null, + Brush BackBrush = null, + Pen BorderPen = null) + { + //배경색 지정되어 있다면 + if (BackBrush != null) g.FillRectangle(BackBrush, rect); + + //테두리 지정되어 있다면 + if (BorderPen != null) g.DrawRectangle(BorderPen, rect); + + //그립자가 지정되있다면 별도 처리를 한다 + if (ShadowColor != null && ShadowColor != Color.Transparent) + { + SizeF fsize; + var drawPT = GetTextPosition(g, msg, font, rect, textalign, out fsize); + + //그림자를 먼저 그린다 + g.DrawString(msg, font, new SolidBrush((Color)ShadowColor), drawPT.X + 1, drawPT.Y + 1); + g.DrawString(msg, font, new SolidBrush(fcolor), drawPT.X, drawPT.Y); + } + else + { + var sf = new StringFormat(); + + if (textalign == ContentAlignment.BottomCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; } + else if (textalign == ContentAlignment.BottomLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Near; } + else if (textalign == ContentAlignment.BottomRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Near; } + else if (textalign == ContentAlignment.MiddleCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; } + else if (textalign == ContentAlignment.MiddleLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; } + else if (textalign == ContentAlignment.MiddleRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Center; } + else if (textalign == ContentAlignment.TopCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Far; } + else if (textalign == ContentAlignment.TopLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Far; } + else if (textalign == ContentAlignment.TopRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Far; } + else { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; } + + + g.DrawString(msg, font, new SolidBrush(fcolor), rect, sf); + + sf.Dispose(); + } + } + + public static void DrawRect(this Graphics g, Rectangle rect, Color color, Color shadowColor, int pensize = 1) + { + //우측하단에 선을 그려준다. 일단은 검은색 + g.DrawLine(new Pen(shadowColor, pensize), rect.Left + 1, rect.Bottom + 1, rect.Right - 1, rect.Bottom + 1); + g.DrawLine(new Pen(shadowColor, pensize), rect.Right + 1, rect.Top + 1, rect.Right + 1, rect.Bottom - 1); + DrawRect(g, rect, color, pensize); + } + public static void DrawRect(this Graphics g, Rectangle rect, Color color, int pensize = 1) + { + g.DrawRectangle(new Pen(color, pensize), rect); + } + + public static void DrawRect(this Graphics g, RectangleF rect, Color color, int pensize = 1, Boolean shadow = false) + { + g.DrawRectangle(new Pen(color, pensize), rect.Left, rect.Top, rect.Width, rect.Height); + } + + /// + /// Rectangle 개체를 반환 합니다. 단순 float -> int 로 값을 변환 합니다. + /// + /// + /// + public static Rectangle toRect(this RectangleF rect) + { + return new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height); ; + } + + static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, System.Windows.Forms.Padding Padding, out SizeF fsize) + { + float x = 0; + float y = 0; + fsize = g.MeasureString(data, f); + if (align == ContentAlignment.MiddleCenter) + { + x = (rect.Width - fsize.Width) / 2 + Padding.Left - Padding.Right; + y = (rect.Height - fsize.Height) / 2 + Padding.Top - Padding.Bottom; + } + else if (align == ContentAlignment.MiddleLeft) + { + x = Padding.Left; + y = (rect.Height - fsize.Height) / 2; + } + else if (align == ContentAlignment.MiddleRight) + { + x = rect.Width - fsize.Width - Padding.Right; + y = (rect.Height - fsize.Height) / 2; + } + else if (align == ContentAlignment.BottomLeft) + { + x = Padding.Left; + y = rect.Height - fsize.Height - Padding.Bottom; + } + else if (align == ContentAlignment.BottomRight) + { + x = rect.Width - fsize.Width - Padding.Right; + y = rect.Height - fsize.Height - Padding.Bottom; + } + else if (align == ContentAlignment.BottomCenter) + { + x = (rect.Width - fsize.Width) / 2; + y = rect.Height - fsize.Height - Padding.Bottom; + } + else if (align == ContentAlignment.TopLeft) + { + x = Padding.Left; + y = Padding.Top; + } + else if (align == ContentAlignment.TopRight) + { + x = rect.Width - fsize.Width - Padding.Right; + y = Padding.Top; + } + else if (align == ContentAlignment.TopCenter) + { + x = (rect.Width - fsize.Width) / 2; + y = Padding.Top; + } + return new PointF(x + rect.Left, y + rect.Top); + } + static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, out SizeF fsize) + { + return GetTextPosition(g, data, f, rect, align, new System.Windows.Forms.Padding(0), out fsize); + } + } +} diff --git a/Handler/Sub/UIControl/fTestControl.Designer.cs b/Handler/Sub/UIControl/fTestControl.Designer.cs new file mode 100644 index 0000000..1cf52ef --- /dev/null +++ b/Handler/Sub/UIControl/fTestControl.Designer.cs @@ -0,0 +1,82 @@ +namespace UIControl +{ + partial class fTestControl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.printDirection1 = new UIControl.PrintDirection(); + this.SuspendLayout(); + // + // printDirection1 + // + this.printDirection1.BackColor = System.Drawing.Color.White; + this.printDirection1.BorderColor = System.Drawing.Color.Black; + this.printDirection1.colors = new System.Drawing.Color[] { + System.Drawing.Color.Empty, + System.Drawing.Color.Empty, + System.Drawing.Color.Empty, + System.Drawing.Color.Empty, + System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))), + System.Drawing.Color.Empty, + System.Drawing.Color.Empty, + System.Drawing.Color.Empty, + System.Drawing.Color.Empty}; + this.printDirection1.Font = new System.Drawing.Font("맑은 고딕", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.printDirection1.Location = new System.Drawing.Point(62, 56); + this.printDirection1.Margin = new System.Windows.Forms.Padding(7, 10, 7, 10); + this.printDirection1.Name = "printDirection1"; + this.printDirection1.Size = new System.Drawing.Size(323, 283); + this.printDirection1.TabIndex = 0; + this.printDirection1.TitleFont = new System.Drawing.Font("궁서체", 9F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.printDirection1.titles = new string[] { + "↖", + "↑", + "↗", + "←", + "?", + "→", + "↙", + "↓", + "↘"}; + // + // fTestControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(476, 453); + this.Controls.Add(this.printDirection1); + this.Name = "fTestControl"; + this.Text = "fTestControl"; + this.ResumeLayout(false); + + } + + #endregion + + private PrintDirection printDirection1; + } +} \ No newline at end of file diff --git a/Handler/Sub/UIControl/fTestControl.cs b/Handler/Sub/UIControl/fTestControl.cs new file mode 100644 index 0000000..5be0681 --- /dev/null +++ b/Handler/Sub/UIControl/fTestControl.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class fTestControl : Form + { + public fTestControl() + { + InitializeComponent(); + } + } +} diff --git a/Handler/Sub/UIControl/fTestControl.resx b/Handler/Sub/UIControl/fTestControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/Sub/UIControl/fTestControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/Sub/arAjinextek_Union b/Handler/Sub/arAjinextek_Union new file mode 160000 index 0000000..fb8cfe4 --- /dev/null +++ b/Handler/Sub/arAjinextek_Union @@ -0,0 +1 @@ +Subproject commit fb8cfe47eb221b865811e16d6f948792ce16afc9 diff --git a/Handler/Sub/arFrameControl/GridView/ColorListItem.cs b/Handler/Sub/arFrameControl/GridView/ColorListItem.cs new file mode 100644 index 0000000..fd70462 --- /dev/null +++ b/Handler/Sub/arFrameControl/GridView/ColorListItem.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace arFrame.Control +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class ColorListItem + { + public System.Drawing.Color BackColor1 { get; set; } + public System.Drawing.Color BackColor2 { get; set; } + public string Remark { get; set; } + + public ColorListItem() + { + BackColor1 = System.Drawing.Color.Transparent; + BackColor2 = System.Drawing.Color.Transparent; + Remark = string.Empty; + } + } +} diff --git a/Handler/Sub/arFrameControl/GridView/GridItem.cs b/Handler/Sub/arFrameControl/GridView/GridItem.cs new file mode 100644 index 0000000..40eddec --- /dev/null +++ b/Handler/Sub/arFrameControl/GridView/GridItem.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace arFrame.Control +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class GridViewItem + { + public int row { get; private set; } + public int col { get; private set; } + + public int idx { get; private set; } + [Category("arFrame"), DisplayName("Tag")] + public string Tag { get; set; } + [Category("arFrame"), DisplayName("글자 정렬 방식")] + public System.Drawing.ContentAlignment TextAlign { get; set; } + [Category("arFrame"), DisplayName("글자 여백")] + public System.Windows.Forms.Padding Padding { get; set; } + [Category("arFrame"), DisplayName("메뉴 사용여부"), Description("활성화시 메뉴의 클릭이벤트가 발생하지 않습니다")] + public Boolean Enable { get; set; } + + public System.Drawing.Color BackColor1 { get; set; } + public System.Drawing.Color BackColor2 { get; set; } + + public Boolean Dirty { get; set; } + + public System.Drawing.RectangleF rect { get; set; } + + [Category("arFrame"), DisplayName("번호")] + public int No { get; set; } + + public GridViewItem(int idx_,int _r,int _c) + { + this.row = _r; + this.col = _c; + BackColor1 = System.Drawing.Color.Transparent; + BackColor2 = System.Drawing.Color.Transparent; + rect = System.Drawing.RectangleF.Empty; + Enable = true; + this.idx = idx_; + TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); + No = 0; + this.Dirty = true; + } + } +} diff --git a/Handler/Sub/arFrameControl/GridView/GridView.Designer.cs b/Handler/Sub/arFrameControl/GridView/GridView.Designer.cs new file mode 100644 index 0000000..66613cb --- /dev/null +++ b/Handler/Sub/arFrameControl/GridView/GridView.Designer.cs @@ -0,0 +1,36 @@ +namespace arFrame.Control +{ + partial class GridView + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Sub/arFrameControl/GridView/GridView.cs b/Handler/Sub/arFrameControl/GridView/GridView.cs new file mode 100644 index 0000000..c8345cd --- /dev/null +++ b/Handler/Sub/arFrameControl/GridView/GridView.cs @@ -0,0 +1,632 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace arFrame.Control +{ + public partial class GridView : System.Windows.Forms.Control + { + private int bordersize = 0; + private int menubordersize = 1; + private int menugap = 5; + private System.Windows.Forms.Padding padding = new Padding(3, 3, 3, 3); + private System.Drawing.Color backcolor = System.Drawing.Color.White; + private System.Drawing.Color bordercolor = System.Drawing.Color.Black; + private Boolean textattachtoimage = true; + private Boolean _showIndexString = true; + + private System.Drawing.Color _shadowColor = System.Drawing.Color.Transparent; + private System.Drawing.Color foreColorPin = System.Drawing.Color.WhiteSmoke; + private System.Drawing.Font fontPin = new Font("Consolas", 8, FontStyle.Bold); + + private Point _matrixsize = new Point(8, 2); + public Point MatrixSize { get { return _matrixsize; } set { _matrixsize = value; ResetArray(); RemakeChartRect(); } } + + public Boolean arVeriticalDraw { get; set; } + + [Browsable(false)] + public int ColumnCount { get { return _matrixsize.X; } } + [Browsable(false)] + public int RowCount { get { return _matrixsize.Y; } } + public int ItemCount { get { return ColumnCount * RowCount; } } + + private GridViewItem[] Items; + + private UInt16[] _values; + private string[] _titles; + private string[] _tags; + private string[] _names; + private ColorListItem[] _colorlist; + public ColorListItem[] ColorList { get { return _colorlist; } set { _colorlist = value; this.Invalidate(); } } + + public string[] Names { get { return _names; } set { _names = value; Invalidate(); } } + public string[] Titles { get { return _titles; } set { _titles = value; Invalidate(); } } + public UInt16[] Values { get { return _values; } set { _values = value; Invalidate(); } } + public string[] Tags { get { return _tags; } set { _tags = value; } } + + private bool _showdebuginfo = false; + public Boolean showDebugInfo { get { return _showdebuginfo; } set { _showdebuginfo = value; Invalidate(); } } + + public void setNames(string[] value) + { + _names = value; + } + + public void setTitle(string[] value) + { + List titlerows = new List(); + List tagrows = new List(); + + for (int i = 0; i < value.Length; i++) + { + var r = (int)(Math.Floor((double)(i / ColumnCount))); + var c = i % ColumnCount; + + //세로 그리기 였을때에는 다르게 처리해야함 201215 + if(arVeriticalDraw) + { + c = (int)(Math.Floor((double)(i / ColumnCount))); + r = i % ColumnCount; + } + + if (titlerows.Count < r + 1) titlerows.Add(string.Empty); + if (tagrows.Count < r + 1) tagrows.Add(string.Empty); + + var prestr = titlerows[r]; + if (c > 0 ) prestr += "|"; + titlerows[r] = prestr + value[i]; + + var prestr_t = tagrows[r]; + if (prestr_t != "") prestr_t += "|"; + tagrows[r] = prestr_t + ""; + + if (i < itemCount) this.Items[i].Enable = true; + } + this._titles = titlerows.ToArray(); + this._tags = tagrows.ToArray(); + } + public void setTags(string[] value) + { + List titlerows = new List(); + for (int i = 0; i < value.Length; i++) + { + var r = (int)(Math.Floor((double)(i / ColumnCount))); + var c = i % ColumnCount; + if (titlerows.Count < r + 1) titlerows.Add(string.Empty); + var prestr = titlerows[r]; + if (c > 0 ) prestr += "|"; + titlerows[r] = prestr + value[i]; + if (i < itemCount) this.Items[i].Enable = true; + } + this._tags = titlerows.ToArray(); + } + public Boolean setTitle(int row, int col, string value, string itemtag = "") + { + if (_titles == null) _titles = new string[0]; + if (_tags == null) _tags = new string[0]; + + if (row >= _titles.Length) Array.Resize(ref _titles, row + 1); + if (row >= _tags.Length) Array.Resize(ref _tags, row + 1); + + if (_titles[row] == null) _titles[row] = string.Empty; + if (_tags[row] == null) _tags[row] = string.Empty; + + var linebuf = _titles[row].Split('|'); + var linebuf_t = _tags[row].Split('|'); + + if (col >= linebuf.Length) Array.Resize(ref linebuf, col + 1); + if (col >= linebuf_t.Length) Array.Resize(ref linebuf_t, col + 1); + + linebuf[col] = value; + linebuf_t[col] = itemtag; + + _titles[row] = string.Join("|", linebuf); + _tags[row] = string.Join("|", linebuf_t); + return true; + //var idx = row * this.ColumnCount + col; + //return setTitle(idx, value); + } + public Boolean setTitle(int idx, string value) + { + if (idx < ColumnCount) return setTitle(0, idx, value); + else + { + //줄값이 필요하다 + var row = (int)(Math.Floor((double)(idx / ColumnCount))); + var col = idx % ColumnCount; + return setTitle(row, col, value); + } + } + + + public void setValue(bool[] value) + { + var v = new UInt16[value.Length]; + for (int i = 0; i < value.Length; i++) + v[i] = (UInt16)(value[i] ? 1 : 0); + _values = v; + + //값이 잇으니 enable 한다 + for (int i = 0; i < value.Length; i++) + { + if (i < Items.Length) + this.Items[i].Enable = true; + } + + } + public void setValue(UInt16[] value) + { + _values = value; + + for (int i = 0; i < value.Length; i++) + { + if (i < Items.Length) + this.Items[i].Enable = true; + } + + } + public Boolean setValue(int idx, ushort value) + { + if (idx >= _values.Length || idx >= this.Items.Length) return false; + this._values[idx] = value; + this.Items[idx].Enable = true; + return true; + } + public void ClearValue(ushort defaultValue = 0) + { + if (_values != null) + for (int i = 0; i < _values.Length; i++) + _values[i] = defaultValue; + } + public void ClearTitle(string defaultValue = "") + { + if (_values != null) + for (int i = 0; i < _titles.Length; i++) + _titles[i] = defaultValue; + } + + public void setValue(ushort value) + { + for (int i = 0; i < _values.Length; i++) + this._values[i] = value; + } + public void setItemEnable(int idx, bool value) + { + if (idx >= _values.Length || idx >= this.Items.Length) return; + this.Items[idx].Enable = value; + } + + /// + /// 지정된 컬러태그값을 입력한다. + /// + /// + /// + /// + public Boolean setValue(int idx, string tagString) + { + //동일태그값을 찾는다 + if (idx >= _values.Length) return false; + + int value = -1; + for (int i = 0; i < ColorList.Length; i++) + if (ColorList[i].Remark.ToLower() == tagString.ToLower()) + { + value = i; + break; + } + + if (value != -1) + { + this._values[idx] = (ushort)value; + this.Items[idx].Enable = true; + return true; + } + else return false; + + + } + public Boolean setValue(int idx, bool value) + { + return setValue(idx, (ushort)(value ? 1 : 0)); + } + public Boolean setValue(int row, int col, ushort value) + { + var idx = row * this.ColumnCount + col; + return setValue(idx, value); + } + public Boolean setValueToggle(int row, int col, ushort value1, ushort value2) + { + var idx = row * this.ColumnCount + col; + if (getValue(idx) == value1) return setValue(idx, value2); + else return setValue(idx, value1); + } + public Boolean setValue(int row, int col, bool value) + { + var idx = row * this.ColumnCount + col; + return setValue(idx, (ushort)(value ? 1 : 0)); + } + public Boolean setValue(int row, int col, string value) + { + var idx = row * this.ColumnCount + col; + return setValue(idx, value); + } + + public ushort getValue(int idx) + { + if (idx >= _values.Length) return 0; + return _values[idx]; + } + public ushort getValue(int row, int col) + { + var idx = row * this.ColumnCount + col; + return getValue(idx); + } + + [Category("arFrame")] + public bool ShowIndexString { get { return _showIndexString; } set { _showIndexString = value; Invalidate(); } } + + [Category("arFrame"), DisplayName("테두리 굵기")] + public int BorderSize { get { return bordersize; } set { this.bordersize = value; Invalidate(); } } + [Category("arFrame"), DisplayName("메뉴 테두리 굵기")] + public int MenuBorderSize { get { return menubordersize; } set { this.menubordersize = value; Invalidate(); } } + [Category("arFrame"), DisplayName("메뉴 간격")] + public int MenuGap { get { return menugap; } set { this.menugap = value; RemakeChartRect(); Invalidate(); } } + [Category("arFrame"), DisplayName("글자를 이미지 다음에 표시"), Description("이미지가 있는 경우 해당 이미지 옆에 글자를 붙입니다")] + public Boolean TextAttachToImage { get { return textattachtoimage; } set { this.textattachtoimage = value; Invalidate(); } } + + [Category("arFrame"), DisplayName("색상-테두리")] + public System.Drawing.Color BorderColor { get { return bordercolor; } set { this.bordercolor = value; Invalidate(); } } + [Category("arFrame"), DisplayName("내부 여백")] + public new System.Windows.Forms.Padding Padding { get { return padding; } set { this.padding = value; RemakeChartRect(); Invalidate(); } } + + [Category("arFrame"), DisplayName("색상-전체배경색")] + public override System.Drawing.Color BackColor { get { return backcolor; } set { this.backcolor = value; Invalidate(); } } + + [Category("arFrame"), DisplayName("색상-글자(그림자)")] + public System.Drawing.Color ShadowColor { get { return _shadowColor; } set { _shadowColor = value; this.Invalidate(); } } + + [Category("arFrame"), DisplayName("색상-글자")] + public override Color ForeColor { get { return base.ForeColor; } set { base.ForeColor = value; } } + + [Category("arFrame"), DisplayName("색상-글자(번호)")] + public Color ForeColorPin { get { return foreColorPin; } set { foreColorPin = value; } } + + [Category("arFrame"), DisplayName("글꼴-번호")] + public Font FontPin { get { return fontPin; } set { fontPin = value; Invalidate(); } } + [Category("arFrame"), DisplayName("글꼴-항목")] + public override Font Font { get { return base.Font; } set { base.Font = value; Invalidate(); } } + + private int mouseOverItemIndex = -1; + public GridView() + { + InitializeComponent(); + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + + //값과 이름은 외부의 값을 사용한다 + ResetArray(); + + if (MinimumSize.Width == 0 || MinimumSize.Height == 0) + MinimumSize = new Size(100, 50); + } + + + void ResetArray() + { + if (this._values != null) Array.Resize(ref this._values, itemCount);// = new UInt16[itemCount]; + // if (this._titles != null) Array.Resize(ref this._titles, itemCount);// + // if (this._names != null) Array.Resize(ref this._names, itemCount);// + } + + int itemCount { get { return ColumnCount * RowCount; } } + protected override void OnSizeChanged(EventArgs e) + { + base.OnSizeChanged(e); + RemakeChartRect(); + } + + public event EventHandler ItemClick; + public class ItemClickEventArgs : EventArgs + { + public int idx { get; set; } + public GridViewItem Item { get; set; } + public ItemClickEventArgs(int idx_, GridViewItem item) + { + this.Item = item; + this.idx = idx_; + } + } + + protected override void OnMouseClick(MouseEventArgs e) + { + //마우스클릭시 해당 버튼을 찾아서 반환한다. + if (Items == null || Items.Length < 1) return; + for (int i = 0; i < Items.Length; i++) + { + var rect = Items[i].rect;//[i]; + if (rect.Contains(e.Location)) + { + var menu = Items[i]; + + //미사용개체는 이벤트를 아에 발생하지 않는다 + if (menu.Enable == true && ItemClick != null) + ItemClick(this, new ItemClickEventArgs(i, menu)); + break; + } + } + } + + protected override void OnMouseLeave(EventArgs e) + { + this.mouseOverItemIndex = -1; + this.Invalidate(); + } + protected override void OnMouseMove(MouseEventArgs e) + { + if (Items == null || Items.Length < 1) + { + this.mouseOverItemIndex = -1; + return; + } + + for (int i = 0; i < Items.Length; i++) + { + var rect = Items[i].rect;// rects[i]; + if (rect.Contains(e.Location)) + { + if (i != mouseOverItemIndex) + { + mouseOverItemIndex = i; + this.Invalidate(); + } + + break; + } + } + } + public void setItemTextAlign(int row, int col, System.Drawing.ContentAlignment TextAlign) + { + var item = this.Items.Where(t => t.row == row && t.col == col).FirstOrDefault(); + if (item != null) item.TextAlign = TextAlign; + } + public void setItemTextAlign(System.Drawing.ContentAlignment TextAlign) + { + foreach (var item in this.Items) + item.TextAlign = TextAlign; + } + + protected override void OnPaint(PaintEventArgs pe) + { + //배경그리기 + //using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(DisplayRectangle, BackColor, BackColor2On, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + pe.Graphics.FillRectangle(new SolidBrush(BackColor), DisplayRectangle); + + if (Items == null) + { + pe.Graphics.DrawString("no items", this.Font, Brushes.Red, 100, 100); + return; + } + + var items = Items.OrderBy(t => t.No); + foreach (var menu in items) + { + drawItem(menu.idx, pe.Graphics); + } + + //테두리 그리기 + if (BorderSize > 0) + { + pe.Graphics.DrawRectangle(new Pen(this.BorderColor, BorderSize), + this.DisplayRectangle.Left, + this.DisplayRectangle.Top, + this.DisplayRectangle.Width - 1, + this.DisplayRectangle.Height - 1); + } + } + + public void drawItem(int itemIndex, Graphics g = null) + { + if (g == null) g = this.CreateGraphics(); + var menu = this.Items[itemIndex]; + + if (menu.rect == RectangleF.Empty) return; + + var rect = menu.rect;// rects[i]; + + var diplayText = string.Empty; + + // if(_titles[1].Trim() != "") + // Console.WriteLine("sdf"); + //타이틀이 줄번호별로 처리됨 + if (_titles != null && menu.row < _titles.Length) + { + if (_titles[menu.row] == null) _titles[menu.row] = string.Empty; + var linebif = _titles[menu.row].Split('|'); + if (menu.col < linebif.Length) + diplayText = linebif[menu.col]; + } + + UInt16 Value = 0; + if (_values != null && menu.idx < _values.Length) Value = _values[menu.idx]; + + //배경이 투명이 아니라면 그린다. + var bgColor1 = Color.FromArgb(30, 30, 30);// BackColor1Off; + var bgColor2 = Color.FromArgb(30, 30, 30);// BackColor2Off; + + //해당 값에 따른 컬러값을 읽는다. + if (ColorList != null && Value < ColorList.Length) + { + bgColor1 = this.ColorList[Value].BackColor1; + bgColor2 = this.ColorList[Value].BackColor2; + } + + using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(rect, bgColor1, bgColor2, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + g.FillRectangle(sb, rect); + + // if (mouseOverItemIndex == menu.idx) + // this.Cursor = Cursors.Hand; + // else + // this.Cursor = Cursors.Arrow; + + //테두리를 그리는 속성과 트기가 설정된 경우에만 표시 + //if (mouseOverItemIndex == i) + // { + // pe.Graphics.DrawRectangle(new Pen(Color.DeepSkyBlue), rect.Left, rect.Top, rect.Width, rect.Height); + //} + //else + { + if (MenuBorderSize > 0) + { + using (var p = new Pen(BorderColor, MenuBorderSize)) + g.DrawRectangle(p, rect.Left, rect.Top, rect.Width, rect.Height); + } + } + + //인덱스번호 출력 + if (ShowIndexString && _names != null && menu.idx < _names.Length) + { + //표시글자 + var idxstr = string.Format("[{0}] {1}", menu.idx, _names[menu.idx]); + + //그림자 추가 + if (ShadowColor != System.Drawing.Color.Transparent) + g.DrawString(idxstr, FontPin, new SolidBrush(ShadowColor), menu.rect.Left + 4, menu.rect.Top + 4); + + //일반글자표시 + g.DrawString(idxstr, FontPin, new SolidBrush(this.ForeColorPin), menu.rect.Left + 3, menu.rect.Top + 3); + } + + if (diplayText != "") + { + using (StringFormat sf = new StringFormat(StringFormatFlags.NoClip)) + { + //글자를 텍스트 이후에 붙이는 거라면? + if (menu.TextAlign == ContentAlignment.BottomCenter || menu.TextAlign == ContentAlignment.BottomLeft || + menu.TextAlign == ContentAlignment.BottomRight) sf.LineAlignment = StringAlignment.Far; + else if (menu.TextAlign == ContentAlignment.MiddleCenter || menu.TextAlign == ContentAlignment.MiddleLeft || + menu.TextAlign == ContentAlignment.MiddleRight) sf.LineAlignment = StringAlignment.Center; + else if (menu.TextAlign == ContentAlignment.TopCenter || menu.TextAlign == ContentAlignment.TopLeft || + menu.TextAlign == ContentAlignment.TopRight) sf.LineAlignment = StringAlignment.Near; + + if (menu.TextAlign == ContentAlignment.BottomCenter || menu.TextAlign == ContentAlignment.MiddleCenter || + menu.TextAlign == ContentAlignment.TopCenter) sf.Alignment = StringAlignment.Center; + else if (menu.TextAlign == ContentAlignment.BottomLeft || menu.TextAlign == ContentAlignment.MiddleLeft || + menu.TextAlign == ContentAlignment.TopLeft) sf.Alignment = StringAlignment.Near; + else if (menu.TextAlign == ContentAlignment.BottomRight || menu.TextAlign == ContentAlignment.MiddleRight || + menu.TextAlign == ContentAlignment.TopRight) sf.Alignment = StringAlignment.Far; + + //그림자 추가 + if (ShadowColor != System.Drawing.Color.Transparent) + g.DrawString(diplayText, this.Font, new SolidBrush(ShadowColor), + new RectangleF((float)(rect.Left + 1f), (float)(rect.Top + 1f), (float)rect.Width, (float)rect.Height), sf); + + g.DrawString($"{diplayText}", this.Font, new SolidBrush(ForeColor), rect, sf); + } + } + + if (showDebugInfo) + { + g.DrawString(Value.ToString(), this.fontPin, Brushes.SkyBlue, rect.Left, rect.Top); + } + + } + + /// + /// arFrame 전용 속성값을 복사 합니다 + /// + /// + public void copyTo(GridView ctl) + { + ctl.backcolor = this.backcolor; + ctl.menugap = this.menugap; + ctl.Items = this.Items; + ctl.menubordersize = this.menubordersize; + ctl.padding = this.padding; + ctl.ForeColor = this.ForeColor; + ctl.Font = this.Font; + ctl.TextAttachToImage = this.TextAttachToImage; + ctl.bordercolor = this.bordercolor; + ctl.bordersize = this.bordersize; + } + + public void RemakeChartRect() + { + if (DisplayRectangle == Rectangle.Empty) return; + + double x = 0; + double y = 0; + double w = DisplayRectangle.Width / (ColumnCount * 1.0); + double h = DisplayRectangle.Height / (RowCount * 1.0); + + + //아이템갯수가 달라졌으므로 다시 갱신해야함 + GridViewItem[] item = new GridViewItem[RowCount * ColumnCount]; + + if(arVeriticalDraw) + { + for (int c = 0; c < ColumnCount; c++) + { + for (int r = 0; r < RowCount; r++) + { + int idx = c * ColumnCount + r; + item[idx] = new GridViewItem(idx, r, c); + + if (this.Items != null && idx < this.Items.Length) + item[idx].Enable = this.Items[idx].Enable; // false; + else + item[idx].Enable = false; + + item[idx].Padding = new Padding(0, 0, 0, 0); + item[idx].TextAlign = ContentAlignment.MiddleCenter; + x = (c * w); + y = (r * h); + item[idx].Dirty = true; + item[idx].rect = new RectangleF((float)x, (float)y, (float)w, (float)h); + } + } + + } + else + { + for (int r = 0; r < RowCount; r++) + { + for (int c = 0; c < ColumnCount; c++) + { + int idx = r * ColumnCount + c; + item[idx] = new GridViewItem(idx, r, c); + + if (this.Items != null && idx < this.Items.Length) + item[idx].Enable = this.Items[idx].Enable; // false; + else + item[idx].Enable = false; + + item[idx].Padding = new Padding(0, 0, 0, 0); + item[idx].TextAlign = ContentAlignment.MiddleCenter; + x = (c * w); + y = (r * h); + item[idx].Dirty = true; + item[idx].rect = new RectangleF((float)x, (float)y, (float)w, (float)h); + } + } + + } + + this.Items = item; + + + this.Invalidate(); + + } + } +} diff --git a/Handler/Sub/arFrameControl/MenuBar/MenuControl.Designer.cs b/Handler/Sub/arFrameControl/MenuBar/MenuControl.Designer.cs new file mode 100644 index 0000000..f33508d --- /dev/null +++ b/Handler/Sub/arFrameControl/MenuBar/MenuControl.Designer.cs @@ -0,0 +1,36 @@ +namespace arFrame.Control +{ + partial class MenuControl + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Sub/arFrameControl/MenuBar/MenuControl.cs b/Handler/Sub/arFrameControl/MenuBar/MenuControl.cs new file mode 100644 index 0000000..bfb0a0a --- /dev/null +++ b/Handler/Sub/arFrameControl/MenuBar/MenuControl.cs @@ -0,0 +1,676 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Xml; + +namespace arFrame.Control +{ + + public partial class MenuControl : System.Windows.Forms.Control + { + private int bordersize = 0; + private int menubordersize = 1; + private int menuwidth = 100; + private int menugap = 5; + private System.Windows.Forms.Padding padding = new Padding(3, 3, 3, 3); + private System.Drawing.Color backcolor = System.Drawing.Color.White; + private System.Drawing.Color backcolor2 = System.Drawing.Color.Gainsboro; + private System.Drawing.Color bordercolor = System.Drawing.Color.Black; + private Boolean enablemenubakcolor = false; + private Boolean enablemenuborder = false; + private Boolean textattachtoimage = true; + + [Category("arFrame"), DisplayName("메뉴")] + public MenuItem[] menus { get; set; } + + private Rectangle[] rects = null; + + [Category("arFrame"), DisplayName("테두리 굵기")] + public int BorderSize { get { return bordersize; } set { this.bordersize = value; Invalidate(); } } + [Category("arFrame"), DisplayName("메뉴 테두리 굵기")] + public int MenuBorderSize { get { return menubordersize; } set { this.menubordersize = value; Invalidate(); } } + [Category("arFrame"), DisplayName("메뉴 너비")] + public int MenuWidth { get { return menuwidth; } set { this.menuwidth = value; RemakeChartRect(); Invalidate(); } } + [Category("arFrame"), DisplayName("메뉴 간격")] + public int MenuGap { get { return menugap; } set { this.menugap = value; RemakeChartRect(); Invalidate(); } } + [Category("arFrame"), DisplayName("기능-메뉴별 배경색")] + public Boolean EnableMenuBackColor { get { return enablemenubakcolor; } set { this.enablemenubakcolor = value; Invalidate(); } } + [Category("arFrame"), DisplayName("기능-메뉴별 테두리")] + public Boolean EnableMenuBorder { get { return enablemenuborder; } set { this.enablemenuborder = value; Invalidate(); } } + [Category("arFrame"), DisplayName("글자를 이미지 다음에 표시"), Description("이미지가 있는 경우 해당 이미지 옆에 글자를 붙입니다")] + public Boolean TextAttachToImage { get { return textattachtoimage; } set { this.textattachtoimage = value; Invalidate(); } } + [Category("arFrame"), DisplayName("이미지 표시 여백(좌,상)")] + public System.Drawing.Point ImagePadding { get; set; } + [Category("arFrame"), DisplayName("이미지 표시 크기(너비,높이)")] + public System.Drawing.Size ImageSize { get; set; } + [Category("arFrame"), DisplayName("색상-테두리")] + public System.Drawing.Color BorderColor { get { return bordercolor; } set { this.bordercolor = value; Invalidate(); } } + [Category("arFrame"), DisplayName("내부 여백")] + public new System.Windows.Forms.Padding Padding { get { return padding; } set { this.padding = value; RemakeChartRect(); Invalidate(); } } + [Category("arFrame"), DisplayName("색상-배경1")] + public override System.Drawing.Color BackColor { get { return backcolor; } set { this.backcolor = value; Invalidate(); } } + [Category("arFrame"), DisplayName("색상-배경2")] + public System.Drawing.Color BackColor2 { get { return backcolor2; } set { this.backcolor2 = value; Invalidate(); } } + [Category("arFrame"), DisplayName("색상-글자")] + public override Color ForeColor { get { return base.ForeColor; } set { base.ForeColor = value; } } + + private int mouseOverItemIndex = -1; + public MenuControl() + { + InitializeComponent(); + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + + + ImagePadding = new System.Drawing.Point(0, 0); + ImageSize = new System.Drawing.Size(24, 24); + + + if (MinimumSize.Width == 0 || MinimumSize.Height == 0) + MinimumSize = new Size(100, 50); + + } + protected override void OnSizeChanged(EventArgs e) + { + base.OnSizeChanged(e); + RemakeChartRect(); + } + + + public event EventHandler ItemClick; + public class MenuEventArgs : EventArgs + { + public string Command { get; set; } + public int idx { get; set; } + public MenuEventArgs(string cmd_, int idx_) + { + this.Command = cmd_; + this.idx = idx_; + } + } + + protected override void OnMouseClick(MouseEventArgs e) + { + // if(DesignMode) + // { + // if(e.Button == System.Windows.Forms.MouseButtons.Right) + // { + // System.Windows.Forms.MessageBox.Show("Sdf"); + + // } + // } + // else + { + //마우스클릭시 해당 버튼을 찾아서 반환한다. + if (menus == null || menus.Length < 1) return; + for (int i = 0; i < menus.Length; i++) + { + var rect = rects[i]; + if (rect.Contains(e.Location)) + { + var menu = menus[i]; + + //미사용개체는 이벤트를 아에 발생하지 않는다 + if (menu.Enable == true && ItemClick != null) + ItemClick(this, new MenuEventArgs(menu.Command, i)); + break; + } + } + } + + } + protected override void OnMouseLeave(EventArgs e) + { + this.mouseOverItemIndex = -1; + this.Invalidate(); + } + protected override void OnMouseMove(MouseEventArgs e) + { + if (menus == null || menus.Length < 1) + { + this.mouseOverItemIndex = -1; + return; + } + for (int i = 0; i < menus.Length; i++) + { + var rect = rects[i]; + if (rect.Contains(e.Location)) + { + if (i != mouseOverItemIndex) + { + mouseOverItemIndex = i; + this.Invalidate(); + } + + break; + } + } + } + + protected override void OnPaint(PaintEventArgs pe) + { + + + // if(DesignMode) + // { + // pe.Graphics.FillRectangle(Brushes.Red, this.DisplayRectangle); + // } + //else + { + //배경그리기 + using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(DisplayRectangle, BackColor, BackColor2, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + pe.Graphics.FillRectangle(sb, DisplayRectangle); + } + + //테두리 그리기 + if (BorderSize > 0) + { + pe.Graphics.DrawRectangle(new Pen(this.BorderColor, BorderSize), + this.DisplayRectangle.Left, + this.DisplayRectangle.Top, + this.DisplayRectangle.Width - 1, + this.DisplayRectangle.Height - 1); + } + + //커서모양 + if (mouseOverItemIndex == -1) this.Cursor = Cursors.Arrow; + else this.Cursor = Cursors.Hand; + + if (rects == null) RemakeChartRect(); + if (rects != null && rects.Length > 0) + { + StringFormat sf = new StringFormat(StringFormatFlags.NoClip); + var items = menus.OrderBy(t => t.No); + int i = 0; + foreach (var menu in items) + { + var rect = rects[i]; + + //배경이 투명이 아니라면 그린다. + if (mouseOverItemIndex == i) + { + //마우스오버된놈이다. + using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(rect, Color.FromArgb(100, Color.LightSkyBlue), Color.FromArgb(100, Color.DeepSkyBlue), System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + pe.Graphics.FillRectangle(sb, rect); + } + else + { + if (this.enablemenubakcolor == true && menu.BackColor != System.Drawing.Color.Transparent && menu.BackColor2 != System.Drawing.Color.Transparent) + { + using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(rect, menu.BackColor, menu.BackColor2, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + pe.Graphics.FillRectangle(sb, rect); + } + + } + + //이미지표시 + int ix, iy, iw, ih; + ix = iy = iw = ih = 0; + if (menu.Image != null) + { + ix = rect.Left; + iy = rect.Top; + iw = ImageSize.Width; + ih = ImageSize.Height; + + if (menu.ImageAlign == ContentAlignment.BottomCenter || menu.ImageAlign == ContentAlignment.BottomLeft || + menu.ImageAlign == ContentAlignment.BottomRight) iy += DisplayRectangle.Bottom - ih; + else if (menu.ImageAlign == ContentAlignment.MiddleCenter || menu.ImageAlign == ContentAlignment.MiddleLeft || + menu.ImageAlign == ContentAlignment.MiddleRight) iy += (int)(DisplayRectangle.Top + ((rect.Height - ih) / 2.0)); + else if (menu.ImageAlign == ContentAlignment.TopCenter || menu.ImageAlign == ContentAlignment.TopLeft || + menu.ImageAlign == ContentAlignment.TopRight) iy += DisplayRectangle.Top; + + if (menu.ImageAlign == ContentAlignment.BottomCenter || menu.ImageAlign == ContentAlignment.MiddleCenter || + menu.ImageAlign == ContentAlignment.TopCenter) ix += (int)(DisplayRectangle.Left + ((rect.Width - iw) / 2.0)); + else if (menu.ImageAlign == ContentAlignment.BottomLeft || menu.ImageAlign == ContentAlignment.MiddleLeft || + menu.ImageAlign == ContentAlignment.TopLeft) ix += DisplayRectangle.Left; + else if (menu.ImageAlign == ContentAlignment.BottomRight || menu.ImageAlign == ContentAlignment.MiddleRight || + menu.ImageAlign == ContentAlignment.TopRight) ix += DisplayRectangle.Right - iw; + + if (menu.ImagePadding.X != 0 || menu.ImagePadding.Y != 0) + { + ix += menu.ImagePadding.X; + iy += menu.ImagePadding.Y; + } + else + { + ix += ImagePadding.X; + iy += ImagePadding.Y; + } + if (menu.ImageSize.Width != 0 && menu.ImageSize.Height != 0) + { + iw = menu.ImageSize.Width; + ih = menu.ImageSize.Height; + } + + pe.Graphics.DrawImage(menu.Image, + new Rectangle(ix, iy, iw, ih)); + } + + //테두리를 그리는 속성과 트기가 설정된 경우에만 표시 + if (mouseOverItemIndex == i) + { + pe.Graphics.DrawRectangle(new Pen(Color.DeepSkyBlue), rect); + } + else + { + if (EnableMenuBorder && MenuBorderSize > 0) + { + using (var p = new Pen(menu.BorderColor, MenuBorderSize)) + pe.Graphics.DrawRectangle(p, rect); + } + } + + + //글자를 텍스트 이후에 붙이는 거라면? + if (menu.Image != null && TextAttachToImage) + { + var fsize = pe.Graphics.MeasureString(menu.Text, this.Font); + pe.Graphics.DrawString(menu.Text, this.Font, new SolidBrush(menu.ForeColor), + (float)(ix + iw + 1), + (float)(iy + ((ih - fsize.Height) / 2.0))); + } + else + { + if (menu.TextAlign == ContentAlignment.BottomCenter || menu.TextAlign == ContentAlignment.BottomLeft || + menu.TextAlign == ContentAlignment.BottomRight) sf.LineAlignment = StringAlignment.Far; + else if (menu.TextAlign == ContentAlignment.MiddleCenter || menu.TextAlign == ContentAlignment.MiddleLeft || + menu.TextAlign == ContentAlignment.MiddleRight) sf.LineAlignment = StringAlignment.Center; + else if (menu.TextAlign == ContentAlignment.TopCenter || menu.TextAlign == ContentAlignment.TopLeft || + menu.TextAlign == ContentAlignment.TopRight) sf.LineAlignment = StringAlignment.Near; + + if (menu.TextAlign == ContentAlignment.BottomCenter || menu.TextAlign == ContentAlignment.MiddleCenter || + menu.TextAlign == ContentAlignment.TopCenter) sf.Alignment = StringAlignment.Center; + else if (menu.TextAlign == ContentAlignment.BottomLeft || menu.TextAlign == ContentAlignment.MiddleLeft || + menu.TextAlign == ContentAlignment.TopLeft) sf.Alignment = StringAlignment.Near; + else if (menu.TextAlign == ContentAlignment.BottomRight || menu.TextAlign == ContentAlignment.MiddleRight || + menu.TextAlign == ContentAlignment.TopRight) sf.Alignment = StringAlignment.Far; + + pe.Graphics.DrawString(menu.Text, this.Font, new SolidBrush(menu.ForeColor), rect, sf); + } + i += 1; + } + sf.Dispose(); + } + //if(DesignMode) + //{ + // pe.Graphics.DrawString("deisgn", this.Font, Brushes.Red, 1, 1); + //} + } + + /// + /// arFrame 전용 속성값을 복사 합니다 + /// + /// + public void copyTo(MenuControl ctl) + { + ctl.backcolor = this.backcolor; + ctl.backcolor2 = this.BackColor2; + ctl.MenuWidth = this.menuwidth; + ctl.menugap = this.menugap; + ctl.menus = this.menus; + ctl.menubordersize = this.menubordersize; + ctl.padding = this.padding; + ctl.ForeColor = this.ForeColor; + ctl.Font = this.Font; + ctl.EnableMenuBackColor = this.EnableMenuBackColor; + ctl.EnableMenuBorder = this.EnableMenuBorder; + ctl.ImagePadding = this.ImagePadding; + ctl.ImageSize = this.ImageSize; + ctl.TextAttachToImage = this.TextAttachToImage; + ctl.bordercolor = this.bordercolor; + ctl.bordersize = this.bordersize; + } + + public void Save(string File) + { + //xml로 데이터를 저장자 + System.Text.StringBuilder NewXml = new System.Text.StringBuilder(); + NewXml.AppendLine(""); + NewXml.AppendLine(" "); + NewXml.AppendLine(""); + + if (System.IO.File.Exists(File)) System.IO.File.Delete(File); + System.IO.File.WriteAllText(File, NewXml.ToString().Replace('\'', '\"'), System.Text.Encoding.UTF8); + var vDocu = new XmlDocument(); + vDocu.Load(File); + //var nsmgr = new XmlNamespaceManager(new System.Xml.NameTable()); + //nsmgr.AddNamespace("x", "http://tindevil.com"); + var Root = vDocu.DocumentElement; + + //저장하려는 속성목록을 먼저 생성한다 + //미사용 목록이 너무 많아서 그렇게 함 + foreach (var m in this.GetType().GetMethods()) + { + var mName = m.Name.ToLower(); + if (mName.StartsWith("get_") == false || mName == "get_menus") continue; + + var pt = this.GetType().GetProperty(m.Name.Substring(4)); + if (pt != null) + { + var categoryName = GetCategoryName(pt); + if (categoryName.ToLower() != "arframe") continue; + + //자료형에따라서 그값을 변경한다 + var value = m.Invoke(this, null); + var newNode = vDocu.CreateElement(pt.Name);// m.Name.Substring(4)); + newNode.InnerText = getValueString(m, value); + Root.AppendChild(newNode); + } + } + + + foreach (var item in this.menus.OrderBy(t => t.No)) + { + var node = vDocu.CreateElement("Item"); + var attNo = vDocu.CreateAttribute("No"); + attNo.Value = item.No.ToString(); + node.Attributes.Append(attNo); + + foreach (var m in item.GetType().GetMethods()) + { + var mName = m.Name.ToLower(); + if (mName.StartsWith("get_") == false || mName == "get_no") continue; + + var value = m.Invoke(item, null); + var sNode = vDocu.CreateElement(m.Name.Substring(4)); + sNode.InnerText = getValueString(m, value); + node.AppendChild(sNode); + } + Root.AppendChild(node); + } + vDocu.Save(File); + } + + public void Load(string File) + { + if (System.IO.File.Exists(File) == false) return; + + List NewMenu = new List(); + var vDocu = new XmlDocument(); + vDocu.Load(File); + var Root = vDocu.DocumentElement; //루트요소(Tindevil) + + + + //저장하려는 속성목록을 먼저 생성한다 + //미사용 목록이 너무 많아서 그렇게 함 + foreach (var m in this.GetType().GetMethods()) + { + var mName = m.Name.ToLower(); + if (mName.StartsWith("get_") == false || mName == "get_menus") continue; + + var methodName = m.Name.Substring(4); + var pt = this.GetType().GetProperty(methodName); + if (pt != null) + { + var categoryName = GetCategoryName(pt); + if (categoryName.ToLower() != "arframe") continue; + + //SEt명령이 있어야 사용이 가능하다 + var setMethod = this.GetType().GetMethod("set_" + methodName); + if (setMethod == null) continue; + + //값을 읽어온다 + var Node = Root.SelectSingleNode(methodName); + if (Node != null) + { + var strValue = Node.InnerText; + var value = getValueFromString(m.ReturnType, strValue); // setValueString(m.ReturnType, setMethod, strValue); + setMethod.Invoke(this, new object[] { value }); + } + } + } + + + //foreach (var item in this.menus.OrderBy(t => t.No)) + //{ + // var node = vDocu.CreateElement("Item"); + // var attNo = vDocu.CreateAttribute("No"); + // attNo.Value = item.No.ToString(); + // node.Attributes.Append(attNo); + + // foreach (var m in item.GetType().GetMethods()) + // { + // var mName = m.Name.ToLower(); + // if (mName.StartsWith("get_") == false || mName == "get_no") continue; + + // var value = m.Invoke(item, null); + // var sNode = vDocu.CreateElement(m.Name.Substring(4)); + // sNode.InnerText = getValueString(m, value); + // node.AppendChild(sNode); + // } + // Root.AppendChild(node); + //} + } + + + private string getValueString(System.Reflection.MethodInfo m, object value) + { + var strValue = ""; + string valuetype = m.ReturnType.Name.ToLower(); + if (m.ReturnType == typeof(System.Drawing.Color)) + strValue = ((System.Drawing.Color)value).ToArgb().ToString(); + else if (m.ReturnType == typeof(System.Drawing.Rectangle)) + { + var rect = (System.Drawing.Rectangle)value; + strValue = string.Format("{0};{1};{2};{3}", rect.Left, rect.Top, rect.Width, rect.Height); + } + else if (m.ReturnType == typeof(System.Drawing.RectangleF)) + { + var rectf = (System.Drawing.RectangleF)value; + strValue = string.Format("{0};{1};{2};{3}", rectf.Left, rectf.Top, rectf.Width, rectf.Height); + } + else if (m.ReturnType == typeof(Boolean)) + { + strValue = ((Boolean)value) ? "1" : "0"; + } + else if (m.ReturnType == typeof(System.Drawing.Point)) + { + var pt1 = (Point)value; + strValue = string.Format("{0};{1}", pt1.X, pt1.Y); + } + else if (m.ReturnType == typeof(System.Drawing.PointF)) + { + var ptf = (PointF)value; + strValue = string.Format("{0};{1}", ptf.X, ptf.Y); + } + else if (m.ReturnType == typeof(System.Drawing.Size)) + { + var sz = (Size)value; + strValue = string.Format("{0};{1}", sz.Width, sz.Height); + } + else if (m.ReturnType == typeof(System.Drawing.SizeF)) + { + var szf = (SizeF)value; + strValue = string.Format("{0};{1}", szf.Width, szf.Height); + } + else if (m.ReturnType == typeof(System.Drawing.Bitmap)) + { + var bitmap = (Bitmap)value; + + // Convert the image to byte[] + System.IO.MemoryStream stream = new System.IO.MemoryStream(); + bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp); + byte[] imageBytes = stream.ToArray(); + strValue = Convert.ToBase64String(imageBytes); + } + else if (m.ReturnType == typeof(System.Windows.Forms.Padding)) + { + var pd = (System.Windows.Forms.Padding)value; + strValue = string.Format("{0};{1};{2};{3}", pd.Left, pd.Top, pd.Right, pd.Bottom); + } + else + strValue = value.ToString(); + return strValue; + } + + + private object getValueFromString(Type ReturnType, string strValue) + { + + + if (ReturnType == typeof(System.Drawing.Color)) + { + var cint = int.Parse(strValue); + return System.Drawing.Color.FromArgb(cint); + } + else if (ReturnType == typeof(System.Drawing.Rectangle)) + { + var buf = strValue.Split(';'); + var x = int.Parse(buf[0]); + var y = int.Parse(buf[1]); + var w = int.Parse(buf[2]); + var h = int.Parse(buf[3]); + return new Rectangle(x, y, w, h); + } + else if (ReturnType == typeof(System.Drawing.RectangleF)) + { + var buf = strValue.Split(';'); + var x = float.Parse(buf[0]); + var y = float.Parse(buf[1]); + var w = float.Parse(buf[2]); + var h = float.Parse(buf[3]); + return new RectangleF(x, y, w, h); + } + else if (ReturnType == typeof(Boolean)) + { + return strValue == "1"; + } + else if (ReturnType == typeof(System.Drawing.Point)) + { + var buf = strValue.Split(';'); + var x = int.Parse(buf[0]); + var y = int.Parse(buf[1]); + return new Point(x, y); + } + else if (ReturnType == typeof(System.Drawing.PointF)) + { + var buf = strValue.Split(';'); + var x = float.Parse(buf[0]); + var y = float.Parse(buf[1]); + return new PointF(x, y); + } + else if (ReturnType == typeof(System.Drawing.Size)) + { + var buf = strValue.Split(';'); + var x = int.Parse(buf[0]); + var y = int.Parse(buf[1]); + return new Size(x, y); + } + else if (ReturnType == typeof(System.Drawing.SizeF)) + { + var buf = strValue.Split(';'); + var x = float.Parse(buf[0]); + var y = float.Parse(buf[1]); + return new SizeF(x, y); + } + else if (ReturnType == typeof(System.Drawing.Bitmap)) + { + //문자을을 바이트로 전환다 + byte[] imageBytes = Convert.FromBase64String(strValue); + + Bitmap retval = null; + using (System.IO.MemoryStream stream = new System.IO.MemoryStream(imageBytes)) + retval = new Bitmap(stream); + return retval; + } + else if (ReturnType == typeof(System.Windows.Forms.Padding)) + { + var buf = strValue.Split(';'); + var x = int.Parse(buf[0]); + var y = int.Parse(buf[1]); + var w = int.Parse(buf[2]); + var h = int.Parse(buf[3]); + return new Padding(x, y, w, h); + } + else if (ReturnType == typeof(Int16)) return Int16.Parse(strValue); + else if (ReturnType == typeof(Int32)) return Int32.Parse(strValue); + else if (ReturnType == typeof(Int64)) return Int64.Parse(strValue); + else if (ReturnType == typeof(UInt16)) return UInt16.Parse(strValue); + else if (ReturnType == typeof(UInt32)) return UInt32.Parse(strValue); + else + return strValue; + } + + + + public string GetCategoryName(System.Reflection.PropertyInfo m) + { + var displayName = m + .GetCustomAttributes(typeof(CategoryAttribute), true) + .FirstOrDefault() as CategoryAttribute; + + if (displayName != null) + return displayName.Category; + + return ""; + } + public string GetDisplayName(System.Reflection.MethodInfo m) + { + var displayName = m + .GetCustomAttributes(typeof(DisplayNameAttribute), true) + .FirstOrDefault() as DisplayNameAttribute; + + if (displayName != null) + return displayName.DisplayName; + + return ""; + } + + public void RemakeChartRect() + { + if (rects != null) rects = null; + if (menus == null || menus.Length < 1) return; + + rects = new Rectangle[menus.Length]; + int leftIdx = 0; + int rightIdx = 0; + int leftAcc = 0; + int rightAcc = 0; + + + int i = 0; + var menuList = this.menus.OrderBy(t => t.No).ToArray(); + foreach (var menu in menuList) + { + int x, y, w, h; + // var menu = menus[i]; + + var mWidth = menuwidth; + if (menu.MenuWidth > 0) mWidth = menu.MenuWidth; + + w = mWidth; + h = DisplayRectangle.Height - Padding.Top - Padding.Bottom; + + if (menu.isRightMenu) + { + x = DisplayRectangle.Right - Padding.Right - (rightAcc) - (MenuGap * rightIdx); + y = DisplayRectangle.Top + Padding.Top; + rightAcc += 0;// = 0;// x; + rightIdx += 1; + } + else + { + x = DisplayRectangle.Left + Padding.Left + leftAcc + (MenuGap * leftIdx); + y = DisplayRectangle.Top + Padding.Top; + leftAcc += mWidth; + leftIdx += 1; + } + rects[i] = new Rectangle(x, y, w, h); + i += 1; + } + } + } +} diff --git a/Handler/Sub/arFrameControl/MenuBar/MenuItem.cs b/Handler/Sub/arFrameControl/MenuBar/MenuItem.cs new file mode 100644 index 0000000..717dca5 --- /dev/null +++ b/Handler/Sub/arFrameControl/MenuBar/MenuItem.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace arFrame.Control +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class MenuItem + { + [Category("arFrame"),DisplayName("메뉴이름")] + public string Text { get; set; } + [Category("arFrame"), DisplayName("색상-테두리"), Description("메뉴속성의 테두리 기능이 켜져야 합니다")] + public System.Drawing.Color BorderColor { get; set; } + [Category("arFrame"),DisplayName("색상-배경1"),Description("메뉴속성의 배경 기능이 켜져야 합니다")] + public System.Drawing.Color BackColor { get; set; } + [Category("arFrame"), DisplayName("색상-배경2"), Description("메뉴속성의 배경 기능이 켜져야 합니다")] + public System.Drawing.Color BackColor2 { get; set; } + [Category("arFrame"),DisplayName("색상-글자")] + public System.Drawing.Color ForeColor { get; set; } + [Category("arFrame"),DisplayName("메뉴 구분자로 사용합니다")] + public Boolean isSeparate { get; set; } + [Category("arFrame"),DisplayName("오른쪽 붙임")] + public Boolean isRightMenu { get; set; } + [Category("arFrame"),DisplayName("실행 명령")] + public string Command { get; set; } + [Category("arFrame"),DisplayName("아이콘 이미지")] + public System.Drawing.Bitmap Image { get; set; } + [Category("arFrame"),DisplayName("글자 정렬 방식")] + public System.Drawing.ContentAlignment TextAlign { get; set; } + [Category("arFrame"),DisplayName("이미지 정렬 방식")] + public System.Drawing.ContentAlignment ImageAlign { get; set; } + [Category("arFrame"),DisplayName("글자 여백")] + public System.Windows.Forms.Padding Padding { get; set; } + [Category("arFrame"),DisplayName("메뉴 사용여부"),Description("활성화시 메뉴의 클릭이벤트가 발생하지 않습니다")] + public Boolean Enable { get; set; } + [Category("arFrame"),DisplayName("이미지 표시 여백(좌,상)")] + public System.Drawing.Point ImagePadding { get; set; } + [Category("arFrame"),DisplayName("이미지 표시 크기(너비,높이)")] + public System.Drawing.Size ImageSize { get; set; } + [Category("arFrame"),DisplayName("메뉴 간격")] + public int MenuWidth { get; set; } + + [Category("arFrame"),DisplayName("번호")] + public int No { get; set; } + + public MenuItem() + { + Enable = true; + BorderColor = System.Drawing.Color.FromArgb(20, 20, 20); + BackColor = System.Drawing.Color.DimGray; + BackColor2 = System.Drawing.Color.FromArgb(100, 100, 100); + ForeColor = System.Drawing.Color.Black; + Text = "Menu"; + isRightMenu = false; + Command = string.Empty; + Image = null; + isSeparate = false; + TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); + ImagePadding = new System.Drawing.Point(0, 0); + ImageSize = new System.Drawing.Size(0, 0); + MenuWidth = 0; + No = 0; + } + } +} diff --git a/Handler/Sub/arFrameControl/MotCommandButton.Designer.cs b/Handler/Sub/arFrameControl/MotCommandButton.Designer.cs new file mode 100644 index 0000000..360d93b --- /dev/null +++ b/Handler/Sub/arFrameControl/MotCommandButton.Designer.cs @@ -0,0 +1,36 @@ +namespace arFrame.Control +{ + partial class MotCommandButton + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Sub/arFrameControl/MotCommandButton.cs b/Handler/Sub/arFrameControl/MotCommandButton.cs new file mode 100644 index 0000000..b80d17c --- /dev/null +++ b/Handler/Sub/arFrameControl/MotCommandButton.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace arFrame.Control +{ + public partial class MotCommandButton : Button + { + public enum eCommand + { + AbsoluteMove = 0, + RelativeMove , + AcceptPosition + } + public MotCommandButton() + { + InitializeComponent(); + motCommand = eCommand.AbsoluteMove; + motValueControl = null; + motAccControl = null; + motSpdControl = null; + } + public MotValueNumericUpDown motValueControl { get; set; } + public MotValueNumericUpDown motAccControl { get; set; } + public MotValueNumericUpDown motSpdControl { get; set; } + public eCommand motCommand { get; set; } + } +} diff --git a/Handler/Sub/arFrameControl/MotLinkLabel.Designer.cs b/Handler/Sub/arFrameControl/MotLinkLabel.Designer.cs new file mode 100644 index 0000000..643cb90 --- /dev/null +++ b/Handler/Sub/arFrameControl/MotLinkLabel.Designer.cs @@ -0,0 +1,36 @@ +namespace arFrame.Control +{ + partial class MotLinkLabel + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Sub/arFrameControl/MotLinkLabel.cs b/Handler/Sub/arFrameControl/MotLinkLabel.cs new file mode 100644 index 0000000..8112643 --- /dev/null +++ b/Handler/Sub/arFrameControl/MotLinkLabel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace arFrame.Control +{ + public partial class MotLinkLabel : System.Windows.Forms.LinkLabel + { + public MotLinkLabel() + { + InitializeComponent(); + this.LinkColor = Color.Chartreuse; + } + public MotValueNumericUpDown motValueControl { get; set; } + } +} diff --git a/Handler/Sub/arFrameControl/MotValueNumericUpDown.Designer.cs b/Handler/Sub/arFrameControl/MotValueNumericUpDown.Designer.cs new file mode 100644 index 0000000..ee475bb --- /dev/null +++ b/Handler/Sub/arFrameControl/MotValueNumericUpDown.Designer.cs @@ -0,0 +1,36 @@ +namespace arFrame.Control +{ + partial class MotValueNumericUpDown + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Sub/arFrameControl/MotValueNumericUpDown.cs b/Handler/Sub/arFrameControl/MotValueNumericUpDown.cs new file mode 100644 index 0000000..ce30c8e --- /dev/null +++ b/Handler/Sub/arFrameControl/MotValueNumericUpDown.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace arFrame.Control +{ + public partial class MotValueNumericUpDown : NumericUpDown + { + public MotValueNumericUpDown() + { + InitializeComponent(); + MotionIndex = -1; + } + public int MotionIndex { get; set; } + } +} diff --git a/Handler/Sub/arFrameControl/MotionView/MotITem.cs b/Handler/Sub/arFrameControl/MotionView/MotITem.cs new file mode 100644 index 0000000..8edc746 --- /dev/null +++ b/Handler/Sub/arFrameControl/MotionView/MotITem.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace arFrame.Control +{ + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class MotITem + { + public int idx { get; private set; } + [Category("arFrame"), DisplayName("Tag")] + public string Tag { get; set; } + [Category("arFrame"), DisplayName("글자 정렬 방식")] + public System.Drawing.ContentAlignment TextAlign { get; set; } + [Category("arFrame"), DisplayName("글자 여백")] + public System.Windows.Forms.Padding Padding { get; set; } + [Category("arFrame"), DisplayName("메뉴 사용여부"), Description("활성화시 메뉴의 클릭이벤트가 발생하지 않습니다")] + public Boolean Enable { get; set; } + public string Text { get; set; } + + public Boolean Dirty { get; set; } + + public System.Drawing.Rectangle[] subRect = null; + + //모션 상태값 + public Boolean[] State; + public double Position { get; set; } + public double PositionCmd { get; set; } + public System.Drawing.Color PositionColor { get; set; } + + public System.Drawing.RectangleF rect { get; set; } + + [Category("arFrame"), DisplayName("번호")] + public int No { get; set; } + + public MotITem(int idx_) + { + this.Dirty = true; + PositionColor = System.Drawing.Color.White; + subRect = new System.Drawing.Rectangle[6]; + rect = System.Drawing.RectangleF.Empty; + Enable = true; + this.idx = idx_; + TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + Padding = new System.Windows.Forms.Padding(0, 0, 0, 0); + No = 0; + this.Text = string.Empty; + this.Enable = true; + this.State = new bool[] { false,false,false,false,false,false}; + Position = 0; + PositionCmd = 0; + } + } +} diff --git a/Handler/Sub/arFrameControl/MotionView/MotionDisplay.Designer.cs b/Handler/Sub/arFrameControl/MotionView/MotionDisplay.Designer.cs new file mode 100644 index 0000000..4dc1b43 --- /dev/null +++ b/Handler/Sub/arFrameControl/MotionView/MotionDisplay.Designer.cs @@ -0,0 +1,36 @@ +namespace arFrame.Control +{ + partial class MotionDisplay + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Handler/Sub/arFrameControl/MotionView/MotionDisplay.cs b/Handler/Sub/arFrameControl/MotionView/MotionDisplay.cs new file mode 100644 index 0000000..67d166c --- /dev/null +++ b/Handler/Sub/arFrameControl/MotionView/MotionDisplay.cs @@ -0,0 +1,306 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace arFrame.Control +{ + public partial class MotionDisplay : System.Windows.Forms.Control + { + private Color[] colorB1 = new Color[] { + Color.MediumSeaGreen, + Color.DeepSkyBlue, + Color.Tomato, + Color.Purple, + Color.Tomato, + Color.FromArgb(40,40,40) + }; + private Color[] colorB2 = new Color[] { + Color.SeaGreen, + Color.SteelBlue, + Color.Red, + Color.Indigo, + Color.Red, + Color.FromArgb(30,30,30) + }; + + private StringFormat sf = new StringFormat(); + private string[] IndiName = new string[] { "INP","ORG","LIM","HST","ALM","" }; + public MotITem[] Items; + private int _colcount = 3; + private int _rowcount = 2; + private Color _bordercolor = Color.Black; + private Color _gridcolor = Color.FromArgb(50, 50, 50); + private int _bordersize = 1; + private Padding _padding; + private string _postionformat = ""; + private int _headerHeight = 16; + private Font _headerfont = new Font("Consolas",7f); + + + private int itemCount { get { return _colcount * _rowcount; } } + + public new Font Font { get { return base.Font; } set { base.Font = value; this.Invalidate(); } } + public Font HeaderFont { get { return _headerfont; } set { _headerfont = value; this.Invalidate(); } } + public int HeaderHeight { get { return _headerHeight; } set { _headerHeight = value; RemakeChartRect(); this.Invalidate(); } } + public new Padding Padding { get { if (_padding == null) return Padding.Empty; else return _padding; } set { _padding = value; RemakeChartRect(); Invalidate(); } } + public int ColumnCount { get { return _colcount; } set { _colcount = value; ResetArray(); RemakeChartRect(); } } + public int RowCount { get { return _rowcount; } set { _rowcount = value; ResetArray(); RemakeChartRect(); } } + public int BorderSize { get { return _bordersize; } set { _bordersize = value; Invalidate(); } } + public Color BorderColor { get { return _bordercolor; } set { _bordercolor = value; Invalidate(); } } + public string PositionDisplayFormat { get { return _postionformat; } set { _postionformat = value; Invalidate(); } } + public Color GridColor { get { return _gridcolor; } set { _gridcolor = value; Invalidate(); } } + + public new Boolean Enabled { get { return base.Enabled; } set { base.Enabled = value; Invalidate(); } } + + public MotionDisplay() + { + InitializeComponent(); + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + sf.LineAlignment = StringAlignment.Center; + sf.Alignment = StringAlignment.Center; + + + //값과 이름은 외부의 값을 사용한다 + ResetArray(); + + if (MinimumSize.Width == 0 || MinimumSize.Height == 0) + MinimumSize = new Size(100, 50); + } + + void ResetArray() + { + + } + + + protected override void OnSizeChanged(EventArgs e) + { + base.OnSizeChanged(e); + RemakeChartRect(); + } + + public void RemakeChartRect() + { + if (DisplayRectangle == Rectangle.Empty) return; + + var baseRect = new Rectangle( + DisplayRectangle.Left + _padding.Left, + DisplayRectangle.Top + _padding.Top, + DisplayRectangle.Width - _padding.Left - _padding.Right, + DisplayRectangle.Height - _padding.Top - _padding.Bottom); + + double x = 0; + double y = 0; + double w = baseRect.Width / (_colcount * 1.0); + double h = baseRect.Height / (_rowcount * 1.0); + + if (this.Items == null || itemCount != this.Items.Length) + { + //아이템갯수가 달라졌으므로 다시 갱신해야함 + var item = new MotITem[RowCount * ColumnCount]; + for (int r = 0; r < RowCount; r++) + { + for (int c = 0; c < ColumnCount; c++) + { + int idx = r * ColumnCount + c; + item[idx] = new MotITem(idx); + item[idx].Enable = false; + item[idx].Padding = new Padding(0, 0, 0, 0); + item[idx].TextAlign = ContentAlignment.MiddleCenter; + x = baseRect.Left + (c * w); + y = baseRect.Top + (r * h); + item[idx].rect = new RectangleF((float)x, (float)y, (float)w, (float)h); + item[idx].Dirty = true; + } + } + + this.Items = item; + } + else + { + //아이템의 갯수는 같으므로 좌표값만 변경해준다. + for (int r = 0; r < RowCount; r++) + { + for (int c = 0; c < ColumnCount; c++) + { + int idx = r * ColumnCount + c; + var item = Items[idx]; + x = (c * w); + y = (r * h); + item.rect = new RectangleF((float)x, (float)y, (float)w, (float)h); + item.Dirty = true; + } + } + } + this.Invalidate(); + + } + + protected override void OnPaint(PaintEventArgs pe) + { + //배경그리기 + //using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(DisplayRectangle, BackColor, BackColor2On, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + pe.Graphics.FillRectangle(new SolidBrush(this.BackColor), DisplayRectangle); + + if (Items == null) + { + pe.Graphics.DrawString("no items", this.Font, Brushes.Red, 100, 100); + return; + } + + var items = Items.OrderBy(t => t.No); + foreach (var menu in items) + { + drawItem(menu.idx, pe.Graphics); + } + + //테두리 그리기 + if (BorderSize > 0) + { + pe.Graphics.DrawRectangle(new Pen(this.BorderColor, BorderSize), + this.DisplayRectangle.Left, + this.DisplayRectangle.Top, + this.DisplayRectangle.Width - 1, + this.DisplayRectangle.Height - 1); + } + } + + private void drawItem(int itemIndex, Graphics g = null) + { + if (g == null) g = this.CreateGraphics(); + var item = this.Items[itemIndex]; + + // g.DrawString("rect null", this.Font, Brushes.White, 100, 100); + + if (item.rect == RectangleF.Empty) return; + + var rect = item.rect;// rects[i]; + + var diplayText = item.Text; + + //byte Value = 0; + + //배경이 투명이 아니라면 그린다. + //var bgColor1 = Color.DarkBlue; //BackColor1Off; + //var bgColor2 = Color.Blue;// BackColor2Off; + + //if (Value != 0 && item.Enable != false) + //{ + // //bgColor1 = Value == 1 ? BackColor1On : BackColor1Err; + // //bgColor2 = Value == 1 ? BackColor2On : BackColor2Err; + //} + + //using (var sb = new System.Drawing.Drawing2D.LinearGradientBrush(rect, bgColor1, bgColor2, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + // g.FillRectangle(sb, rect); + + // if (mouseOverItemIndex == menu.idx) + // this.Cursor = Cursors.Hand; + // else + // this.Cursor = Cursors.Arrow; + + //테두리를 그리는 속성과 트기가 설정된 경우에만 표시 + //if (mouseOverItemIndex == i) + // { + // pe.Graphics.DrawRectangle(new Pen(Color.DeepSkyBlue), rect.Left, rect.Top, rect.Width, rect.Height); + //} + //else + { + // using (var p = new Pen(BorderColor, 1)) + // g.DrawRectangle(p, rect.Left, rect.Top, rect.Width, rect.Height); + } + + //총 5개의 인디게이터와 하단에 위치값을 표시하는 영역이 있따. + //줄 영역은 50%비율로 처리함 + if(item.Dirty) + { + //각 영역을 다시 그려줘야한다. + var indiWidth = rect.Width / 5.0; + // var indiHeight = rect.Height / 2.0; + for (int c = 0; c < 5; c++) + { + item.subRect[c] = new Rectangle((int)(c * indiWidth + item.rect.Left), (int)(item.rect.Top), (int)indiWidth, (int)HeaderHeight); + } + item.Dirty = false; + + //위치값을 나타내는 영역 + item.subRect[5] = new Rectangle((int)item.rect.Left, (int)(item.rect.Top + HeaderHeight), (int)rect.Width, (int)rect.Height - HeaderHeight ); + + } + + for(int i = 0 ; i < item.subRect.Length;i++) + { + var B1 = colorB1[i]; + var B2 = colorB2[i]; + + if (i < (item.subRect.Length - 1)) //상태표시칸은 현재 값에 따라서 색상을 달리한다 + { + if ( this.Enabled == false || (item.State[i] == false && DesignMode == false)) + { + B1 = Color.FromArgb(20,20,20); + B2 = Color.FromArgb(50,50,50); + } + } + + var rt = item.subRect[i]; + using (var br = new System.Drawing.Drawing2D.LinearGradientBrush(rt, B1, B2, System.Drawing.Drawing2D.LinearGradientMode.Vertical)) + g.FillRectangle(br, rt); + + // g.DrawRectangle(Pens.Yellow, rt); + if (i < (item.subRect.Length-1)) + { + sf.Alignment = StringAlignment.Center; + sf.LineAlignment = StringAlignment.Center; + g.DrawString(IndiName[i], HeaderFont, Brushes.White, rt, sf); + } + else + { + sf.LineAlignment = StringAlignment.Center; + sf.Alignment = StringAlignment.Far; + g.DrawString(item.Position.ToString(PositionDisplayFormat) + " [" + item.PositionCmd.ToString(PositionDisplayFormat) + "] ", + this.Font, + new SolidBrush(item.PositionColor), + rt, + sf); + } + } + + //테두리선은 우측만 처리한다 + for (int i = 0; i < item.subRect.Length ; i++) + { + var rt = item.subRect[i]; + var x1 = rt.Right; + var y1 = rt.Top; + var x2 = rt.Right; + var y2 = rt.Bottom; + g.DrawLine(new Pen(GridColor), x1, y1, x2, y2); + } + var posRect = item.subRect[item.subRect.Length - 1]; + g.DrawLine(new Pen(Color.Black,1), posRect.Left, posRect.Top, posRect.Right, posRect.Top); + + + //인덱스번호 출력 + if (diplayText != "") + { + g.DrawString(string.Format("[{0}] {1}", item.idx, diplayText), + this.Font, new SolidBrush(this.ForeColor), + item.rect.Left + 3, item.rect.Top + 3); + } + + + + } + + } +} diff --git a/Handler/Sub/arFrameControl/Properties/AssemblyInfo.cs b/Handler/Sub/arFrameControl/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3eb117a --- /dev/null +++ b/Handler/Sub/arFrameControl/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +// 어셈블리와 관련된 정보를 수정하려면 +// 이 특성 값을 변경하십시오. +[assembly: AssemblyTitle("arFrameControl")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("arFrameControl")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("9fa3ef10-3c75-40a2-b3e6-a37900b26d0e")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/Sub/arFrameControl/arFrameControl.csproj b/Handler/Sub/arFrameControl/arFrameControl.csproj new file mode 100644 index 0000000..70044ec --- /dev/null +++ b/Handler/Sub/arFrameControl/arFrameControl.csproj @@ -0,0 +1,98 @@ + + + + + Debug + AnyCPU + {A16C9667-5241-4313-888E-548375F85D29} + Library + Properties + arFrame.Control + arFrameControl + v4.8 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AnyCPU + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + Component + + + MotCommandButton.cs + + + + Component + + + GridView.cs + + + Component + + + MenuControl.cs + + + + + Component + + + MotionDisplay.cs + + + Component + + + MotLinkLabel.cs + + + Component + + + MotValueNumericUpDown.cs + + + + + + \ No newline at end of file diff --git a/Handler/Sub/arImageViewer_Emgu b/Handler/Sub/arImageViewer_Emgu new file mode 160000 index 0000000..b9c8948 --- /dev/null +++ b/Handler/Sub/arImageViewer_Emgu @@ -0,0 +1 @@ +Subproject commit b9c8948aafb3f64a20de0f71c0a78130bec49c57 diff --git a/Handler/Sub/commutil b/Handler/Sub/commutil new file mode 160000 index 0000000..ed05439 --- /dev/null +++ b/Handler/Sub/commutil @@ -0,0 +1 @@ +Subproject commit ed05439991fdddba2d7123b7a89a89245bcd044c diff --git a/Handler/build.bat b/Handler/build.bat new file mode 100644 index 0000000..71f193b --- /dev/null +++ b/Handler/build.bat @@ -0,0 +1 @@ +"C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\msbuild.exe" "C:\Data\Source\(5815) ATV Reel Label Attach Modify & Transfer (WMS)\Source\Handler\Project\STDLabelAttach(ATV).csproj" /v:quiet \ No newline at end of file diff --git a/Handler/default_model.csv b/Handler/default_model.csv new file mode 100644 index 0000000..b5d9488 --- /dev/null +++ b/Handler/default_model.csv @@ -0,0 +1,24 @@ +ver 1 +idx Title pidx MotIndex PosIndex PosTitle Position SpdTitle Speed SpeedAcc Check +1 Default -1 0 -1 0 0 0 False +2 1 0 0 Ready 0 250 400 True +3 1 0 1 FrontPick 45 250 400 True +4 1 0 2 RearPick 487.963 250 400 True +5 1 0 3 FConveyorOff 499.334 250 400 True +6 1 1 0 Ready 0 100 150 True +7 1 1 1 Pick 170 100 150 True +8 1 2 0 Ready 0 100 150 True +9 1 2 1 Pick 166 100 150 True +10 1 3 0 Ready 0 150 400 True +11 1 3 1 LeftIn 0 150 400 True +12 1 3 2 LeftPick 589.029 150 400 True +13 1 3 3 RightIn 577.656 150 400 True +14 1 3 4 RightPick -5.987 150 400 True +15 1 4 0 Ready 0 150 400 True +16 1 4 1 LeftIn 0 150 400 True +17 1 4 2 LeftPick 591.672 150 400 True +18 1 4 3 RightIn 584.861 150 400 True +19 1 4 4 RightPick -12.312 150 400 True +20 1 0 4 RConveyorOff 39.566 250 400 True +21 1 1 2 PickOff 0 100 150 True +22 1 2 2 PickOff 0 100 150 True diff --git a/Handler/euresys/App.config b/Handler/euresys/App.config new file mode 100644 index 0000000..731f6de --- /dev/null +++ b/Handler/euresys/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Handler/euresys/Form1.Designer.cs b/Handler/euresys/Form1.Designer.cs new file mode 100644 index 0000000..259d08c --- /dev/null +++ b/Handler/euresys/Form1.Designer.cs @@ -0,0 +1,75 @@ +namespace euresys +{ + partial class Form1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(90, 27); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(190, 100); + this.button1.TabIndex = 0; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(300, 27); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(190, 100); + this.button2.TabIndex = 0; + this.button2.Text = "qrcode"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Name = "Form1"; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.Form1_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + } +} + diff --git a/Handler/euresys/Form1.cs b/Handler/euresys/Form1.cs new file mode 100644 index 0000000..f9f233a --- /dev/null +++ b/Handler/euresys/Form1.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Euresys.Open_eVision_2_11; + +namespace euresys +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + EImageBW8 EBW8Image1 = new EImageBW8(); // EImageBW8 instance + // EWorldShape EWorldShape1 = new EWorldShape(); // EWorldShape instance + ECircleGauge ECircleGauge1 = new ECircleGauge(); // ECircleGauge instance + ECircle Circle1 = new ECircle(); // ECircle instance + ECircle measuredCircle = null; // ECircle instance + + private void Form1_Load(object sender, EventArgs e) + { + + + + + + + + } + + private void button1_Click(object sender, EventArgs e) + { + try + { + EBW8Image1.Load("C:\\temp\\b.bmp"); + //ECircleGauge1.Attach(EWorldShape1); + + EQRCodeReader EQRCode1 = new EQRCodeReader(); // EQRCodeReader instance + EQRCode[] EQRCode1Result; // EQRCode instances + + + + ECircleGauge1.Dragable = true; + ECircleGauge1.Resizable = true; + ECircleGauge1.Rotatable = true; + //EWorldShape1.SetSensorSize(3289, 2406); + //EWorldShape1.Process(EBW8Image1, true); + ECircleGauge1.Thickness = 40; + ECircleGauge1.TransitionChoice = ETransitionChoice.NthFromEnd; + ECircleGauge1.FilteringThreshold = 3.00f; + ECircleGauge1.SetCenterXY(1537.00f, 1149.50f); + ECircleGauge1.Amplitude = 360f; + ECircleGauge1.Tolerance = 450; + ECircleGauge1.Diameter = 1290.00f; + ECircleGauge1.Measure(EBW8Image1); + + measuredCircle = ECircleGauge1.MeasuredCircle; + } + catch (EException) + { + // Insert exception handling code here + } + } + + private void button2_Click(object sender, EventArgs e) + { + + + EQRCodeReader EQRCode1 = new EQRCodeReader(); // EQRCodeReader instance + EQRCode[] EQRCode1Result; // EQRCode instances + try + { + EBW8Image1.Load("C:\\temp\\a.bmp"); + EQRCode1.DetectionTradeOff = EQRDetectionTradeOff.FavorReliability; //모든방법으로 데이터를 찾는다 + EQRCode1.TimeOut = 1000 * 1000; //timeout (1초) + EQRCode1.SearchField = EBW8Image1; + EQRCode1Result = EQRCode1.Read(); + EQRCode1.SearchField = EBW8Image1; + EQRCode1Result = EQRCode1.Read(); + } + catch (EException) + { + // Insert exception handling code here + } + + } + } +} diff --git a/Handler/euresys/Form1.resx b/Handler/euresys/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Handler/euresys/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/euresys/Program.cs b/Handler/euresys/Program.cs new file mode 100644 index 0000000..ab0c935 --- /dev/null +++ b/Handler/euresys/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace euresys +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Handler/euresys/Properties/AssemblyInfo.cs b/Handler/euresys/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9919785 --- /dev/null +++ b/Handler/euresys/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("euresys")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("euresys")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("5649e784-0bf1-46f4-a87f-f8c2f21dfa33")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Handler/euresys/Properties/Resources.Designer.cs b/Handler/euresys/Properties/Resources.Designer.cs new file mode 100644 index 0000000..eedc861 --- /dev/null +++ b/Handler/euresys/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace euresys.Properties +{ + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 + // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("euresys.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Handler/euresys/Properties/Resources.resx b/Handler/euresys/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Handler/euresys/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/euresys/Properties/Settings.Designer.cs b/Handler/euresys/Properties/Settings.Designer.cs new file mode 100644 index 0000000..436610a --- /dev/null +++ b/Handler/euresys/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace euresys.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Handler/euresys/Properties/Settings.settings b/Handler/euresys/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Handler/euresys/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Handler/run_claude.bat b/Handler/run_claude.bat new file mode 100644 index 0000000..b38a8f4 --- /dev/null +++ b/Handler/run_claude.bat @@ -0,0 +1 @@ +claude --dangerously-skip-permissions diff --git a/Handler/swPLC/.gitattributes b/Handler/swPLC/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/Handler/swPLC/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/Handler/swPLC/.gitignore b/Handler/swPLC/.gitignore new file mode 100644 index 0000000..c2f4601 --- /dev/null +++ b/Handler/swPLC/.gitignore @@ -0,0 +1,8 @@ +*.suo +*.user +*.pdb +bin +obj +desktop.ini +.vs +packages \ No newline at end of file diff --git a/Handler/swPLC/CSetting.cs b/Handler/swPLC/CSetting.cs new file mode 100644 index 0000000..2a08714 --- /dev/null +++ b/Handler/swPLC/CSetting.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AR; + +namespace Project +{ + public class CSetting : AR.Setting + { + #region "swplc" + public string swplc_name { get; set; } + public int swplc_size { get; set; } + #endregion + + public CSetting() + { + + } + + public override void AfterLoad() + { + if (swplc_size < 1) swplc_size = 100; + if (swplc_name.isEmpty()) swplc_name = "swplc"; + + } + + public override void AfterSave() + { + + } + } +} diff --git a/Handler/swPLC/Form1.Designer.cs b/Handler/swPLC/Form1.Designer.cs new file mode 100644 index 0000000..592c696 --- /dev/null +++ b/Handler/swPLC/Form1.Designer.cs @@ -0,0 +1,402 @@ +namespace Project +{ + partial class Form1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); + this.logTextBox1 = new arCtl.LogTextBox(); + this.gridView1 = new arCtl.GridView.GridView(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.button4 = new System.Windows.Forms.Button(); + this.button5 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.button7 = new System.Windows.Forms.Button(); + this.button8 = new System.Windows.Forms.Button(); + this.button9 = new System.Windows.Forms.Button(); + this.button10 = new System.Windows.Forms.Button(); + this.button11 = new System.Windows.Forms.Button(); + this.button12 = new System.Windows.Forms.Button(); + this.button13 = new System.Windows.Forms.Button(); + this.ioPanel1 = new arDev.AjinEXTEK.UI.IOPanel(); + this.statusStrip1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.SuspendLayout(); + // + // timer1 + // + this.timer1.Interval = 250; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1, + this.toolStripStatusLabel2, + this.toolStripStatusLabel3}); + this.statusStrip1.Location = new System.Drawing.Point(0, 564); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(760, 22); + this.statusStrip1.TabIndex = 2; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(73, 17); + this.toolStripStatusLabel1.Text = "AutoControl"; + this.toolStripStatusLabel1.Click += new System.EventHandler(this.toolStripStatusLabel1_Click); + // + // toolStripStatusLabel2 + // + this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; + this.toolStripStatusLabel2.Size = new System.Drawing.Size(118, 17); + this.toolStripStatusLabel2.Text = "toolStripStatusLabel2"; + // + // toolStripStatusLabel3 + // + this.toolStripStatusLabel3.Name = "toolStripStatusLabel3"; + this.toolStripStatusLabel3.Size = new System.Drawing.Size(118, 17); + this.toolStripStatusLabel3.Text = "toolStripStatusLabel3"; + // + // logTextBox1 + // + this.logTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); + this.logTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[0]; + this.logTextBox1.DateFormat = "mm:ss.fff"; + this.logTextBox1.DefaultColor = System.Drawing.Color.LightGray; + this.logTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.logTextBox1.EnableDisplayTimer = true; + this.logTextBox1.EnableGubunColor = true; + this.logTextBox1.Font = new System.Drawing.Font("Consolas", 9F); + this.logTextBox1.ListFormat = "[{0}] {1}"; + this.logTextBox1.Location = new System.Drawing.Point(0, 116); + this.logTextBox1.MaxListCount = ((ushort)(200)); + this.logTextBox1.MaxTextLength = ((uint)(4000u)); + this.logTextBox1.MessageInterval = 50; + this.logTextBox1.Name = "logTextBox1"; + this.logTextBox1.Size = new System.Drawing.Size(760, 193); + this.logTextBox1.TabIndex = 0; + this.logTextBox1.Text = ""; + // + // gridView1 + // + this.gridView1.arVeriticalDraw = false; + this.gridView1.BorderColor = System.Drawing.Color.Black; + this.gridView1.BorderSize = 0; + this.gridView1.ColorList = null; + this.gridView1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.gridView1.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.gridView1.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.gridView1.Location = new System.Drawing.Point(0, 309); + this.gridView1.MatrixSize = new System.Drawing.Point(3, 5); + this.gridView1.MenuBorderSize = 1; + this.gridView1.MenuGap = 5; + this.gridView1.MinimumSize = new System.Drawing.Size(100, 50); + this.gridView1.Name = "gridView1"; + this.gridView1.Names = null; + this.gridView1.ShadowColor = System.Drawing.Color.Transparent; + this.gridView1.showDebugInfo = false; + this.gridView1.ShowIndexString = true; + this.gridView1.ShowNameString = true; + this.gridView1.ShowValueString = true; + this.gridView1.Size = new System.Drawing.Size(760, 100); + this.gridView1.TabIndex = 3; + this.gridView1.Tags = null; + this.gridView1.Text = "gridView1"; + this.gridView1.TextAttachToImage = true; + this.gridView1.Titles = null; + this.gridView1.Values = null; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 3; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F)); + this.tableLayoutPanel1.Controls.Add(this.button1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.button2, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.button3, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.button4, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.button5, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.button6, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.button7, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.button8, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.button9, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.button10, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.button11, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.button12, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.button13, 0, 4); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 409); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 5; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 19.99851F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(760, 155); + this.tableLayoutPanel1.TabIndex = 4; + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.Location = new System.Drawing.Point(3, 34); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(247, 25); + this.button1.TabIndex = 0; + this.button1.Tag = "0"; + this.button1.Text = "Refresh Port"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.Dock = System.Windows.Forms.DockStyle.Fill; + this.button2.Location = new System.Drawing.Point(509, 34); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(248, 25); + this.button2.TabIndex = 0; + this.button2.Tag = "2"; + this.button2.Text = "Refresh Port"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button1_Click); + // + // button3 + // + this.button3.Dock = System.Windows.Forms.DockStyle.Fill; + this.button3.Location = new System.Drawing.Point(256, 34); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(247, 25); + this.button3.TabIndex = 0; + this.button3.Tag = "1"; + this.button3.Text = "Refresh Port"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button1_Click); + // + // button4 + // + this.button4.Dock = System.Windows.Forms.DockStyle.Fill; + this.button4.Location = new System.Drawing.Point(3, 3); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(247, 25); + this.button4.TabIndex = 1; + this.button4.Tag = "0"; + this.button4.Text = "Up"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // button5 + // + this.button5.Dock = System.Windows.Forms.DockStyle.Fill; + this.button5.Location = new System.Drawing.Point(256, 3); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(247, 25); + this.button5.TabIndex = 1; + this.button5.Tag = "1"; + this.button5.Text = "Up"; + this.button5.UseVisualStyleBackColor = true; + this.button5.Click += new System.EventHandler(this.button4_Click); + // + // button6 + // + this.button6.Dock = System.Windows.Forms.DockStyle.Fill; + this.button6.Location = new System.Drawing.Point(509, 3); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(248, 25); + this.button6.TabIndex = 1; + this.button6.Tag = "2"; + this.button6.Text = "Up"; + this.button6.UseVisualStyleBackColor = true; + this.button6.Click += new System.EventHandler(this.button4_Click); + // + // button7 + // + this.button7.Dock = System.Windows.Forms.DockStyle.Fill; + this.button7.Location = new System.Drawing.Point(509, 65); + this.button7.Name = "button7"; + this.button7.Size = new System.Drawing.Size(248, 25); + this.button7.TabIndex = 1; + this.button7.Tag = "2"; + this.button7.Text = "Down"; + this.button7.UseVisualStyleBackColor = true; + this.button7.Click += new System.EventHandler(this.button9_Click); + // + // button8 + // + this.button8.Dock = System.Windows.Forms.DockStyle.Fill; + this.button8.Location = new System.Drawing.Point(256, 65); + this.button8.Name = "button8"; + this.button8.Size = new System.Drawing.Size(247, 25); + this.button8.TabIndex = 1; + this.button8.Tag = "1"; + this.button8.Text = "Down"; + this.button8.UseVisualStyleBackColor = true; + this.button8.Click += new System.EventHandler(this.button9_Click); + // + // button9 + // + this.button9.Dock = System.Windows.Forms.DockStyle.Fill; + this.button9.Location = new System.Drawing.Point(3, 65); + this.button9.Name = "button9"; + this.button9.Size = new System.Drawing.Size(247, 25); + this.button9.TabIndex = 1; + this.button9.Tag = "0"; + this.button9.Text = "Down"; + this.button9.UseVisualStyleBackColor = true; + this.button9.Click += new System.EventHandler(this.button9_Click); + // + // button10 + // + this.button10.Dock = System.Windows.Forms.DockStyle.Fill; + this.button10.Location = new System.Drawing.Point(3, 96); + this.button10.Name = "button10"; + this.button10.Size = new System.Drawing.Size(247, 24); + this.button10.TabIndex = 2; + this.button10.Tag = "0"; + this.button10.Text = "Stop"; + this.button10.UseVisualStyleBackColor = true; + this.button10.Click += new System.EventHandler(this.button12_Click); + // + // button11 + // + this.button11.Dock = System.Windows.Forms.DockStyle.Fill; + this.button11.Location = new System.Drawing.Point(256, 96); + this.button11.Name = "button11"; + this.button11.Size = new System.Drawing.Size(247, 24); + this.button11.TabIndex = 2; + this.button11.Tag = "1"; + this.button11.Text = "Stop"; + this.button11.UseVisualStyleBackColor = true; + this.button11.Click += new System.EventHandler(this.button12_Click); + // + // button12 + // + this.button12.Dock = System.Windows.Forms.DockStyle.Fill; + this.button12.Location = new System.Drawing.Point(509, 96); + this.button12.Name = "button12"; + this.button12.Size = new System.Drawing.Size(248, 24); + this.button12.TabIndex = 2; + this.button12.Tag = "2"; + this.button12.Text = "Stop"; + this.button12.UseVisualStyleBackColor = true; + this.button12.Click += new System.EventHandler(this.button12_Click); + // + // button13 + // + this.tableLayoutPanel1.SetColumnSpan(this.button13, 3); + this.button13.Dock = System.Windows.Forms.DockStyle.Fill; + this.button13.Location = new System.Drawing.Point(3, 126); + this.button13.Name = "button13"; + this.button13.Size = new System.Drawing.Size(754, 26); + this.button13.TabIndex = 3; + this.button13.Text = "Exit"; + this.button13.UseVisualStyleBackColor = true; + this.button13.Click += new System.EventHandler(this.button13_Click); + // + // ioPanel1 + // + this.ioPanel1.BorderColor = System.Drawing.Color.Empty; + this.ioPanel1.BorderSize = 0; + this.ioPanel1.ColorList = null; + this.ioPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.ioPanel1.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.ioPanel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.ioPanel1.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.ioPanel1.Location = new System.Drawing.Point(0, 0); + this.ioPanel1.MatrixSize = new System.Drawing.Point(3, 6); + this.ioPanel1.MenuBorderSize = 1; + this.ioPanel1.MenuGap = 5; + this.ioPanel1.MinimumSize = new System.Drawing.Size(100, 50); + this.ioPanel1.Name = "ioPanel1"; + this.ioPanel1.ShadowColor = System.Drawing.Color.Transparent; + this.ioPanel1.showDebugInfo = false; + this.ioPanel1.ShowPinName = true; + this.ioPanel1.Size = new System.Drawing.Size(760, 116); + this.ioPanel1.TabIndex = 0; + this.ioPanel1.TextAttachToImage = true; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(760, 586); + this.Controls.Add(this.logTextBox1); + this.Controls.Add(this.gridView1); + this.Controls.Add(this.ioPanel1); + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.statusStrip1); + this.MaximizeBox = false; + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.Form1_Load); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private arCtl.LogTextBox logTextBox1; + private System.Windows.Forms.Timer timer1; + private arDev.AjinEXTEK.UI.IOPanel ioPanel1; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2; + private arCtl.GridView.GridView gridView1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Button button7; + private System.Windows.Forms.Button button8; + private System.Windows.Forms.Button button9; + private System.Windows.Forms.Button button10; + private System.Windows.Forms.Button button11; + private System.Windows.Forms.Button button12; + private System.Windows.Forms.Button button13; + } +} + diff --git a/Handler/swPLC/Form1.cs b/Handler/swPLC/Form1.cs new file mode 100644 index 0000000..cdfe5b9 --- /dev/null +++ b/Handler/swPLC/Form1.cs @@ -0,0 +1,762 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Windows.Forms; +using AR; + +namespace Project +{ + public partial class Form1 : Form + { + AR.Log log; + arDev.DIO.IDIO dio; + StateMachine sm; + AR.MemoryMap.Server swplc; + bool exitforce = false; + + byte[] buffer = new byte[16]; + + public Form1() + { + InitializeComponent(); + this.Text = $"{Application.ProductName} ver {Application.ProductVersion}"; + log = new AR.Log(); + log.RaiseMsg += (p1, p2, p3) => { this.logTextBox1.AddMsg(p1, p2, p3); }; + this.FormClosing += Form1_FormClosing; + + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[] { + new arCtl.sLogMessageColor("NORM",Color.Yellow), + new arCtl.sLogMessageColor("ERR",Color.Red), + new arCtl.sLogMessageColor("WARN",Color.Tomato), + new arCtl.sLogMessageColor("INFO",Color.LightSkyBlue) + }; + + + List piname = new List(); + List titles = new List(); + List values = new List(); + + titles.AddRange(new string[] { + "Upper Limit","Reel Detect","Lower Limit", + "Motor Direction(1=DN,0=UP)","Motor Run","Emergency", + }); + piname.AddRange(new string[] { + "X"+((int)eDIName.PORTL_LIM_UP).ToString("X2"), + "X"+((int)eDIName.PORTL_DET_UP).ToString("X2"), + "X"+((int)eDIName.PORTL_LIM_DN).ToString("X2"), + "Y"+((int)eDOName.PORTL_MOT_DIR).ToString("X2"), + "Y"+((int)eDOName.PORTL_MOT_RUN).ToString("X2"),"--" + }); + + titles.AddRange(new string[] { + "Upper Limit","Reel Detect","Lower Limit", + "Motor Direction(1=DN,0=UP)","Motor Run","--", + }); + piname.AddRange(new string[] { + "X"+((int)eDIName.PORTC_LIM_UP).ToString("X2"), + "X"+((int)eDIName.PORTC_DET_UP).ToString("X2"), + "X"+((int)eDIName.PORTC_LIM_DN).ToString("X2"), + "Y"+((int)eDOName.PORTC_MOT_DIR).ToString("X2"), + "Y"+((int)eDOName.PORTC_MOT_RUN).ToString("X2"),"--" + }); + + + titles.AddRange(new string[] { + "Upper Limit","Reel Detect","Lower Limit", + "Motor Direction(1=DN,0=UP)","Motor Run","--" + }); + piname.AddRange(new string[] { + "X"+((int)eDIName.PORTR_LIM_UP).ToString("X2"), + "X"+((int)eDIName.PORTR_DET_UP).ToString("X2"), + "X"+((int)eDIName.PORTR_LIM_DN).ToString("X2"), + "Y"+((int)eDOName.PORTR_MOT_DIR).ToString("X2"), + "Y"+((int)eDOName.PORTR_MOT_RUN).ToString("X2"),"--" + }); + + for (int i = 0; i < titles.Count; i++) + values.Add(false); + + ioPanel1.ColorList = new arDev.AjinEXTEK.UI.ColorListItem[] { + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" }, + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.Lime, BackColor2 = Color.Green, Remark="True" }, + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.Magenta, BackColor2 = Color.Green, Remark="True" }, + new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.SkyBlue, BackColor2 = Color.LightSkyBlue, Remark="True" }, + }; + + this.ioPanel1.setTitle(titles.ToArray()); + this.ioPanel1.setNames(piname.ToArray()); + this.ioPanel1.setValue(values.ToArray()); + this.ioPanel1.Invalidate(); + + //내부버퍼확인 + titles.Clear(); + piname.Clear(); + var valueb = new List(); + for (int i = 0; i < 16; i++) + { + var addr = (eswPLCAddr)i; + piname.Add(i.ToString("X2")); + titles.Add(addr.ToString()); + valueb.Add(0); + } + + gridView1.ColorList = new arCtl.GridView.ColorListItem[] { + new arCtl.GridView.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" }, + new arCtl.GridView.ColorListItem{ BackColor1 = Color.Lime, BackColor2 = Color.Green, Remark="True" }, + new arCtl.GridView.ColorListItem{ BackColor1 = Color.Magenta, BackColor2 = Color.Green, Remark="True" }, + new arCtl.GridView.ColorListItem{ BackColor1 = Color.SkyBlue, BackColor2 = Color.LightSkyBlue, Remark="True" }, + }; + + this.gridView1.setTitle(titles.ToArray()); + this.gridView1.setNames(piname.ToArray()); + this.gridView1.setValue(valueb.ToArray()); + this.gridView1.ShowValueString = true; + this.gridView1.ShowNameString = true; + this.gridView1.ShowIndexString = false; + this.gridView1.Invalidate(); + + } + + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + if (exitforce == false) + { + this.WindowState = FormWindowState.Minimized; + e.Cancel = true; + return; + } + + timer1.Stop(); + dio.Dispose(); + sm.Stop(); + log.AddI("Program terminated"); + log.Flush(); + } + + private void Form1_Load(object sender, EventArgs e) + { + log.AddI("Program started"); + dio = new arDev.AjinEXTEK.DIO(arDev.AjinEXTEK.ELibraryType.AXT);// arDev.AjinEXTEK.DIO(); + if (dio.Init()) + { + dio.IOValueChanged += Dio_IOValueChanged; + dio.RunMonitor(); + log.Add($"DI:{dio.GetDICount}/DO:{dio.GetDOCount}"); + } + else log.AddE($"DIO initialization failed"); + + swplc = new AR.MemoryMap.Server(PUB.Setting.swplc_name, PUB.Setting.swplc_size); + swplc.ValueChanged += Plc_ValueChanged; + swplc.Start(); + + ioPanel1.ItemClick += IoPanel1_ItemClick; + + sm = new AR.StateMachine(); + sm.StepChanged += Sm_StepChanged; + sm.Running += Sm_Running; + sm.SPS += Sm_SPS; + if (dio.IsInit == false) log.AddE($"DIO initialization failed"); + log.Add($"State machine started"); + sm.Start(); + sm.SetNewStep((byte)eSMStep.RUN); + + this.starttime = DateTime.Now; + timer1.Start(); + } + + private void Plc_ValueChanged(object sender, AR.MemoryMap.Core.monitorvalueargs e) + { + + } + private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e) + { + if (e.Direction == arDev.DIO.eIOPINDIR.INPUT) + { + var pin = (eDIName)e.ArrIDX; + + //센서가 활성화될때는 이값을 설정해준다 + //나머지조건은 autocontrol 에서 처리된다. + var value = GetDIValue(pin); + if (value) + { + if (pin == eDIName.PORTL_LIM_DN) WriteBuffer(eswPLCAddr.LPort, 1); + if (pin == eDIName.PORTL_DET_UP) WriteBuffer(eswPLCAddr.LPort, 2); + if (pin == eDIName.PORTL_LIM_UP) WriteBuffer(eswPLCAddr.LPort, 3); + + if (pin == eDIName.PORTC_LIM_DN) WriteBuffer(eswPLCAddr.CPort, 1); + if (pin == eDIName.PORTC_DET_UP) WriteBuffer(eswPLCAddr.CPort, 2); + if (pin == eDIName.PORTC_LIM_UP) WriteBuffer(eswPLCAddr.CPort, 3); + + if (pin == eDIName.PORTR_LIM_DN) WriteBuffer(eswPLCAddr.RPort, 1); + if (pin == eDIName.PORTR_DET_UP) WriteBuffer(eswPLCAddr.RPort, 2); + if (pin == eDIName.PORTR_LIM_UP) WriteBuffer(eswPLCAddr.RPort, 3); + } + + } + else + { + var pin = (eDOName)e.ArrIDX; + + if (pin == eDOName.PORTL_MOT_RUN) + { + if (e.NewValue == false) WriteBuffer(eswPLCAddr.LMotor, 3); + else + { + //방향을 확인해야한다 + var value = GetDOValue(eDOName.PORTL_MOT_DIR) ? 2 : 1; + WriteBuffer(eswPLCAddr.LMotor, (byte)value); + } + } + else if (pin == eDOName.PORTC_MOT_RUN) + { + if (e.NewValue == false) WriteBuffer(eswPLCAddr.CMotor, 3); + else + { + //방향을 확인해야한다 + var value = GetDOValue(eDOName.PORTC_MOT_DIR) ? 2 : 1; + WriteBuffer(eswPLCAddr.CMotor, (byte)value); + } + } + else if (pin == eDOName.PORTR_MOT_RUN) + { + if (e.NewValue == false) WriteBuffer(eswPLCAddr.RMotor, 3); + else + { + //방향을 확인해야한다 + var value = GetDOValue(eDOName.PORTR_MOT_DIR) ? 2 : 1; + WriteBuffer(eswPLCAddr.RMotor, (byte)value); + } + } + } + } + private void IoPanel1_ItemClick(object sender, arDev.AjinEXTEK.UI.IOPanel.ItemClickEventArgs e) + { + if (dio != null && dio.IsInit == false) return; + var name = this.ioPanel1.Names[e.idx]; + if (name.StartsWith("Y")) + { + var pinno = Convert.ToInt32(name.Substring(1), 16); + var pin = (eDOName)pinno; + var cur = dio.GetDOValue(pinno); + dio.SetOutput(pinno, !cur); + log.Add($"value change [X{pinno:X2}] {pin} to {!cur}"); + } + } + bool GetDOValue(eDOName pin) + { + return dio.GetDOValue((int)pin); + } + bool GetDIValue(eDIName pin) + { + if (pin == eDIName.PORTL_LIM_DN || pin == eDIName.PORTC_LIM_DN || pin == eDIName.PORTR_LIM_DN) + { + return !dio.GetDIValue((int)pin); + } + else if (pin == eDIName.PORTL_LIM_UP || pin == eDIName.PORTC_LIM_UP || pin == eDIName.PORTR_LIM_UP) + { + return !dio.GetDIValue((int)pin); + } + else if (pin == eDIName.PORTL_DET_UP || pin == eDIName.PORTC_DET_UP || pin == eDIName.PORTR_DET_UP) + { + return !dio.GetDIValue((int)pin); + } + else if (pin == eDIName.BUT_EMGF) + { + return !dio.GetDIValue((int)pin); + } + else return dio.GetDIValue((int)pin); + } + + + private void Sm_SPS(object sender, EventArgs e) + { + //limit 센서에 의해 자동 멈춤 + if (swplc.Init) + { + AutoStop(); + WriteBuffer(); + CommandProcess(); + } + } + void CommandProcess() + { + //시스템 상태값 0:7 기록 + swplc.Write(0, buffer, 0, 12); + + //명령어 가져오기 7:3개의 데이터 확인 + if (swplc.ReadBytes(12, 3, out byte[] plcbuffer)) + { + //내부버퍼에 상태를 기록한다 + Array.Copy(plcbuffer, 0, this.buffer, 12, plcbuffer.Length); + } + + //command value + var lcmd = ReadBuffer(eswPLCAddr.LCmd); + var ccmd = ReadBuffer(eswPLCAddr.CCmd); + var rcmd = ReadBuffer(eswPLCAddr.RCmd); + + //left command check + if (lcmd == 1) MotorControl(eMotList.Left, eMotControl.Down); + else if (lcmd == 2) MotorControl(eMotList.Left, eMotControl.Up); + else if (lcmd == 3) MotorControl(eMotList.Left, eMotControl.Stop); + else if (lcmd == 4) MotorRefresh(eMotList.Left); + if (lcmd < 4 && ReadBuffer(eswPLCAddr.LSts) != 0) WriteBuffer(eswPLCAddr.LSts, 0); + + //center command check + if (ccmd == 1) MotorControl(eMotList.Center, eMotControl.Down); + else if (ccmd == 2) MotorControl(eMotList.Center, eMotControl.Up); + else if (ccmd == 3) MotorControl(eMotList.Center, eMotControl.Stop); + else if (ccmd == 4) MotorRefresh(eMotList.Center); + if (ccmd < 4 && ReadBuffer(eswPLCAddr.CSts) != 0) WriteBuffer(eswPLCAddr.CSts, 0); + + //right command check + if (rcmd == 1) MotorControl(eMotList.Right, eMotControl.Down); + else if (rcmd == 2) MotorControl(eMotList.Right, eMotControl.Up); + else if (rcmd == 3) MotorControl(eMotList.Right, eMotControl.Stop); + else if (rcmd == 4) MotorRefresh(eMotList.Right); + if (rcmd < 4 && ReadBuffer(eswPLCAddr.RSts) != 0) WriteBuffer(eswPLCAddr.RSts, 0); + } + + /// + /// 모터를 down -> up 합니다. + /// + /// + /// + void MotorRefresh(eMotList mot) + { + eswPLCAddr address = (eswPLCAddr)((int)eswPLCAddr.LSts + (int)mot); + var Sts = ReadBuffer(address); + + //상태값을 변경한다 + if (Sts == 0) //처음시작하는경우이다 + { + motortime[(int)mot] = DateTime.Now; + MotorControl(mot, eMotControl.Down); + WriteBuffer(address, 1); + log.Add($"Motor[{mot}] Refresh #1 : Down,Addr={address}"); + } + else if (Sts == 1) //3초간 내린다. 센서가 감지되면 계속 내려야 한다 + { + //low limit check + if (mot == eMotList.Left && GetDIValue(eDIName.PORTL_LIM_DN)) + { + log.Add($"Motor[{mot}] Refresh #2 : Down Limit,Addr={address}"); + MotorControl(mot, eMotControl.Stop); + WriteBuffer(address, 2); + } + else if (mot == eMotList.Center && GetDIValue(eDIName.PORTC_LIM_DN)) + { + log.Add($"Motor[{mot}] Refresh #2 : Down Limit,Addr={address}"); + MotorControl(mot, eMotControl.Stop); + WriteBuffer(address, 2); + } + else if (mot == eMotList.Right && GetDIValue(eDIName.PORTR_LIM_DN)) + { + log.Add($"Motor[{mot}] Refresh #2 : Down Limit,Addr={address}"); + MotorControl(mot, eMotControl.Stop); + WriteBuffer(address, 2); + } + else if (mot == eMotList.Left && GetDIValue(eDIName.PORTL_DET_UP)) + { + return; + } + else if (mot == eMotList.Center && GetDIValue(eDIName.PORTC_DET_UP)) + { + return; + } + else if (mot == eMotList.Right && GetDIValue(eDIName.PORTR_DET_UP)) + { + return; + } + else + { + var ts = DateTime.Now - motortime[(int)mot]; + if (ts.TotalSeconds > 3) + { + log.Add($"Motor[{mot}] Refresh #2 : Down Time Over,Addr={address}"); + MotorControl(mot, eMotControl.Stop); + WriteBuffer(address, 2); + } + } + } + else if (Sts == 2) //다시 올린다 + { + log.Add($"Motor[{mot}] Refresh #3 : Up Addr={address}"); + MotorControl(mot, eMotControl.Up); + motortime[(int)mot] = DateTime.Now; + WriteBuffer(address, 3); + } + else if (Sts == 3) //올라가는건 + { + WriteBuffer(address, 0); + eswPLCAddr addressCmd = (eswPLCAddr)((int)eswPLCAddr.LCmd + (int)mot); + if (addressCmd == eswPLCAddr.CCmd) + { + + } + log.Add($"Refresh[{mot}] Complete Addr={address}/{addressCmd} Reset"); + swplc.Write((int)addressCmd, 0); + } + } + int[] motorseq = new int[] { 0, 0, 0 }; + DateTime[] motortime = new DateTime[] { DateTime.Now, DateTime.Now, DateTime.Now }; + + void MotorControl(eMotList mot, eMotControl cmd) + { + if (cmd == eMotControl.Stop) + { + eDOName pin = eDOName.PORTL_MOT_RUN; + if (mot == eMotList.Center) pin = eDOName.PORTC_MOT_RUN; + else if (mot == eMotList.Right) pin = eDOName.PORTR_MOT_RUN; + + //출력이켜져있다면 끈다 + if (GetDOValue(pin)) SetOutput(pin, false); + } + else if (cmd == eMotControl.Down || cmd == eMotControl.Up) + { + var dir = cmd == eMotControl.Down ? true : false; + eDOName pinDir = eDOName.PORTL_MOT_DIR; + if (mot == eMotList.Center) pinDir = eDOName.PORTC_MOT_DIR; + else if (mot == eMotList.Right) pinDir = eDOName.PORTR_MOT_DIR; + + eDOName pinRun = eDOName.PORTL_MOT_RUN; + if (mot == eMotList.Center) pinRun = eDOName.PORTC_MOT_RUN; + else if (mot == eMotList.Right) pinRun = eDOName.PORTR_MOT_RUN; + + if (GetDOValue(pinDir) != dir) SetOutput(pinDir, dir); + if (GetDOValue(pinRun) == false) SetOutput(pinRun, true); + } + + } + bool SetOutput(eDOName pin, bool value) + { + return dio.SetOutput((int)pin, value); + } + + /// + /// Check the value of internal temporary buffer + /// + /// + /// + byte ReadBuffer(eswPLCAddr addr) + { + return buffer[(int)addr]; + } + void WriteBuffer(eswPLCAddr addr, byte value) + { + if (addr >= eswPLCAddr.LCmd) throw new Exception("Command must be written directly to swplc"); + buffer[(int)addr] = value; + } + + + + void WriteBuffer() + { + var idx = 0; + + //현재상태를 기록합니다 + var bReady = dio != null && dio.IsInit; + buffer[idx++] = bReady ? (byte)1 : (byte)2; + + //모터상태값3개는 동작시 발생한다 + idx++; + idx++; + idx++; + + } + + + + /// + /// Automatically stops when limit sensor and detect are detected. + /// + void AutoStop() + { + if (dio == null || dio.IsInit == false || autocontrol == false) return; + + //모터가 동작중에만 처리한다. + var motrunL = dio.GetDOValue((int)eDOName.PORTL_MOT_RUN); + var motrunC = dio.GetDOValue((int)eDOName.PORTC_MOT_RUN); + var motrunR = dio.GetDOValue((int)eDOName.PORTR_MOT_RUN); + if (motrunL) + { + if (GetDIValue(eDIName.BUT_EMGF)) + { + dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false); + } + else + { + var dirDn = dio.GetDOValue((int)eDOName.PORTL_MOT_DIR); + var limUp = GetDIValue(eDIName.PORTL_LIM_UP); + var detect = GetDIValue(eDIName.PORTL_DET_UP); + var limDn = GetDIValue(eDIName.PORTL_LIM_DN); + if (dirDn == false) + { + if (detect) + dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false); + else if (limUp) + dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false); + } + else + { + if (limDn) + dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false); + } + } + + } + if (motrunC) + { + if (GetDIValue(eDIName.BUT_EMGF)) + { + dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false); + } + else + { + var dirDn = dio.GetDOValue((int)eDOName.PORTC_MOT_DIR); + var limUp = GetDIValue(eDIName.PORTC_LIM_UP); + var detect = GetDIValue(eDIName.PORTC_DET_UP); + var limDn = GetDIValue(eDIName.PORTC_LIM_DN); + if (dirDn == false) + { + if (detect) + dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false); + else if (limUp) + dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false); + } + else + { + if (limDn) + dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false); + } + } + + } + if (motrunR) + { + if (GetDIValue(eDIName.BUT_EMGF)) + { + dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false); + } + else + { + var dirDn = dio.GetDOValue((int)eDOName.PORTR_MOT_DIR); + var limUp = GetDIValue(eDIName.PORTR_LIM_UP); + var detect = GetDIValue(eDIName.PORTR_DET_UP); + var limDn = GetDIValue(eDIName.PORTR_LIM_DN); + if (dirDn == false) + { + if (detect) + dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false); + else if (limUp) + dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false); + } + else + { + if (limDn) + dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false); + } + } + + } + } + private void Sm_Running(object sender, AR.StateMachine.RunningEventArgs e) + { + //throw new NotImplementedException(); + var step = (eSMStep)e.Step; + switch (step) + { + case eSMStep.RUN: + break; + } + } + + private void Sm_StepChanged(object sender, AR.StateMachine.StepChangeEventArgs e) + { + var step = (eSMStep)e.New; + log.Add($"Step Changed : {step}"); + + } + + DateTime starttime; + bool startminimize = false; + private void timer1_Tick(object sender, EventArgs e) + { + //io상태표시 시작시 최소한한다 230823 + if (startminimize == false && this.IsDisposed == false && this.Disposing == false) + { + var ts = DateTime.Now - starttime; + if (ts.TotalSeconds > 3) + { + this.WindowState = FormWindowState.Minimized; + startminimize = true; + } + } + + + var idx = 0; + if (dio != null && dio.IsInit) + { + + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTL_LIM_UP)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTL_DET_UP)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTL_LIM_DN)); + ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTL_MOT_DIR)); + ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTL_MOT_RUN)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.BUT_EMGF)); + + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTC_LIM_UP)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTC_DET_UP)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTC_LIM_DN)); + ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTC_MOT_DIR)); + ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTC_MOT_RUN)); + ioPanel1.setValue(idx++, false); + + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTR_LIM_UP)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTR_DET_UP)); + ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTR_LIM_DN)); + ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTR_MOT_DIR)); + ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTR_MOT_RUN)); + ioPanel1.setValue(idx++, false); + } + else + { + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + ioPanel1.setValue(idx++, false); + } + ioPanel1.Invalidate(); + + //내부버퍼표시 + for (int i = 0; i < 16; i++) + { + var addr = (eswPLCAddr)i; + var val = ReadBuffer(addr); + var title = addr.ToString(); + if (addr == eswPLCAddr.LCmd || addr == eswPLCAddr.CCmd || addr == eswPLCAddr.RCmd) + { + if (val == 0) title += "(--)"; + else if (val == 1) title += "(up)"; + else if (val == 2) title += "(up)"; + else if (val == 3) title += "(stop)"; + else if (val == 4) title += "(refresh)"; + gridView1.setTitle(i, title); + } + else if (addr == eswPLCAddr.LSts || addr == eswPLCAddr.CSts || addr == eswPLCAddr.RSts) + { + if (val == 0) title += "(--)"; + else title += "(~run~)"; + gridView1.setTitle(i, title); + } + else if (addr == eswPLCAddr.LMotor || addr == eswPLCAddr.CMotor || addr == eswPLCAddr.RMotor) + { + if (val == 0) title += "(--)"; + else if (val == 1) title += "(Down)"; + else if (val == 2) title += "(up)"; + else if (val == 3) title += "(stop)"; + gridView1.setTitle(i, title); + } + else if (addr == eswPLCAddr.LPort || addr == eswPLCAddr.CPort || addr == eswPLCAddr.RPort) + { + if (val == 0) title += "(--)"; + else if (val == 1) title += "(Limit -)"; + else if (val == 2) title += "(Reel Detect)"; + else if (val == 3) title += "(Limit +)"; + gridView1.setTitle(i, title); + } + gridView1.setValue(i, val); + } + gridView1.Invalidate(); + + toolStripStatusLabel1.ForeColor = autocontrol ? Color.Green : Color.Black; + toolStripStatusLabel2.Text = swplc.Init ? "Connected" : "Disconnected"; + toolStripStatusLabel2.ForeColor = swplc.Init ? Color.Black : Color.Red; + toolStripStatusLabel3.Text = $"Loop({sm.Loop_ms:N0}ms)"; + } + + bool autocontrol = true; + + private void toolStripStatusLabel1_Click(object sender, EventArgs e) + { + this.autocontrol = !this.autocontrol; + } + + private void button1_Click(object sender, EventArgs e) + { + var but = sender as Button; + var butno = int.Parse(but.Tag.ToString()); + swplc.Write((int)eswPLCAddr.LCmd + butno, 4); //refresh port + } + + private void button4_Click(object sender, EventArgs e) + { + var but = sender as Button; + var butno = int.Parse(but.Tag.ToString()); + if (butno == 0) + MotorControl(eMotList.Left, eMotControl.Up); + else if (butno == 1) + MotorControl(eMotList.Center, eMotControl.Up); + else if (butno == 2) + MotorControl(eMotList.Right, eMotControl.Up); + } + + private void button9_Click(object sender, EventArgs e) + { + var but = sender as Button; + var butno = int.Parse(but.Tag.ToString()); + if (butno == 0) + MotorControl(eMotList.Left, eMotControl.Down); + else if (butno == 1) + MotorControl(eMotList.Center, eMotControl.Down); + else if (butno == 2) + MotorControl(eMotList.Right, eMotControl.Down); + } + + private void button11_Click(object sender, EventArgs e) + { + + } + + private void button12_Click(object sender, EventArgs e) + { + var but = sender as Button; + var butno = int.Parse(but.Tag.ToString()); + if (butno == 0) + MotorControl(eMotList.Left, eMotControl.Stop); + else if (butno == 1) + MotorControl(eMotList.Center, eMotControl.Stop); + else if (butno == 2) + MotorControl(eMotList.Right, eMotControl.Stop); + } + + private void button13_Click(object sender, EventArgs e) + { + var dlg =UTIL.MsgQ("Do you want to exit the program?\nThis is a program that monitors I/O malfunction.It is recommended to run at all times"); + if (dlg != DialogResult.Yes) return; + this.exitforce = true; + this.Close(); + } + } +} diff --git a/Handler/swPLC/Form1.resx b/Handler/swPLC/Form1.resx new file mode 100644 index 0000000..49808f7 --- /dev/null +++ b/Handler/swPLC/Form1.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 104, 17 + + \ No newline at end of file diff --git a/Handler/swPLC/PUB.cs b/Handler/swPLC/PUB.cs new file mode 100644 index 0000000..d7b96de --- /dev/null +++ b/Handler/swPLC/PUB.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.PerformanceData; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + public static class PUB + { + private static CSetting setting; + public static CSetting Setting + { + get + { + if(setting == null) + { + setting = new CSetting(); + setting.Load(); + } + return setting; + } + } + } +} diff --git a/Handler/swPLC/Program.cs b/Handler/swPLC/Program.cs new file mode 100644 index 0000000..0f72f51 --- /dev/null +++ b/Handler/swPLC/Program.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Threading; +using System.Windows.Forms; + +namespace Project +{ + internal static class Program + { + /// + /// 해당 애플리케이션의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + + Application.EnableVisualStyles(); + if (CheckSingleInstance(false) == false) return; + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + + + /// + /// 중복실행 방지 체크 + /// + /// 단일 인스턴스인 경우 true, 중복실행인 경우 false + static bool CheckSingleInstance(bool prompt = true) + { + string processName = Process.GetCurrentProcess().ProcessName; + Process[] processes = Process.GetProcessesByName(processName); + + if (processes.Length > 1) + { + if (prompt == false) return false; + + // 중복실행 감지 + string message = $"⚠️ {Application.ProductName} 프로그램이 이미 실행 중입니다!\n\n" + + "동시에 여러 개의 프로그램을 실행할 수 없습니다.\n\n" + + "해결방법을 선택하세요:"; + + var result = MessageBox.Show(message + "\n\n예(Y): 기존 프로그램을 종료하고 새로 시작\n아니오(N): 현재 실행을 취소", + "중복실행 감지", + MessageBoxButtons.YesNo, + MessageBoxIcon.Warning); + + if (result == DialogResult.Yes) + { + // 기존 프로세스들을 종료 + try + { + int currentProcessId = Process.GetCurrentProcess().Id; + foreach (Process process in processes) + { + if (process.Id != currentProcessId) + { + process.Kill(); + process.WaitForExit(3000); // 3초 대기 + } + } + + // 잠시 대기 후 계속 진행 + Thread.Sleep(1000); + return true; + } + catch (Exception ex) + { + MessageBox.Show($"기존 프로그램 종료 중 오류가 발생했습니다:\n{ex.Message}\n\n" + + "작업관리자에서 수동으로 종료해주세요.", + "오류", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + else + { + // 현재 실행을 취소 + return false; + } + } + + return true; // 단일 인스턴스 + } + } +} diff --git a/Handler/swPLC/Properties/AssemblyInfo.cs b/Handler/swPLC/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..846a133 --- /dev/null +++ b/Handler/swPLC/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("Sofware PLC")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("ATK")] +[assembly: AssemblyProduct("swPLC")] +[assembly: AssemblyCopyright("Copyright © ATK 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("efe600a7-d7b3-4d0a-a6a5-e95032733d11")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("23.07.24.0000")] +[assembly: AssemblyFileVersion("23.07.24.0000")] diff --git a/Handler/swPLC/Properties/Resources.Designer.cs b/Handler/swPLC/Properties/Resources.Designer.cs new file mode 100644 index 0000000..c327858 --- /dev/null +++ b/Handler/swPLC/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Project.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 + /// 재정의합니다. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Handler/swPLC/Properties/Resources.resx b/Handler/swPLC/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Handler/swPLC/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Handler/swPLC/Properties/Settings.Designer.cs b/Handler/swPLC/Properties/Settings.Designer.cs new file mode 100644 index 0000000..8fd7a45 --- /dev/null +++ b/Handler/swPLC/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Handler/swPLC/Properties/Settings.settings b/Handler/swPLC/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Handler/swPLC/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Handler/swPLC/README.md b/Handler/swPLC/README.md new file mode 100644 index 0000000..c1a956b --- /dev/null +++ b/Handler/swPLC/README.md @@ -0,0 +1 @@ +# swPLC \ No newline at end of file diff --git a/Handler/swPLC/app.config b/Handler/swPLC/app.config new file mode 100644 index 0000000..3e0e37c --- /dev/null +++ b/Handler/swPLC/app.config @@ -0,0 +1,3 @@ + + + diff --git a/Handler/swPLC/enumData.cs b/Handler/swPLC/enumData.cs new file mode 100644 index 0000000..d6858bb --- /dev/null +++ b/Handler/swPLC/enumData.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + + public enum eSMStep + { + IDLE, + RUN, + } + public enum eMotList + { + Left=0, + Center, + Right, + } + public enum eMotControl + { + Stop, + Down, + Up, + + } +} diff --git a/Handler/swPLC/run_claude.bat b/Handler/swPLC/run_claude.bat new file mode 100644 index 0000000..b38a8f4 --- /dev/null +++ b/Handler/swPLC/run_claude.bat @@ -0,0 +1 @@ +claude --dangerously-skip-permissions diff --git a/Handler/swPLC/swPLC.csproj b/Handler/swPLC/swPLC.csproj new file mode 100644 index 0000000..4302296 --- /dev/null +++ b/Handler/swPLC/swPLC.csproj @@ -0,0 +1,111 @@ + + + + + Debug + AnyCPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79} + WinExe + Project + SoftwarePLC + v4.8 + 512 + true + + + + x86 + true + full + false + ..\..\..\STDLabelAttach%28ATV%29\swPLC\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\DLL\arCommUtil.dll + + + False + ..\DLL\arControl.Net4.dll + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {62370293-92aa-4b73-b61f-5c343eeb4ded} + arAjinextek_Union + + + {14e8c9a5-013e-49ba-b435-efefc77dd623} + CommData + + + {d54444f7-1d85-4d5d-b1d1-10d040141a91} + arCommSM + + + {140af52a-5986-4413-bf02-8ea55a61891b} + MemoryMapCore + + + + \ No newline at end of file diff --git a/Handler/swPLC/swPLC.sln b/Handler/swPLC/swPLC.sln new file mode 100644 index 0000000..c92f15a --- /dev/null +++ b/Handler/swPLC/swPLC.sln @@ -0,0 +1,78 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 15 for Windows Desktop +VisualStudioVersion = 15.0.28307.1000 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "swPLC", "swPLC.csproj", "{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arCommSM", "..\Sub\CommSM\arCommSM.csproj", "{D54444F7-1D85-4D5D-B1D1-10D040141A91}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommData", "..\Sub\CommData\CommData.csproj", "{14E8C9A5-013E-49BA-B435-EFEFC77DD623}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Import", "Import", "{946678A3-F25F-44B8-82E7-2E8437C6B33D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MemoryMapCore", "..\Sub\MemoryMapCore\MemoryMapCore.csproj", "{140AF52A-5986-4413-BF02-8EA55A61891B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arAjinextek_Union", "..\Sub\arAjinextek\Library\arAjinextek_Union\arAjinextek_Union.csproj", "{62370293-92AA-4B73-B61F-5C343EEB4DED}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|x86.ActiveCfg = Debug|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|x86.Build.0 = Debug|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|Any CPU.Build.0 = Release|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|x86.ActiveCfg = Release|Any CPU + {EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|x86.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.ActiveCfg = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.Build.0 = Debug|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.Build.0 = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.ActiveCfg = Release|Any CPU + {D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.ActiveCfg = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.Build.0 = Debug|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.Build.0 = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.ActiveCfg = Release|Any CPU + {14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.ActiveCfg = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.Build.0 = Debug|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.Build.0 = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.ActiveCfg = Release|Any CPU + {140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.Build.0 = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x86.ActiveCfg = Debug|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x86.Build.0 = Debug|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Any CPU.Build.0 = Release|Any CPU + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x86.ActiveCfg = Release|x86 + {62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {D54444F7-1D85-4D5D-B1D1-10D040141A91} = {946678A3-F25F-44B8-82E7-2E8437C6B33D} + {140AF52A-5986-4413-BF02-8EA55A61891B} = {946678A3-F25F-44B8-82E7-2E8437C6B33D} + {62370293-92AA-4B73-B61F-5C343EEB4DED} = {946678A3-F25F-44B8-82E7-2E8437C6B33D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A1453016-E3CB-4CF9-97A2-94AAAAD23E11} + EndGlobalSection +EndGlobal diff --git a/Handler/todo.md b/Handler/todo.md new file mode 100644 index 0000000..189181f --- /dev/null +++ b/Handler/todo.md @@ -0,0 +1,278 @@ +# ATV Reel Label Attach Project - .cs Files List (Excluding Sub folder) + +## Project Structure + +### Main Application (Project/) +- [O] Project/Button/AIR.cs +- [O] Project/Button/RESET.cs +- [O] Project/Button/START.cs +- [O] Project/Button/STOP.cs +- [O] Project/Class/CHistoryJOB.cs +- [O] Project/Class/CHistorySIDRef.cs +- [O] Project/Class/Command.cs +- [O] Project/Class/CResult.cs +- [O] Project/Class/EEMStatus.cs +- [O] Project/Class/Enum_Mot.cs +- [O] Project/Class/Enum_MotPosition.cs +- [O] Project/Class/EnumData.cs +- Project/Class/FTP/EventArgs.cs +- [O] Project/Class/FTP/FTPClient.cs +- Project/Class/FTP/FTPdirectory.cs +- Project/Class/FTP/FTPfileInfo.cs +- Project/Class/IFTPClient.cs +- [O] Project/Class/ItemData.cs +- [O] Project/Class/JoystickRaw.cs +- [O] Project/Class/KeyenceBarcodeData.cs +- [O] Project/Class/ModelInfoM.cs +- [O] Project/Class/ModelInfoV.cs +- [O] Project/Class/PositionData.cs +- [O] Project/Class/Reel.cs +- [O] Project/Class/RegexPattern.cs +- [O] Project/Class/sPositionData.cs +- [O] Project/Class/StatusMessage.cs +- [O] Project/Class/VisionData.cs +- [O] Project/Controller/ModelController.cs +- [O] Project/Controller/StateController.cs +- [O] Project/DataSet1.cs +- [O] Project/DataSet11.Designer.cs +- [O] Project/Device/_CONNECTION.cs +- [O] Project/Device/KeyenceBarcode.cs +- [O] Project/Device/SATOPrinter.cs +- [O] Project/Device/SATOPrinterAPI.cs +- [O] Project/Device/StateMachine.cs +- [O] Project/Device/TowerLamp.cs + +### Dialog Forms (Project/Dialog/) +- [O] Project/Dialog/Debug/fSendInboutData.cs +- [O] Project/Dialog/Debug/fSendInboutData.Designer.cs +- [O] Project/Dialog/DIOMonitor.cs +- [O] Project/Dialog/DIOMonitor.Designer.cs +- [O] Project/Dialog/fDataBufferSIDRef.cs +- [O] Project/Dialog/fDataBufferSIDRef.Designer.cs +- [O] Project/Dialog/fDebug.cs +- [O] Project/Dialog/fDebug.Designer.cs +- [O] Project/Dialog/fFinishJob.cs +- [O] Project/Dialog/fFinishJob.Designer.cs +- [O] Project/Dialog/fHistory.cs +- [O] Project/Dialog/fHistory.Designer.cs +- [O] Project/Dialog/fImp.cs +- [O] Project/Dialog/fImp.Designer.cs +- [O] Project/Dialog/fLoaderInfo.cs +- [O] Project/Dialog/fLoaderInfo.Designer.cs +- [O] Project/Dialog/fLog.cs +- [O] Project/Dialog/fLog.Designer.cs +- [O] Project/Dialog/fManualPrint.cs +- [O] Project/Dialog/fManualPrint.Designer.cs +- [O] Project/Dialog/fManualPrint0.cs +- [O] Project/Dialog/fManualPrint0.Designer.cs +- [O] Project/Dialog/fMessageInput.cs +- [O] Project/Dialog/fMessageInput.Designer.cs +- [O] Project/Dialog/fNewSID.cs +- [O] Project/Dialog/fNewSID.Designer.cs +- [O] Project/Dialog/fPickerMove.cs +- [O] Project/Dialog/fPickerMove.Designer.cs +- [O] Project/Dialog/fSavePosition.cs +- [O] Project/Dialog/fSavePosition.Designer.cs +- [O] Project/Dialog/fSelectCustInfo.cs +- [O] Project/Dialog/fSelectCustInfo.Designer.cs +- [O] Project/Dialog/fSelectDataList.cs +- [O] Project/Dialog/fSelectDataList.Designer.cs +- [O] Project/Dialog/fSelectDay.cs +- [O] Project/Dialog/fSelectDay.Designer.cs +- [O] Project/Dialog/fSelectJob.cs +- [O] Project/Dialog/fSelectJob.Designer.cs +- [O] Project/Dialog/fSelectResult.cs +- [O] Project/Dialog/fSelectResult.Designer.cs +- [O] Project/Dialog/fSelectSID.cs +- [O] Project/Dialog/fSelectSID.Designer.cs +- [O] Project/Dialog/fSelectSIDInformation.cs +- [O] Project/Dialog/fSelectSIDInformation.Designer.cs +- [O] Project/Dialog/fSIDQty.cs +- [O] Project/Dialog/fSIDQty.Designer.cs +- [O] Project/Dialog/fswPLC.cs +- [O] Project/Dialog/fswPLC.Designer.cs +- [O] Project/Dialog/fVAR.cs +- [O] Project/Dialog/fVAR.Designer.cs +- [O] Project/Dialog/fZPLEditor.cs +- [O] Project/Dialog/fZPLEditor.Designer.cs +- [O] Project/Dialog/Model_Motion.cs +- [O] Project/Dialog/Model_Motion.Designer.cs +- [O] Project/Dialog/Model_Motion_Desc.cs +- [O] Project/Dialog/Model_Motion_Desc.Designer.cs +- [O] Project/Dialog/Model_Operation.cs +- [O] Project/Dialog/Model_Operation.Designer.cs +- [O] Project/Dialog/Motion_MoveToGroup.cs +- [O] Project/Dialog/Motion_MoveToGroup.Designer.cs +- [O] Project/Dialog/Quick_Control.cs.cs +- [O] Project/Dialog/Quick_Control.cs.Designer.cs +- [O] Project/Dialog/RegExPrintRule.cs +- [O] Project/Dialog/RegExPrintRule.Designer.cs +- [O] Project/Dialog/RegExRule.cs +- [O] Project/Dialog/RegExRule.Designer.cs +- [O] Project/Dialog/RegExTest.cs +- [O] Project/Dialog/RegExTest.Designer.cs +- [O] Project/Dialog/START.cs +- [O] Project/Dialog/UserControl1.cs +- [O] Project/Dialog/UserControl1.Designer.cs + +### Main Form & Data +- [O] Project/DSList.cs +- [O] Project/DSList.Designer.cs +- [O] Project/DSSetup.Designer.cs +- [O] Project/dsWMS.Designer.cs +- [O] Project/fMain.cs +- [O] Project/fMain.Designer.cs + +### Managers & Database +- [O] Project/Manager/DataBaseManagerCount.cs +- [O] Project/Manager/DatabaseManagerHistory.cs +- [O] Project/Manager/DatabaseManagerSIDHistory.cs +- [O] Project/Manager/DBHelper.cs +- [O] Project/Manager/ModelManager.cs +- [O] Project/Model1.Context1.cs +- [O] Project/Model11.cs +- [O] Project/Model11.Designer.cs + +### Core System +- [O] Project/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs +- [O] Project/Program.cs +- [O] Project/Properties/AssemblyInfo.cs +- [O] Project/Properties/Resources.Designer.cs +- [O] Project/Properties/Settings.Designer.cs +- [O] Project/Pub.cs + +### Runtime Code (Project/RunCode/) +- [O] Project/RunCode/_01_Input_Events.cs +- [O] Project/RunCode/_02_Output_Events.cs +- [O] Project/RunCode/_03_Interlock_Events.cs +- [O] Project/RunCode/_04_Flag_Events.cs +- [O] Project/RunCode/_97_Utility.cs +- [O] Project/RunCode/_99_System_Shutdown.cs +- [O] Project/RunCode/_Close.cs +- [O] Project/RunCode/_Motion.cs +- [O] Project/RunCode/_SM_RUN.cs +- [O] Project/RunCode/_Vision.cs + +#### Device Controls +- [O] Project/RunCode/Device/_Joystick.cs +- [O] Project/RunCode/Device/_Keyence.cs +- [O] Project/RunCode/Device/_Keyence_Rule_ReturnReel.cs + +#### Display & UI Updates +- [O] Project/RunCode/Display/_Interval_1min.cs +- [O] Project/RunCode/Display/_Interval_250ms.cs +- [O] Project/RunCode/Display/_Interval_500ms.cs +- [O] Project/RunCode/Display/_Interval_5min.cs +- [O] Project/RunCode/Display/_TMDisplay.cs +- [O] Project/RunCode/Display/_UpdateStatusMessage.cs +- [O] Project/RunCode/Display/DisplayTextHandler.cs +- [O] Project/RunCode/Display/GetErrorMessage.cs + +#### Main State Machine +- [O] Project/RunCode/Main/_SM_MAIN_ERROR.cs + +#### Run Sequences +- [O] Project/RunCode/RunSequence/_RUN_MOT_PORT.cs +- [O] Project/RunCode/RunSequence/0_RUN_STARTCHK_SW.cs +- [O] Project/RunCode/RunSequence/1_RUN_STARTCHK_HW.cs +- [O] Project/RunCode/RunSequence/2_RUN_ROOT_SEQUENCE.cs +- [O] Project/RunCode/RunSequence/3_KEYENCE_READ.cs +- [O] Project/RunCode/RunSequence/4_PICKER_ON.cs +- [O] Project/RunCode/RunSequence/4_PICKER_RETRY.cs +- [O] Project/RunCode/RunSequence/5_PICKER_OFF.cs +- [O] Project/RunCode/RunSequence/6.PRINT.cs +- [O] Project/RunCode/RunSequence/7_PRINTER_ON.cs +- [O] Project/RunCode/RunSequence/8_PRINTER_OFF.cs +- [O] Project/RunCode/RunSequence/9_QRValid.cs +- [O] Project/RunCode/RunSequence/90_SaveData.cs + +#### State Machine Components +- [O] Project/RunCode/StateMachine/_Events.cs +- [O] Project/RunCode/StateMachine/_Loop.cs +- [O] Project/RunCode/StateMachine/_SM_DIO.cs +- [O] Project/RunCode/StateMachine/_SM_RUN.cs +- [O] Project/RunCode/StateMachine/_SPS.cs +- [O] Project/RunCode/StateMachine/_SPS_BarcodeProcess.cs +- [O] Project/RunCode/StateMachine/_SPS_RecvQRProcess.cs + +#### Step Implementations +- [O] Project/RunCode/Step/_STEP_FINISH.cs +- [O] Project/RunCode/Step/_STEP_HOME_CONFIRM.cs +- [O] Project/RunCode/Step/_STEP_HOME_DELAY.cs +- [O] Project/RunCode/Step/_STEP_HOME_FULL.cs +- [O] Project/RunCode/Step/_STEP_HOME_QUICK.cs +- [O] Project/RunCode/Step/_STEP_IDLE.cs +- [O] Project/RunCode/Step/_STEP_INIT.cs +- [O] Project/RunCode/Step/_STEP_RUN.cs + +### Settings & Configuration (Project/Setting/) +- [O] Project/Setting/CounterSetting.cs +- [O] Project/Setting/fSetting.cs +- [O] Project/Setting/fSetting.Designer.cs +- [O] Project/Setting/fSetting_ErrorMessage.cs +- [O] Project/Setting/fSetting_ErrorMessage.Designer.cs +- [O] Project/Setting/fSetting_IOMessage.cs +- [O] Project/Setting/fSetting_IOMessage.Designer.cs +- [O] Project/Setting/fSystem_MotParameter.cs +- [O] Project/Setting/fSystem_MotParameter.Designer.cs +- [O] Project/Setting/fSystem_Setting.cs +- [O] Project/Setting/fSystem_Setting.Designer.cs +- [O] Project/Setting/System_MotParameter.cs +- [O] Project/Setting/System_Setting.cs +- [O] Project/Setting/UserSetting.cs + +### System Components +- [O] Project/StartupAPI.cs + +### UI Controls (Project/UIControl/) +- [O] Project/UIControl/CtlBase.cs +- [O] Project/UIControl/CtlBase.Designer.cs +- [O] Project/UIControl/CtlContainer.cs +- [O] Project/UIControl/CtlContainer.Designer.cs +- [O] Project/UIControl/CtlCylinder.cs +- [O] Project/UIControl/CtlCylinder.Designer.cs +- [O] Project/UIControl/CtlMotor.cs +- [O] Project/UIControl/CtlMotor.Designer.cs +- [O] Project/UIControl/CtlSensor.cs +- [O] Project/UIControl/CtlSensor.Designer.cs +- [O] Project/UIControl/CtlTowerLamp.cs +- [O] Project/UIControl/CtlTowerLamp.Designer.cs + +### Utilities (Project/Util/) +- [O] Project/Util/Util.cs +- [O] Project/Util/Util_DO.cs +- [O] Project/Util/Util_Mot.cs +- [O] Project/Util/Util_Vision.cs + +### Validation +- [O] Project/Validation/Mot_Move.cs +- [O] Project/Validation/Mot_ZL.cs + +### ResultView Application (ResultView/) +- [O] ResultView/CSetting.cs +- [O] ResultView/DataSet1.Designer.cs +- [O] ResultView/fHistory.cs +- [O] ResultView/fHistory.Designer.cs +- [O] ResultView/fSetting.cs +- [O] ResultView/fSetting.Designer.cs +- [O] ResultView/fTouchKeyFull.cs +- [O] ResultView/fTouchKeyFull.Designer.cs +- [O] ResultView/MethodExtentions.cs +- [O] ResultView/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs +- [O] ResultView/Program.cs +- [O] ResultView/Properties/AssemblyInfo.cs +- [O] ResultView/Properties/Resources.Designer.cs +- [O] ResultView/Properties/Settings.Designer.cs +- [O] ResultView/Pub.cs +- [O] ResultView/Util.cs + +## Summary +- **Total Files**: 243 .cs files +- **Main Categories**: + - Core Application: 159 files + - ResultView Application: 13 files + - Euresys Module: 6 files + - Generated/Framework: 65 files + +## Note +This list excludes all files in the `Sub/` folder which contains separate sub-projects and shared libraries. \ No newline at end of file diff --git a/run_claude.bat b/run_claude.bat new file mode 100644 index 0000000..b38a8f4 --- /dev/null +++ b/run_claude.bat @@ -0,0 +1 @@ +claude --dangerously-skip-permissions