#==============================================================================
#
# uؘavCxgpȈՃXNvg(Kawari Easy Event Programmed Script)
#  Cxg
#
# jddor   F܁
# OpenKEEPS    : njddorvWFNg`[
# OpenKEEPSy[W  : http://keeps.sourceforge.jp
# Version1.1.alpha 2002.7.20 21:30
# 
#==============================================================================
# ΏہFuؘavPhase 7.4.0 yяʌ݊łgpB
#           uviufvjMATERIA period 480 yяʌ݊\tggpB
#==============================================================================

#C[o[W\L====================================================
Layer.Name : OpenKEEPS
Layer.Version : 1.1.alpha
#==============================================================================


#==============================================================================
#ʁiėpjTu[`Q
#==============================================================================


#JE^֌Wϐ\(fobOpECOMMUNCATEgp)==============================

#R~jP[g{bNXɁuparavuapprivƓ͂邱ƂŁA
#tbȌԂSHIORI2.2Ή̃AvP[V̏m邱Ƃo܂

[ "para" ] : \_q\0t[YF${freeze}F${sw.randomtalk}\ng[NF${cnttalk}^${interval}\n؂F${sw.mikire}F${cntmikire}^60F${flagmikire}\ndȂF${sw.kasanari}F${cntkasanari}^60\e

[ "appli" ] : \_q\0ғ̃AvP[V\nOF${AppliName}\nF${AppliMaker}\no[WF${AppliVersion}\n쌠F${AppliCopyright}\n֘AtqkF${AppliURL}\e

#==============================================================================


e펞Ԍv===================================================================

#2001N11猻݂܂ł̂܂ł̌oߕ (CallMinCalc)--------------------

CallMinCalc : $(expr $(expr ${CallDayCalc} * 1440) + $(expr $(date %k) * 60) + $(date %N))

#2001N11猻݂܂ł̂܂ł̌oߓ (CallDayCalc)--------------------

CallDayCalc : $(set kp.yeartmp $(expr $(date %y) - 2001))$(expr $(expr ${kp.yeartmp} * 365) + $(expr ${kp.yeartmp} / 4)  - $(expr ${kp.yeartmp} / 100) + $(expr ${kp.yeartmp} / 400) + $(date %J))

#S[XgSĂ鎞(ghosttime.now)---------------------------------
ghosttime.now : $(expr ${time.iconize} + ${time.desktop})

#S[Xg܂ŒSԂ̍v(ghosttime.total)-------------------------
ghosttime.total : $(expr ${time.iconize.total} + ${time.desktop.total})

#==============================================================================


##ԑѐݒ (HourZone)========================================================

HourZone : $(set searchmodifier "kp.timezone")$(set kp.modifier.reference "${day_minutes}")$(set timezone ${kp.modifier})${CallModifierSearch}

#==============================================================================


#Z[u[`(CallSave,CallSave2)============================================

#Z[uP(CallSave)-----------------------------------------------------------
#IɃZ[uϐł
#datasaveparamɍڂǉ邱Ƃo܂

datasaveparam : sw.randomtalk , interval , sw.mikire , sw.kasanari , FlagMode , username , count.boot , endtime , endday , time.iconize.total , time.desktop.total
CallSave : $(eval "$(save dict-keeps-savedata.txt "$(foreach temp datasaveparam ${temp}" " ) ")" )

#Z[uQ(CallSave2)------------------------------------------------------------
#lbg[NXV̈ꎞZ[uϐł
#databackupparamɍڂǉ邱Ƃo܂

databackupparam : sw.randomtalk , interval , sw.mikire , sw.kasanari , FlagMode , username , worktime , DislpayDpp , DisplayWidth , DisplayHeight , AppliName , AppliMaker , AppliVersion , AppliCopyright , AppliURL , AppliFile , count.boot , endtime , endday , time.iconize.total , time.desktop.total

CallSave2 : $(eval "$(save dict-keeps-savedata.txt "$(foreach temp databackupparam ${temp}" " ) ")" )

#==============================================================================


##L[`(CallGetWords)===============================================
#
#̃[`́AGgɎgȂ܂ijhrœʂȕƂ
#gĂׂ̂Ɍ듮̌ƂȂj

#镶
#SpXy[XApXy[XA
#SĔṕu\"!#$%&'()*+,-./:;<=>?@[]^_`{|}~v

#u镶
#Spp召p啶˔p
#Sp[}@@˔p
#ꕔꕶiPʁj@@˂ꑊ̔p

#̓p[^
# param1 : p[^
#߂p[^
# answer : ϊp[^
#ϐ
# temp1 : ʒu
# temp2 : rpɎoP
#f[^ϐ
#Lf[^
ctrlword : "\ \\\"\!\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\]\^\_\`\{\|\}\~\\\\\@"

CallGetWords :$(clear answer ; set temp1 0 ; loop $(expr length ${param1}) $(inc temp1 ; set temp2 $(expr substr ${param1} ${temp1} 1) ; if $([ $(NULL) == $(expr find ${ctrlword} \${temp2}) ]) $(if $(size "ConvTable."${temp2}) $(set answer ${answer}$(entry "ConvTable."${temp2})) $(set answer ${answer}${temp2}))))

#==============================================================================


#Cxgɂg[N[`==============================================

#SHIORI2.2ɂCxg̃g[N𔭓ṽ[`ł
#܂Akp.entrynamȇOFlagModeili[hj܂鎖ɂA
#liʂ̔ԂƂo܂B

#̓p[^
# FlagMode : g[N[h
# kp.entryname : g[NGg

CallTalk : $(set system.communicate "stop")$(set cnttalk 0)$(if $(size ${FlagMode}"."${kp.entryname}) $(entry ${FlagMode}"."${kp.entryname}) $(entry ${kp.entryname}))

#==============================================================================


#g[NGgL`FbN====================================================

#g[NĂяofɎg܂
#Ăяog[NGg݂Δb[`iQlɂĂj
#Ăяodg݂ɂȂĂ܂
# $(if ${CallEntryCheck} ${calltalk})

#̓p[^
# FlagMode : g[N[h
# kp.entryname : g[NGg

#߂茋
# YGg(LN^[[h܂)Ȃ0A0ȊO̐l

CallEntryCheck : $(expr $(size ${FlagMode}"."${kp.entryname}) | $(size ${kp.entryname}))

#==============================================================================


#Gg[`(CallEntrySearch)=========================================

#̓p[^
# searchentry : TGgQ̃Gg
# kp.entrysearch.exe : GgɎsXNvg

CallEntrySearch : $(set entrynumber 0)$(set entrytotal $(expr $(size ${searchentry}) - 1))${CallEntrySearch2}

CallEntrySearch2 : $(if $([ ${entrynumber} -le ${entrytotal} ]) $(set kp.entryname $(array ${searchentry} ${entrynumber}))${CallEntrySearch3})

CallEntrySearch3 : $(if $([ ${CallEntryCheck} -eq 0 ]) $(inc entrynumber 1)${CallEntrySearch2} ${kp.entrysearch.exe})

#==============================================================================


#GgC[`(CallModifierSearch)================================

#̓p[^
# searchmodifier : TCQ̃Gg
# kp.modifier.reference : CQT߂̊iԓj
#o̓p[^
# kp.modifier : C邽߂̃Gg

CallModifierSearch : $(set entrynumber 0)$(set entrytotal $(expr $(size ${searchmodifier}) - 1))${CallModifierSearch2}

CallModifierSearch2 : $(if $([ ${entrynumber} -le ${entrytotal} ]) $(split tmp.modifier $(array ${searchmodifier} ${entrynumber}) "_")${CallModifierSearch3} $(set kp.modifier ${tmp.modifier.2}))

CallModifierSearch3 : $(if $([ ${tmp.modifier.1} -le ${kp.modifier.reference} ]) $(inc entrynumber 1)${CallModifierSearch2} $(set kp.modifier ${tmp.modifier.2}))

#==============================================================================


#N(f[^Ǎ)(ؘa)======================================

system.OnLoad : ${kp.onload}${CallSetTime}$(foreach param1 databackupparam ${CallReset})$(if $([ ${interval} -lt 1 ]) $(set interval 57))$(if $([ ${username} == $(NULL) ]) $(set username ${username.default}))

CallReset : $(clear temp1 ; foreach temp ${param1} $(set temp1 $(expr ${temp} | ${temp1})) ; set ${param1} ${temp1})

CallSetTime : $(if ${parawork} $(set cntwork ${CallMinCalc}) $(clear cntwork))

#==============================================================================

#==============================================================================
#ȏėp[`
#==============================================================================




#==============================================================================
#ȉSHIORI2.2Cxg
#==============================================================================

#ԌnQ******************************************************************

#Pʏ(OnMinuteChange)====================================================

#ςƂɁi܂PƁjɎs܂B
#(CallOclock)ƌoߎ(CallWorkTime)̔fɎgĂ܂

event.OnMinuteChange : $(if ${iconizing} $(inc time.iconize.now 1) $(inc time.desktop 1)$(inc time.desktop.total 1))$(if $([ ${freeze} -eq 0 ]) ${CallTimeTalk}${CallWorktime})

#Cxgg[N(CallTimeTalk)----------------------------------------------

CallTimeTalk : $(set kp.minutes $(date %M))$(set searchentry "kp.timetalk")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.timetalk : TalkTime$(date %Y)_$(date %m%d)_$(date %H)${kp.minutes} , TalkTime$(date %m%d)_$(date %H)${kp.minutes} , TalkTime$(date %w)_$(date %H)${kp.minutes} , TalkTime$(date %H)${kp.minutes}


#oߎ(CallWorkTime)--------------------------------------------------------
CallWorktime : $(if ${parawork} ${CallWorktimeB} ${CallWorktimeA})

CallWorktimeA : $(if $([ $(expr ${system.Reference0} - ${worktime}) -eq 1 ]) $(set worktime ${system.Reference0})${CallWorktimeX} $(set worktime ${system.Reference0}))

CallWorktimeB : $(if $([ 60 -le $(expr ${CallMinCalc} - ${cntwork}) ]) $(set temp $(expr ( ${CallMinCalc} - ${cntwork} ")" / 60) ; inc cntwork $(expr ${temp} * 60) ; inc worktime ${temp})${CallWorktimeX})

CallWorktimeX : ${kp.worktimex.1}${kp.worktimeX.2}
kp.worktimex.1 : $(set searchmodifier "kp.worktime")$(set kp.modifier.reference "${worktime}")${CallModifierSearch}
kp.worktimex.2 : $(set searchentry "kp.worktimetalk")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.worktimetalk : TalkWorktime.${kp.modifier} , TalkWorktime${kp.modifier} ,TalkWorktime

#==============================================================================


#bPʏ(OnSecondChange)====================================================

#bς邲Ɓi܂PbƁjɎs܂

#dȂ(CallKasanari)A؂(CallMikire)
#g[N(Calltalk)̏ɎgĂ܂

event.OnSecondChange : $(if $([ ${freeze} -eq 0 ]) $(if $([ $(date %r) -eq 40 ]) ${CallTimeTalkCheck} ${CallKasanari}${CallMikire}${CallTalkEvent}))

#g[N(CallTalkEvent)-----------------------------------------------------

CallTalkEvent : $(if $([ ${sw.randomtalk} -eq 0 ]) $(inc cnttalk 1)$(if $([ ${interval} -lt ${cnttalk} ]) $(set kp.entryname "sentence")${CallTalk}))


#؂(CallMikire)------------------------------------------------------------
CallMikire : $(if $([ ${sw.mikire} -eq 0 ]) $(if ${system.Reference1} ${CallMikire1} ${CallMikire2}))

CallMikire1 : $(inc cntmikire 1)$(if $([ ${cntmikire} -gt 60 ]) $(set flagmikire 1 ; set cntmikire 0 ; set kp.entryname "TalkMikire")${CallTalk})

CallMikire2 : $(set cntmikire 55 ; if ${flagmikire} $(set flagmikire 0 ; set kp.entryname "TalkMikirez")${CallTalk})


#dȂ(CallKasanari)----------------------------------------------------------
CallKasanari : $(if $([ ${sw.kasanari} -eq 0 ]) $(if ${system.Reference2} ${CallKasanari1} $(set cntkasanari 52)))

CallKasanari1 : $(inc cntkasanari 1)$(if $([ ${cntkasanari} -gt 60 ]) $(set cntkasanari 0 ; set kp.entryname "TalkKasanari")${CallTalk})


#Cxgg[N݃`FbN(CallTimeTalkCheck)-----------------------------

CallTimeTalkCheck : $(set kp.minutes $(expr $(date %N) + 1))$(if $([ $(expr ${kp.minutes} - 10) -le 0 ]) $(set kp.minutes "0"${kp.minutes}))$(if $([ ${kp.minutes} -eq 60 ]) $(set kp.minutes "00"))${CallTimeTalk.entrycheck}

CallTimeTalk.entrycheck : $(set searchentry "kp.timetalk")$(set kp.entrysearch.exe "$(set cnttalk 0)")${CallEntrySearch}

#==============================================================================


#I^CAEgiOnChoiceTimeoutj=========================================

#u\qvɂI莞ԕuꂽƂɎs܂
#wbhCZT[̑IuĂяoׁAfreezeOɖ߂Ă܂
event.OnChoiceTimeout : $(set freeze 0)$(set kp.entryname "TalkTimeout")${CallTalk}

#==============================================================================



#NnQ******************************************************************

#N(OnFirstBoot)=========================================================

event.OnFirstBoot : \t${kp.OnFirstBoot}$(inc count.boot 1)$(set freeze 0)$(if ${system.Reference0} $(set kp.modifier ".Vanished"))${CallOnFirstBoot}

CallOnFirstBoot : $(set searchentry "kp.onfirstboot")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.onfirstboot : TalkFirstboot.${system.Reference0} , TalkFirstboot${kp.modifier} , TalkFirstboot

#==============================================================================


#ʏN(Onboot)==============================================================

event.OnBoot : \t${kp.OnBoot}$(inc count.boot 1)$(set freeze 0)${HourZone}${kp.boottime.search}${CallOnBoot}

CallOnBoot : $(set searchentry "kp.onboot")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.onboot : TalkBootup.$(date %m%d) , TalkBootup.${timezone}.$(date %m%d) , TalkBootup${timezone}.$(date %m%d) , TalkBootup.${kp.modifier} , TalkBootup.${timezone} , TalkBootup${timezone} , TalkBootup

#==============================================================================


#̃S[Xg̕ύX(OnGhostChanged)========================================

event.OnGhostChanged : \t$(set freeze 0)$(inc count.boot 1)$(set param1 ${system.Reference0})${CallGetWords}${reloadcheck}${kp.boottime.search}${CallGhostChanged1}

reloadcheck : $(if $([ ${answer} == ${Character0} ]) ${CallGhostChanged2})

CallGhostChanged1 : $(set entrytotal $(size "GhostChangedWords."${answer}))$(if $([ ${entrytotal} -ne 0 ]) ${GhostChanged.script1} ${CallGhostChanged2})

CallGhostChanged2 : $(set searchentry "kp.ghostchanged")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

GhostChanged.script1 : $(set entrynumber2 0)$(dec entrytotal 1)${GhostChanged.script2}

GhostChanged.script2 : $(if $([ ${entrynumber} -le ${entrytotal} ]) $(set scriptwords $(array "GhostChangedWords."${answer} ${entrynumber}))${GhostChanged.script3} $(clear scriptwords)${CallGhostChanged2})

GhostChanged.script3 : $(if $([ $(expr find ${system.Reference1} ${scriptwords}) == $(NULL) ]) $(inc entrynumber 1)${GhostChanged.script2} ${CallGhostChanged2})

kp.ghostchanged : TalkGhostChanged.${answer}.$(date %m%d).${scriptwords} , TalkGhostChanged.${answer}.$(date %m%d) , TalkGhostChanged.${answer}.${scriptwords} , TalkGhostChanged.${kp.modifier} , TalkGhostChanged.${answer} , TalkGhostChanged

#==============================================================================


#ʏNAS[XgN================================================
#ZԂōČĂяoꂽƂA邢͋vԂɋNꍇ̏

kp.boottime.search : $(set searchmodifier "kp.boot.short")$(set kp.modifier.reference $(expr ${CallMinCalc} - ${endtime}))${CallModifierSearch}${kp.boot.search1}
kp.boottime.search1 : $(if $([ ${kp.modifier} == "nothing" ]) ${kp.boottime.search2})
kp.boottime.search2 : $(set searchmodifier "kp.boot.long")$(set kp.modifier.reference $(expr ${CallDayCalc} - ${endday}))${CallModifierSearch}

#==============================================================================



#InQ******************************************************************

#I(OnClose)=================================================================

event.OnClose : \t$(set freeze 1)${set.time}${HourZone}${kp.closetime.search}${CallSave}${CallOnClose}

CallOnClose : $(set searchentry "kp.onclose")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}\w9\w9\-

kp.onclose : TalkClose.$(date %m%d) , TalkClose.${timezone}.$(date %m%d) , TalkClose${timezone}.$(date %m%d) , TalkClose${kp.modifier} , TalkClose.${timezone} , TalkClose${timezone}, TalkClose

#==============================================================================


#̃S[Xg֕ύX(OnGhostChanging)==========================================

event.OnGhostChanging : $(set freeze 1)${set.time}${CallSave}$(set param1 ${system.Reference0})${CallGetWords}${CallOnGhostChanging1}${CallOnGhostChanging2}

CallOnGhostChanging1 : ${kp.closetime.search}$(if $([ ${system.Reference1} == "automatic" ]) $(set kp.modifier "Auto"))

CallOnGhostChanging2 : $(set searchentry "kp.onghostchanging")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.onghostchanging : TalkGhostChanging.${answer}.$(date %m%d) , TalkGhostChanging.${answer} , TalkGhostChanging.${kp.modifier} , TalkGhostChanging

#==============================================================================

#Inʏ================================================================
#ĂяoĂZԂł̏IA܂͐؂ւ
kp.closetime.search : $(set searchmodifier "kp.close.short")$(set kp.modifier.reference ${ghosttime.now})${CallModifierSearch}

#eԁiIԁAIAACRԁAfXNgbvԂZbg
set.time : $(set endtime ${CallMinCalc} ; set endday ${CallDayCalc})

#==============================================================================



#}EXnQ************************************************************

#T[tBXł̃}EXJ[\ړ(OnMouseMove)===============================

#T[tBX̏Ń}EXJ[\𓮂ۂɎs܂
#ł⋹ȂǂɎgĂ܂

event.OnMouseMove : $(if $([ ${freeze} -eq 0 ]) $(if ${system.Reference4} ${CallStroke} $(set "cnt."${kp.stroke1} 0)))

CallStroke : $(set kp.stroke1 "Character"${system.Reference3}"Stroke."${system.Reference4})$(if $(expr $(size "limit."${FlagMode}"."${kp.stroke1}) | $(size "limit."${kp.stroke1})) ${CallStroke2} ${CallStroke.1})

CallStroke2 : $(if $(size ${FlagMode}"."${kp.stroke1}) $(set kp.stroke1 ${FlagMode}"."${kp.stroke1}))$(if $(size ${kp.stroke1}".half") $(set "limithalf."${kp.stroke1} $(expr $(entry "limit."${kp.stroke1}) / 2))  $(set "limithalf."${kp.stroke1} 0))${CallStroke3}

CallStroke3 : $(if $([ ${kp.stroke1} == ${kp.stroke2} ]) $(inc "cnt."${kp.stroke1} 1))$(set kp.stroke2 ${kp.stroke1})${CallStroke4}${CallStroke5}

CallStroke4 : $(if $([ $(entry "cnt."${kp.stroke1}) -eq $(entry "limithalf."${kp.stroke1}) ]) $(set kp.entryname ${kp.stroke1}".half")${CallTalk})

CallStroke5 : $(if $([ $(entry "cnt."${kp.stroke1}) -eq $(entry "limit."${kp.stroke1}) ]) $(set "cnt."${kp.stroke1} 0)$(set kp.entryname ${kp.stroke1})${CallTalk})

#==============================================================================


#T[tBXŃ_uNbN(OnMouseDoubleClick)==============================

#T[tBXŃ_uNbNۂɎs܂
#oj[Ɏg܂
#̈ŃVONbNƃ_uNbN̋͏oȂ̂Œ
#ꍇVONbND悳܂

event.OnMouseDoubleClick : $(if $([ ${freeze} -eq 0 ]) ${CallDoubleClick})

CallDoubleClick : $(set searchentry "kp.doubleclick")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.doubleclick : C{system.Reference3}Double.${system.Reference4} , Character${system.Reference3}Doubleclick.${system.Reference4} , C${system.Reference3}Double , Character${system.Reference3}Doubleclick

#==============================================================================


#T[tBXŃVONbN(OnMouseClick)==================================

#̈wi:Bust,Facejꍇ͖܂
#܂Äł̃_uNbNƂ̋͏o܂

event.OnMouseClick : $(if $([ ${freeze} -eq 0 ]) $(if ${system.Reference4} ${CallSingleClick}))

CallSingleClick : $(set searchentry "kp.singleclock")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.singleclock : C${system.Reference3}Single.${system.Reference4} , Character${system.Reference3}Singleclick.${system.Reference4}

#==============================================================================


#T[tBXŃ}EXzC[](OnMouseWheel)================================

event.OnMouseWheel : $(if $([ ${freeze} -eq 0 ]) ${CallWheelRotate1})

CallWheelRotate1 : $(if $([ ${system.Reference2} -gt 0 ]) $(set wheel "Plus") $(set wheel "Minus"))$(set searchentry "kp.onmousewheel")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.onmousewheel : C${system.Reference3}Wheel.${system.Reference4}.${wheel} , Character${system.Reference3}Wheel.${system.Reference4}.${wheel} , C${system.Reference3}Wheel.${system.Reference4} , Character${system.Reference3}Wheel.${system.Reference4} , C${system.Reference3}Wheel.${wheel} , Character${system.Reference3}Wheel.${wheel} , C${system.Reference3}Wheel , Character${system.Reference3}Wheel

#==============================================================================




#eԕωn****************************************************************

#ŏ֘A(OnWindowState...)==================================================
#freezeɂ}giWinAMPŔ\ׁj

#ŏJn(OnWindowStateMinimize)---------------------------------------------
event.OnWindowStateMinimize : $(set freeze 1)$(set iconizing 1)$(set time.iconize.now 0)$(set minimumbegin ${CallMinCalc})${CallSave}

#ŏ畜A(OnWindowStateRestore)------------------------------------------
event.OnWindowStateRestore : ${kp.OnWindowStateRestore}\t$(set freeze 0)$(set iconizing 0)${calc.minimizedtime}${kp.restore.1}${kp.restore.2}

calc.minimizedtime : $(if ${time.iconize.now} $(set minimizedtime ${time.iconize.now}) $(set minimizedtime $(expr ${CallMinCalc} - ${minimumbegin})))$(set time.iconize $(expr ${minimizedtime} + ${time.iconize}))$(set time.iconize.total $(expr ${time.iconize.total} + ${minimizedtime}))

kp.restore.1 : $(set searchmodifier "kp.minimizedtime")$(set kp.modifier.reference "${minimizedtime}")${CallModifierSearch}
kp.restore.2 : $(set searchentry "kp.talkrestore")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.talkrestore : TalkRestore.${kp.modifier} , TalkRestore

#==============================================================================


#T[tBX(OnSurface...)==============================================

#T[tBXԍ擾(OnSurfaceChange)---------------------------------------

#T[tBXςۂɎsA\0,\1ꂼ̃T[tBXԍ
#SurfaceC(0/1)Ɋi[܂B

event.OnSurfaceChange : $(set SurfaceC0 ${system.Reference0} ; set SurfaceC1 ${system.Reference1})


#T[tBXA(OnSurfaceRestore)----------------------------------------------

#T[tBXCM[ȏԂiʏ@\0:T[tBX0 \1:T[tBX10j
#߂^C~OƂɎs܂

event.OnSurfaceRestore : $(set searchentry "kp.onsurfacerestore")$(set kp.entrysearch.exe "${CallSurfaceRestore}")${CallEntrySearch}

kp.onsurfacerestore : TalkReturn${system.Reference0}_${system.Reference1} , TalkReturn${system.Reference1} , TalkReturn${system.Reference0} , TalkReturn

CallSurfaceRestore : $(set system.communicate "stop")$(if $(size ${FlagMode}"."${kp.entryname}) $(entry ${FlagMode}"."${kp.entryname}) $(entry ${kp.entryname}))

#==============================================================================


#VFZbg؂ւ֘A(OnShellChange...)====================================

#VFZbg؂ւO(OnShellChanging)---------------------------------------
event.OnShellChanging : $(set freeze 1)$(set shellbefore ${system.Reference0})$(set param1 ${system.Reference0})${CallGetWords}$(set searchentry "kp.onshellchanging")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.onshellchanging : TalkShellChanging.${answer} , TalkShellChanging

#VFZbg؂ւ(OnShellChanged)----------------------------------------
event.OnShellChanged : $(set freeze 0)$(set kp.entryname "TalkShellChanged")${CallTalk}

#==============================================================================



#CxgsnQ**********************************************************

#rrsoMf(OnSSTPBreak)=================================================
event.OnSSTPBreak : $(set kp.entryname "TalkSSTPbreak")${CallTalk}
#==============================================================================


#Vanish֘A(OnVanish...)===================================================
#freezetOݒ

event.OnVanishSelecting : $(set freeze 1)$(set kp.entryname "TalkVanishSelecting")${CallTalk}
event.OnVanishSelected : $(set freeze 1)$(set kp.entryname "TalkVanishSelected")${CallTalk}

event.OnVanishCancel : $(set freeze 0)$(set kp.entryname "TalkVanishCancel")${CallTalk}
event.OnVanishButtonHold : $(set freeze 0)$(set kp.entryname "TalkVanishButtonHold")${CallTalk}

#S[XgVanishĂ̌--------------------------------------------
event.OnVanished : $(set kp.entryname "TalkOtherGhostVanished")${CallTalk}

#==============================================================================


#߃TCgXgI(OnRecommendsiteChoice)=============================

#\0,\1̂߃TCgI΂ꂽƂɎs܂B
#ꕶ[`ʂďo͂̂ŒӂĂ

event.OnRecommendsiteChoice : $(set param1 ${system.Reference0})${CallGetWords}$(set kp.entryname "TalkURL."${answer})${CallTalk}

#==============================================================================


#Winamp(OnMusicPlay)=====================================================

#yuna-sexyfont-pluginKvłB
#ȎҖȖ𒝂Ă܂

event.OnMusicPlay : $(if $([ ${freeze} -eq 0 ]) ${OnMusicPlay1}) 

OnMusicPlay1 : $(if $([ $(expr substr ${system.Reference0} 2 6) != "Buffer" ]) ${OnMusicPlay2}) 
OnMusicPlay2 : $(if $([ $(expr substr ${system.Reference0} 2 10) != "ICY 200 OK" ]) ${OnMusicPlay3}) 
OnMusicPlay3 : $(if $([ $(expr substr ${system.Reference0} 2 10) != "Connecting" ]) ${OnMusicPlay4}) 
OnMusicPlay4 : $(if $([ $(expr substr ${system.Reference0} 2 26) != "error opening sound device" ]) ${OnMusicPlay5}) 
OnMusicPlay5 : ${CallWinamp}$(set kp.entryname "TalkWinampplay")${CallTalk}

CallWinamp : $(set param1 $(escape ${system.Reference0}) ; clear Wartist ; if $([ $(expr substr ${param1} 1 2) == "- " ]) $(set Wtitle $(expr substr ${param1} 3 $(expr ( length ${param1} ")"  - 2)))  ${CallWinamp1})

CallWinamp1 : $(set temp $(expr findpos ${param1} " - ") ; if ${temp} $(set Wartist $(expr substr ${param1} 1 ${temp}) ; set Wtitle $(expr substr ${param1} $(expr ${temp} + 3) $(expr "(" $(expr length ${param1}) - ${temp} ")" - 2))) $(set Wtitle ${param1}))

#==============================================================================

##InputBoxɂ́iOnUserInputj============================================

event.OnUserInput : $(set kp.entryname $(if $([ ${system.Reference1} == "timeout" ]) "TalkInputTimeOut." "TalkInput.")${system.Reference0})${CallTalk}

#==============================================================================

#j[i\qjɂII(OnChoiceSelect)================================

#u\qvɂIIꂽƂɎs܂
event.OnChoiceSelect : $(set kp.entryname "Select."${system.Reference0})${CallTalk}
#==============================================================================



#CXg[At@C֘AQ**********************************************

#eCXg[֘A(OnInstall...)============================================
#CxgJnfreezetO(1)𗧂ĂāA0ɖ߂Ă

event.OnInstallBegin : $(set freeze 1)$(set kp.entryname "TalkInstallBegin")${CallTalk}

event.OnInstallComplete : $(set freeze 0)${CallInstallComplete1}${CallInstallComplete2}

event.OnInstallFailure : $(set freeze 0)$(set searchentry "kp.installerror")$(set kp.entrysearch.exe "${CallTalk}")${CallEntrySearch}

kp.installerror : TalkInstallfail.${system.Reference0} , TalkInstallfail${system.Reference0}, TalkInstallfail

event.OnInstallRefuse : $(set freeze 0)$(set kp.entryname "TalkInstallrefuse")${CallTalk}

#CXg[ꂽIuWFNg̔ʃ[`----------------------------------

CallInstallComplete1 : $(set InstallName ${system.Reference1} ; if ${system.Reference2} $(set InstallName1 ${system.Reference2} ; set temp1 "balloon")  $(clear InstallName1 ; clear temp1))

CallInstallComplete2 : $(foreach temp datainst $(if $(expr find ${system.Reference0} ${temp}) $(set kp.entryname "TalkInstall"${temp})))$(if ${CallEntryCheck} ${CallTalk} $(set kp.entryname "TalkInstall")${CallTalk})

##CXg[ꂽIuWFNgʂ鎯ʎq(ʎq̓o^ɒ)
datainst : calender , skin , shell , ghost , plugin , balloon

#==============================================================================


#updates2.dau쐬֘A(OnUpdatedata...)=========================================
#freezetOݒKv

#updates2.dau쐬O(OnUpdatedataCreating)--------------------------------------
event.OnUpdatedataCreating : $(set freeze 1)$(set kp.entryname "TalkUpdateCreating")${CallTalk}

#updates2.dau(OnUpdatedataCreated)---------------------------------------
event.OnUpdatedataCreated : $(set freeze 0)$(set kp.entryname "TalkUpdateCreated")${CallTalk}

#==============================================================================


#nart@C쐬֘A(OnNarCreate...)===========================================
#freezetOݒKv

#nart@C쐬O(OnNarCreating)----------------------------------------------
event.OnNarCreating : $(set freeze 1)$(set kp.entryname "TalkNarCreating")${CallTalk}

#nart@C(OnNarCreated)-----------------------------------------------
event.OnNarCreated : $(set freeze 0)$(set kp.entryname "TalkNarCreated")${CallTalk}

#==============================================================================



#lbg[NnQ**********************************************************

#[`FbN֘A(OnBiff...)=================================================
#CxgJnfreezetO(1)𗧂ĂāA0ɖ߂Ă

#
#OnBIFFBegin͉ENbNj[̑݃`FbNɂgĂ܂B
#ref0testĂꍇ͂ł̂ŁAfreezetȌꏊɒ

event.OnBIFFBegin : $(if $([ ${system.Reference0} == "test" ]) "Mail.OK" $(set freeze 1)$(set kp.entryname "TalkMailstart")${CallTalk})

event.OnBIFFComplete : $(set freeze 0)$(if $(expr ${system.Reference0} * ${system.Reference1}) $(set kp.entryname "TalkGottaMail")  $(set kp.entryname "TalkNoMail"))${CallTalk}

event.OnBIFF2Complete : $(set freeze 0)$(if $(expr ( ${system.Reference0} * ${system.Reference1} ")" * ${system.Reference3} ) $(if $([ ${system.Reference3} -lt 0 ]) $(set NewMail ${system.Reference0}) $(set NewMail ${system.Reference3}) ; set kp.entryname "TalkGottaMail2")  $(set kp.entryname "TalkNoMail2"))${CallTalk}

event.OnBIFFFailure : $(set freeze 0)$(set kp.entryname "TalkMailError"${system.Reference0})$(if ${CallEntryCheck} $(NULL) $(set kp.entryname "TalkMailError"))${CallTalk}

#==============================================================================


#wbhCZT[֘A(OnHeadlinesense...)==================================
#CxgJnfreezetO(1)𗧂ĂāA0ɖ߂Ă

#
#OnHeadlinesenseBegin͉ENbNj[̑݃`FbNɂgĂ܂B
#ref0testĂꍇ͂ł̂ŁAfreezetȌꏊɒ

event.OnHeadlinesenseBegin : $(if $([ ${system.Reference0} == "test" ]) "HeadLine.OK" $(set freeze 1)$(set JumpURL ${system.Reference1} ; set kp.entryname "TalkHeadlineBegin")${CallTalk})

event.OnHeadlinesense.OnFind : \t${CallHeadlineRead1}\n\n${system.Reference3}\n${CallHeadlineRead2}

CallHeadlineRead1 : $(if $(expr find ${system.Reference2} "First") $(set kp.entryname "TalkHeadlineFirst")  $(set kp.entryname "TalkHeadlineNext"))${CallTalk}

CallHeadlineRead2 : $(if $(expr find ${system.Reference2} "Last") $(set kp.entryname "TalkHeadlineChoiceEnd")  $(set kp.entryname "TalkHeadlineChoice"))${CallTalk}

event.OnHeadlinesenseComplete : ${CallHeadlineFail}
event.OnHeadlinesenseFailure : ${CallHeadlineFail}

CallHeadlineFail : $(set freeze 0)$(if $([ ${system.Reference0} == "no update" ]) $(set kp.entryname "TalkHeadlineNoupdate") $(if $([ ${system.Reference0} == "can't download" ]) $(set kp.entryname "TalkHeadlineFailed") $(if $([ ${system.Reference0} == "can't analyze" ]) $(set kp.entryname "TalkHeadlineMiss") $(set kp.entryname "TalkHeadlineError"))))${CallTalk}

#==============================================================================


#v킹֘A(OnSNTP...)=====================================================
#CxgJnfreezetO(1)𗧂ĂāA0ɖ߂Ă

#
#OnSNTPBegin͉ENbNj[̑݃`FbNɂgĂ܂B
#ref0testĂꍇ͂ł̂ŁAfreezetȌꏊɒ

#v킹Jn(OnSNTPBegin)---------------------------------------------------
event.OnSNTPBegin : $(if $([ ${system.Reference0} == "test" ]) "SNTP.OK" $(set freeze 1)$(set kp.entryname "TalkNTPstart")${CallTalk})

#SNTPT[oɐڑs(OnSNTPFailure)-------------------------------------------
event.OnSNTPFailure : $(set freeze 0)$(set kp.entryname "TalkNTPfailed")${CallTalk}


#SNTPT[oɐڑ̎Ԕr(event.OnSNTPCompare)-------------------------
event.OnSNTPCompare : ${CallSntpCompare1}${CallSntpCompare2}${CallSntpCompare3}

TimeDisplay : $(split temp ${param1} "," ; set ${param0} ${temp.1}"N"${temp.2}""${temp.3}" "${temp.4}""${temp.5}""${temp.6}"b")

CallSntpCompare1 : $(set param0 "TimeSNTP" ; set param1 ${system.Reference1})${TimeDisplay}

CallSntpCompare2 : $(set param0 "TimeLOCAL" ; set param1 ${system.Reference2})${TimeDisplay}

CallSntpCompare3 : $(set freeze 0)$(set kp.entryname "TalkNTPcompare")${CallTalk}

#==============================================================================


#lbg[NXV֘A(OnUpdate...)=============================================
#CxgJnfreezetO(1)𗧂ĂāA0ɖ߂Ă

event.OnUpdateBegin : $(set freeze 1)${CallSave2}$(set kp.entryname "TalkUpdateBegin")${CallTalk}
event.OnUpdateReady : $(set freeze 1)$(set kp.entryname "TalkUpdateReady")${CallTalk}

event.OnUpdate.OnDownloadBegin : $(set kp.entryname "TalkDownloadBegin")${CallTalk}
event.OnUpdate.OnMD5CompareBegin : $(set kp.entryname "TalkMD5Begin")${CallTalk}
event.OnUpdate.OnMD5CompareComplete : $(set kp.entryname "TalkMD5Complete")${CallTalk}
event.OnUpdate.OnMD5CompareFailure  : $(set kp.entryname "TalkMD5Fail")${CallTalk}

event.OnUpdateComplete : $(set freeze 0)$(if $([ ${system.Reference0} == "none" ]) $(set kp.entryname "TalkUpdatenoupdate") $(set kp.entryname "TalkUpdatecomplete"))${CallTalk}

event.OnUpdateFailure : $(set freeze 0)$(set searchentry "kp.dataupdateerror")$(set kp.entrysearch.exe "${CallTalk}"){CallEntrySearch}

kp.dataupdateerror : TalkUpdatefail.${system.Reference0} , TalkUpdatefail${system.Reference0} , TalkUpdatefailetc

#==============================================================================


#tqkccɂ_E[h(OnURLDrop...)==================================
#ł̓VXeɂ鑼Cxg}freeze͎g܂
#ifreezetOςȂɂȂ\j

event.OnURLDropping : $(set kp.entryname "TalkDownload")${CallTalk}

#_E[hs(OnDropFailure)-----------------------------------------------

#Reference0@_E[hft@C̃[Jł̐΃pX 
#Reference1@s̗R 
#@timeout @@^CAEg 
#@artificial@[UӐ}Iɒf 

event.OnURLDropFailure : $(if $([ {system.Reference1} == "artifical" ]) $(set kp.entryname "DownloadRefused") $(set kp.entryname "DownloadFailed"))${CallTalk}

#==============================================================================


#lbg[Nd(OnNetworkHeavy)============================================
#v킹Albg[NXVAwbhCZT[A[`FbNA
#tqkccɂ_E[hA
#ȂȂqȂAgtBbNݍĂꍇɎs܂B

event.OnNetworkHeavy : $(set kp.entryname "TalkNetworkheavy")${CallTalk}
#==============================================================================


#SSTPMIPubNXgɓꂽ(OnSSTPBlacklisting)======================
event.OnSSTPBlacklisting : $(set kp.entryname "TalkBlacklist")\t${CallTalk}
#==============================================================================



#ԂĂ邩SSTPNotifyM(OnDoubleTailScriptSend)======================
#͕ςKv܂
event.OnDoubleTailScriptSend : ${system.Reference0}
#==============================================================================

#==============================================================================
#ȏSHIORI2.2Cxg
#==============================================================================




#==============================================================================
#ȉSHIORI2.5ɂ郊\[X擾
#==============================================================================

#߃TCgXg擾(SHIORI2.5)=============================================

resource.sakura.recommendsites : $(set param1 "sakura")${CallMakeList}

resource.kero.recommendsites : $(set param1 "kero")${CallMakeList}

resource.sakura.portalsites : $(set param1 "portal")${CallMakeList}

CallMakeList : $(if $(entry ${FlagMode}".URL."${param1}) $(set kp.entryname ${Flagmode}".") $(clear kp.entryname))$(if $(entry ${kp.entryname}"randlist."${param1}) ${CallMakeListB} ${CallMakeListA})

CallMakeListA : $(foreach temp ${kp.entryname}"URL."${param1} $(eval ${temp}))

CallMakeListB : $(clear temp ; set temp1 $(entry ${kp.entryname}"URL."${param1}) ; loop $(entry "randlist."${param1}) ${CallMakeListB1} ; eval ${temp})

CallMakeListB1 : $(while $(expr find ${temp} ${temp1}) $(set temp1 $(entry ${kp.entryname}"URL."${param1})) ; set temp ${temp}${temp1})

#==============================================================================


#߃{^擾(SHIORI2.5)=================================================

resource.sakura.recommendbuttoncaption : $(if $(size ${FlagMode}".Sakura.URLCaption") $(entry ${FlagMode}".Sakura.URLCaption") $(entry "Sakura.URLCaption"))

resource.kero.recommendbuttoncaption   : $(if $(size ${FlagMode}".Kero.URLCaption") $(entry ${FlagMode}".Kero.URLCaption") $(entry "Kero.URLCaption"))

resource.sakura.portalbuttoncaption    : $(if $(size ${FlagMode}".Portal.URLCaption") $(entry ${FlagMode}".Portal.URLCaption") $(entry "Portal.URLCaption"))

#==============================================================================


#[U[擾(SHIORI2.5)=====================================================
#[U[݂ȂƂ́u[U[vɂȂ܂
#isystem.OnloadŔ肳܂j
resource.username : ${username}
#==============================================================================


#lbg[NXV{^擾(SHIORI2.5)=======================================
resource.updatebuttoncaption : $(if $(size ${FlagMode}".UpdateCaption") $(entry ${FlagMode}".UpdateCaption") $(entry "UpdateCaption"))
#==============================================================================


#Ŏw{^擾(SHIORI2.5)===============================================
resource.vanishbuttoncaption : $(if $(size ${FlagMode}".VanishCaption") $(entry ${FlagMode}".VanishCaption") $(entry "VanishCaption"))
#==============================================================================


#==============================================================================
#ȏSHIORI2.5ɂ郊\[X擾
#==============================================================================



#==============================================================================
#ϊe[uiCallGetWordsAOnFileDropŕϊɎgGgQj
#
#Spp召p啶˔p
#Sp[}@@˔p
#ꕔꕶiPʁj@@˂ꑊ̔p
#==============================================================================

ConvTable.O : 0
ConvTable.P , ConvTable.T : 1
ConvTable.Q , ConvTable.U : 2
ConvTable.R , ConvTable.V : 3
ConvTable.S , ConvTable.W : 4
ConvTable.T , ConvTable.X : 5
ConvTable.U , ConvTable.Y : 6
ConvTable.V , ConvTable.Z : 7
ConvTable.W , ConvTable.[ : 8
ConvTable.X , ConvTable.\ : 9
ConvTable.] : 10
ConvTable. , ConvTable.` , ConvTable.A : a
ConvTable. , ConvTable.a , ConvTable.B : b
ConvTable. , ConvTable.b , ConvTable.C : c
ConvTable. , ConvTable.c , ConvTable.D : d
ConvTable. , ConvTable.d , ConvTable.E : e
ConvTable. , ConvTable.e , ConvTable.F : f
ConvTable. , ConvTable.f , ConvTable.G : g
ConvTable. , ConvTable.g , ConvTable.H : h
ConvTable. , ConvTable.h , ConvTable.I : i
ConvTable. , ConvTable.i , ConvTable.J : j
ConvTable. , ConvTable.j , ConvTable.K : k
ConvTable. , ConvTable.k , ConvTable.L : l
ConvTable. , ConvTable.l , ConvTable.M : m
ConvTable. , ConvTable.m , ConvTable.N : n
ConvTable. , ConvTable.n , ConvTable.O : o
ConvTable. , ConvTable.o , ConvTable.P : p
ConvTable. , ConvTable.p , ConvTable.Q : q
ConvTable. , ConvTable.q , ConvTable.R : r
ConvTable. , ConvTable.r , ConvTable.S : s
ConvTable. , ConvTable.s , ConvTable.T : t
ConvTable. , ConvTable.t , ConvTable.U : u
ConvTable. , ConvTable.u , ConvTable.V : v
ConvTable. , ConvTable.v , ConvTable.W : w
ConvTable. , ConvTable.w , ConvTable.X : x
ConvTable. , ConvTable.x , ConvTable.Y : y
ConvTable. , ConvTable.y , ConvTable.Z : z
ConvTable.o : mm
ConvTable.p : cm
ConvTable.q : km
ConvTable.r : mg
ConvTable.s : kg
ConvTable.t : cc
ConvTable.u : m2

#==============================================================================


#==============================================================================
##ȉAΉ
#==============================================================================
#event.OnSNTPCorrect : \_q\1\s[10](x)C܂B${DataResult}\_q\e
#event.OnFileDropped : \_q\1\s[10](x)t@Chbv܂B${DataResult}\_q\e
#event.OnDirectoryDrop : \_q\1\s[10](x)fBNghbv܂B${DataResult}\_q\e
#event.OnKeyPress : \_q\1\s[10](x)L[܂B${DataResult}\_q\e
#event.OnURLDropped : \_q\1\s[10](x)t@C_E[h܂B${DataResult}\_q\e
#event.OnTeachStart : \_q\1\s[10](x)uTEACH forv{bNXJ܂B${DataResult}\_q\e
#DataResult : \0\s[0]OF${system.Reference0}\nPF${system.Reference1}\nQF${system.Reference2}\nRF${system.Reference3}\nSF${system.Reference4}\nTF${system.Reference5}\nUF${system.Reference6}\nVF${system.Reference7}
#==============================================================================


#==============================================================================
#o[WŔp~ꂽGgB݊ŎĝL
#==============================================================================

#ǎύX(OnWallpaperChange)=============================================
#T[tBXɃhbvꂽt@C摜t@Cꍇs܂B
#FMATERIA490p~܂

event.OnWallpaperChange : $(set kp.entryname "TalkWallpaper")${CallTalk}

#==============================================================================


#fBXvC𑜓xύX(OnDisplayChange)=======================================

#fBXvC𑜓xςۂɁi𑜓xAF̂łjs܂
#MATERIA580p~
event.OnDisplayChange : $(if $([ ${freeze} -eq 0 ]) ${displaychange})

displaychange : $(set DisplayDpp ${system.Reference0} ; set DisplayWidth ${system.Reference1} ; set DisplayHeight ${system.Reference2} ; if ${flagdisplay} $(set kp.entryname "TalkDisplayChange")${CallTalk}  $(set flagdisplay 1))

#==============================================================================

#T[tBXɃt@Ccc(OnFileDropping)================================

#MATERIA571p~
#T[tBXɃt@ChbvꂽۂɎs܂
#Ghost-KEEPS.txtɁuTalkFileDrop.gqv̌`Ŕǉł܂

#܂AhbOꂽt@C͎̋Kŕϊ܂
#Spp召p啶˔p
#Sp[}@@˔p
#ꕔꕶiPʁj@@˂ꑊ̔p

event.OnFileDropping : $(set param1 ${system.Reference0})${CallFileType}$(if ${answer} $(set kp.entryname "TalkFileDrop."${answer})${CallTalk}) 

CallFileType : $(clear answer ; set temp1 $(expr length ${param1}) ; while ${temp1} $(set temp2 $(expr substr ${param1} ${temp1} 1) ; dec temp1 ; if $([ ${temp2} == "." ]) $(set temp1 0)  $(if ${temp2} $(if $(entry "ConvTable."${temp2}) $(set answer $(entry "ConvTable."${temp2})${answer})  $(set answer ${temp2}${answer}))  $(set temp1 0 ; clear answer) )))

#==============================================================================


############################################################################
#
# Copyright (C) 2002 OpenKEEPS Project Team
# (Akira Koyama(original works)/UMKS6.p2/A-01/takuru/tommyrot/sato/suikyo)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################

