#
# There are two events we are trying to track which will cause a page to be re-rendered.
#
# 1) The arrival of new data which will trigger a render of the GROUP for that data type (GROUP HO for the hourly data)
# The ..._last_rend entries  will null if new data has come in since we last did a render
# This will tell the renderer we want to re-render the page
#
# 2) The expiration of any data on the page. This may come as several different events, each of which will trigger a re-render.
# The main star event which will start the process of checking the ..._next_expire entries is the "LOAD FCST" command.
# The ..._next_expire entries will indicate the time the next data will expire. (0 means it will not change any more)
# If the ..._next_expire time is between the current system time and the ..._last_rend, the page will be re-rendered.
#
#
#
#
#
"l_36f001_slang_next_expire",0,0,""
"l_24f001_slang_next_expire",0,0,""
"l_ex001a_slang_next_expire",0,0,""
"l_ex002a_slang_next_expire",0,0,""
"l_dpf001a_slang_next_expire",0,0,""
"l_rf001a_slang_next_expire",0,0,""
"l_mmf001a_slang_next_expire",0,0,""
#
"l_36f001_last_rend_stamp",0,0,""
"l_36f001_next_expire_stamp",0,0,""
"l_24f001_last_rend_stamp",0,0,""
"l_24f001_next_expire_stamp",0,0,""
"l_PERM_last_rend_stamp",0,0,""
"l_PERM_next_expire_stamp",0,0,""
"l_alm001a_last_rend_stamp",0,0,""
#The ALMANAC will NEVER expire. "l_alm001a_next_expire_stamp",0,0,""
"l_ali001a_last_rend_stamp",0,0,""
"l_aq001a_last_rend_stamp",0,0,""
"l_aq001a_next_expire_stamp",0,0,""
"l_aqi001a_last_rend_stamp",0,0,""
"l_aqi001a_next_expire_stamp",0,0,""
"l_aq002a_last_rend_stamp",0,0,""
"l_aq002a_next_expire_stamp",0,0,""
"l_cc001a_last_rend_stamp",0,0,""
"l_cc001a_next_expire_stamp",0,0,""
"l_cci001a_last_rend_stamp",0,0,""
"l_cci001a_next_expire_stamp",0,0,""
"l_dpf001a_last_rend_stamp",0,0,""
"l_dpf001a_next_expire_stamp",0,0,""
"l_ex001a_last_rend_stamp",0,0,""
"l_ex001a_next_expire_stamp",0,0,""
"l_ex002a_last_rend_stamp",0,0,""
"l_ex002a_next_expire_stamp",0,0,""
"l_exi001a_last_rend_stamp",0,0,""
"l_exi001a_next_expire_stamp",0,0,""
"l_lo001a_last_rend_stamp",0,0,""
"l_lo001a_next_expire_stamp",0,0,""
"l_lo001b_last_rend_stamp",0,0,""
"l_lo001b_next_expire_stamp",0,0,""
"l_loi001a_last_rend_stamp",0,0,""
"l_loi001a_next_expire_stamp",0,0,""
"l_ma001a_last_rend_stamp",0,0,""
"l_ma001a_next_expire_stamp",0,0,""
#"l_mai001a_last_rend_stamp",0,0,""
#"l_mai001a_next_expire_stamp",0,0,""
"l_mmf001a_last_rend_stamp",0,0,""
"l_mmf001a_next_expire_stamp",0,0,""
"l_nws001_last_rend_stamp",0,0,""
"l_nws001_next_expire_stamp",0,0,""
"l_rf001a_last_rend_stamp",0,0,""
"l_rf001a_next_expire_stamp",0,0,""
"l_rfi001a_last_rend_stamp",0,0,""
"l_rfi001a_next_expire_stamp",0,0,""
"l_ro001a_last_rend_stamp",0,0,""
"l_ro001a_next_expire_stamp",0,0,""
"l_roi001a_last_rend_stamp",0,0,""
"l_roi001a_next_expire_stamp",0,0,""
#NEVER "l_sk001a_last_rend_stamp",0,0,""
#NEVER "l_sk001a_next_expire_stamp",0,0,""
#NEVER "l_sk001b_last_rend_stamp",0,0,""
#NEVER "l_sk001b_next_expire_stamp",0,0,""
"l_ti001a_last_rend_stamp",0,0,""
"l_ti001a_next_expire_stamp",0,0,""
#"l_tii001a_last_rend_stamp",0,0,""
#"l_tii001a_next_expire_stamp",0,0,""
#
#
#
#
#####
#
#
# NOTE: We are treating the PERM flavor like a page with regard to when it needs to be "re-rendered"
# There is no actual rendering to be done. We will use the last_rend and next_expire flags to trigger
# reloading of the flavor "PERM" into the permanent layer. -TLS
#
# NOTE l_bulletin_00_last_stamp represents the latest bulletin received and is set by update when processing an "UPDATE BUL" cmd.
"r_PERM_rend_rule_01",0,0,"l_PERM_last_rend_stamp@NullIfAnyGreater(l_bulletin_00_last_stamp)Update(l_PERM_last_rend_stamp)"
"r_PERM_rend_rule_02",0,0,"l_PERM_next_expire_stamp@SetToMinExpiration(l_bulletin_01_text l_bulletin_02_text l_bulletin_03_text l_bulletin_04_text l_bulletin_05_text l_bulletin_06_text l_bulletin_07_text l_bulletin_08_text l_bulletin_09_text l_bulletin_10_text l_bulletin_11_text l_bulletin_12_text)Update(l_PERM_next_expire_stamp)"
#
#####
#
"r_alm001a_rend_rule_01",0,0,"l_alm001a_last_rend_stamp@NullIfAnyGreater(s_001alm_last_ALM_stamp)Update(l_alm001a_last_rend_stamp)"
#
#####
#
"r_aq001a_rend_rule_01",0,0,"l_aq001a_last_rend_stamp@NullIfAnyGreater(s_001aq_last_AQ_stamp s_002aq_last_AQ_stamp s_003aq_last_AQ_stamp)Update(l_aq001a_last_rend_stamp)"
"r_aq001a_rend_rule_02",0,0,"l_aq001a_next_expire_stamp@SetToMinExpiration(s_001aq_PSI_01 s_002aq_PSI_01 s_003aq_PSI_01)Update(l_aq001a_next_expire_stamp)"
#
"r_aqi001a_rend_rule_01",0,0,"l_aqi001a_last_rend_stamp@NullIfAnyGreater(s_001aq_last_AQ_stamp s_002aq_last_AQ_stamp s_003aq_last_AQ_stamp)Update(l_aqi001a_last_rend_stamp)"
"r_aqi001a_rend_rule_02",0,0,"l_aqi001a_next_expire_stamp@SetToMinExpiration(s_001aq_PSI_01 s_002aq_PSI_01 s_003aq_PSI_01)Update(l_aqi001a_next_expire_stamp)"
#
"r_aq002a_rend_rule_01",0,0,"l_aq002a_last_rend_stamp@NullIfAnyGreater(s_001aq_last_AQ_stamp s_002aq_last_AQ_stamp s_003aq_last_AQ_stamp)Update(l_aq002a_last_rend_stamp)"
"r_aq002a_rend_rule_02",0,0,"l_aq002a_next_expire_stamp@SetToMinExpiration(s_001aq_PSI_01 s_002aq_PSI_01 s_003aq_PSI_01)Update(l_aq002a_next_expire_stamp)"
#
#####
#
"r_cc001a_rend_rule_01",0,0,"l_cc001a_last_rend_stamp@NullIfAnyGreater(s_001cc_last_HO_stamp alt_s_001cc_last_HO_stamp)Update(l_cc001a_last_rend_stamp)"
"r_cc001a_rend_rule_02",0,0,"l_cc001a_next_expire_stamp@SetToMinExpiration(s_001cc_raw_HO_data alt_s_001cc_raw_HO_data)Update(l_cc001a_next_expire_stamp)"
#
#####
#
"r_ex001a_rend_rule_01",0,0,"l_ex001a_last_rend_stamp@NullIfAnyGreater(s_001ex_last_F12HR_stamp s_001lf_last_F12HR_stamp s_001rfc_last_F12HR_stamp s_002rfc_last_F12HR_stamp s_003rfc_last_F12HR_stamp s_004rfc_last_F12HR_stamp)Update(l_ex001a_last_rend_stamp)"
"r_ex001a_rend_rule_02",0,0,"l_ex001a_next_expire_stamp@SetToMinExpiration(l_ex001a_slang_next_expire s_001ex_F12HR_start_times)Update(l_ex001a_next_expire_stamp)"
#
#####
#
"r_ex002a_rend_rule_01",0,0,"l_ex002a_last_rend_stamp@NullIfAnyGreater(s_001ex_last_F12HR_stamp)Update(l_ex002a_last_rend_stamp)"
"r_ex002a_rend_rule_02",0,0,"l_ex002a_next_expire_stamp@SetToMinExpiration(l_ex002a_slang_next_expire s_001ex_F12HR_start_times)Update(l_ex002a_next_expire_stamp)"
#
#####
#
"r_dpf001a_rend_rule_01",0,0,"l_dpf001a_last_rend_stamp@NullIfAnyGreater(s_001dpf_last_F1HR_stamp)Update(l_dpf001a_last_rend_stamp)"
"r_dpf001a_rend_rule_02",0,0,"l_dpf001a_next_expire_stamp@SetToMinExpiration(l_dpf001a_slang_next_expire s_001dpf_F1HR_start_times)Update(l_dpf001a_next_expire_stamp)"
#
#####
#
"r_lo001a_rend_rule_01",0,0,"l_lo001a_last_rend_stamp@NullIfAnyGreater(s_001lo_last_HO_stamp s_002lo_last_HO_stamp s_003lo_last_HO_stamp s_004lo_last_HO_stamp)Update(l_lo001a_last_rend_stamp)"
"r_lo001a_rend_rule_02",0,0,"l_lo001a_next_expire_stamp@SetToMinExpiration(s_001lo_raw_HO_data s_002lo_raw_HO_data s_003lo_raw_HO_data s_004lo_raw_HO_data)Update(l_lo001a_next_expire_stamp)"
"r_lo001b_rend_rule_01",0,0,"l_lo001b_last_rend_stamp@NullIfAnyGreater(s_005lo_last_HO_stamp s_006lo_last_HO_stamp s_007lo_last_HO_stamp s_008lo_last_HO_stamp)Update(l_lo001b_last_rend_stamp)"
"r_lo001b_rend_rule_02",0,0,"l_lo001b_next_expire_stamp@SetToMinExpiration(s_005lo_raw_HO_data s_006lo_raw_HO_data s_007lo_raw_HO_data s_008lo_raw_HO_data)Update(l_lo001b_next_expire_stamp)"
#
#####
#
"r_ma001a_rend_rule_01",0,0,"l_ma001a_last_rend_stamp@NullIfAnyGreater(s_001ma_last_MA_stamp)Update(l_ma001a_last_rend_stamp)"
"r_ma001a_rend_rule_02",0,0,"l_ma001a_next_expire_stamp@SetToMinExpiration(s_001ma_sea_condition_01)Update(l_ma001a_next_expire_stamp)"
#
#####
#
"r_mmf001a_rend_rule_01",0,0,"l_mmf001a_last_rend_stamp@NullIfAnyGreater(s_001mmf_map_01_last_F12HR_stamp s_002mmf_map_01_last_F12HR_stamp s_003mmf_map_01_last_F12HR_stamp s_004mmf_map_01_last_F12HR_stamp s_005mmf_map_01_last_F12HR_stamp s_006mmf_map_01_last_F12HR_stamp s_007mmf_map_01_last_F12HR_stamp s_008mmf_map_01_last_F12HR_stamp s_009mmf_map_01_last_F12HR_stamp s_010mmf_map_01_last_F12HR_stamp s_011mmf_map_01_last_F12HR_stamp s_012mmf_map_01_last_F12HR_stamp s_013mmf_map_01_last_F12HR_stamp s_014mmf_map_01_last_F12HR_stamp)Update(l_mmf001a_last_rend_stamp)",0
"r_mmf001a_rend_rule_02",0,0,"l_mmf001a_next_expire_stamp@SetToMinExpiration(l_mmf001a_slang_next_expire s_001mmf_map_01_F12HR_start_times s_002mmf_map_01_F12HR_start_times s_003mmf_map_01_F12HR_start_times s_004mmf_map_01_F12HR_start_times s_005mmf_map_01_F12HR_start_times s_006mmf_map_01_F12HR_start_times s_007mmf_map_01_F12HR_start_times s_008mmf_map_01_F12HR_start_times s_009mmf_map_01_F12HR_start_times s_010mmf_map_01_F12HR_start_times s_011mmf_map_01_F12HR_start_times s_012mmf_map_01_F12HR_start_times s_013mmf_map_01_F12HR_start_times s_014mmf_map_01_F12HR_start_times)Update(l_mmf001a_next_expire_stamp)",0
#
#####
#
"r_rf001a_rend_rule_01",0,0,"l_rf001a_last_rend_stamp@NullIfAnyGreater(s_001rf_map_01_last_F12HR_stamp s_002rf_map_01_last_F12HR_stamp s_003rf_map_01_last_F12HR_stamp s_004rf_map_01_last_F12HR_stamp s_005rf_map_01_last_F12HR_stamp s_006rf_map_01_last_F12HR_stamp s_007rf_map_01_last_F12HR_stamp s_008rf_map_01_last_F12HR_stamp s_009rf_map_01_last_F12HR_stamp s_010rf_map_01_last_F12HR_stamp s_011rf_map_01_last_F12HR_stamp s_012rf_map_01_last_F12HR_stamp s_013rf_map_01_last_F12HR_stamp s_014rf_map_01_last_F12HR_stamp)Update(l_rf001a_last_rend_stamp)",0
"r_rf001a_rend_rule_02",0,0,"l_rf001a_next_expire_stamp@SetToMinExpiration(l_rf001a_slang_next_expire s_001rf_map_01_F12HR_start_times s_002rf_map_01_F12HR_start_times s_003rf_map_01_F12HR_start_times s_004rf_map_01_F12HR_start_times s_005rf_map_01_F12HR_start_times s_006rf_map_01_F12HR_start_times s_007rf_map_01_F12HR_start_times s_008rf_map_01_F12HR_start_times s_009rf_map_01_F12HR_start_times s_010rf_map_01_F12HR_start_times s_011rf_map_01_F12HR_start_times s_012rf_map_01_F12HR_start_times s_013rf_map_01_F12HR_start_times s_014rf_map_01_F12HR_start_times)Update(l_rf001a_next_expire_stamp)",0
#
#####
#
"r_ro001a_rend_rule_01",0,0,"l_ro001a_last_rend_stamp@NullIfAnyGreater(s_001ro_map_01_last_HO_stamp s_002ro_map_01_last_HO_stamp s_003ro_map_01_last_HO_stamp s_004ro_map_01_last_HO_stamp s_005ro_map_01_last_HO_stamp s_006ro_map_01_last_HO_stamp s_007ro_map_01_last_HO_stamp s_008ro_map_01_last_HO_stamp s_009ro_map_01_last_HO_stamp s_010ro_map_01_last_HO_stamp s_011ro_map_01_last_HO_stamp s_012ro_map_01_last_HO_stamp s_013ro_map_01_last_HO_stamp s_014ro_map_01_last_HO_stamp)Update(l_ro001a_last_rend_stamp)"
"r_ro001a_rend_rule_02",0,0,"l_ro001a_next_expire_stamp@SetToMinExpiration(s_001ro_map_01_raw_HO_data s_002ro_map_01_raw_HO_data s_003ro_map_01_raw_HO_data s_004ro_map_01_raw_HO_data s_005ro_map_01_raw_HO_data s_006ro_map_01_raw_HO_data s_007ro_map_01_raw_HO_data s_008ro_map_01_raw_HO_data s_009ro_map_01_raw_HO_data s_010ro_map_01_raw_HO_data s_011ro_map_01_raw_HO_data s_012ro_map_01_raw_HO_data s_013ro_map_01_raw_HO_data s_014ro_map_01_raw_HO_data)Update(l_ro001a_next_expire_stamp)"
#
#####
#
#NEVER #NOTE: For now, ALL the locations are updated at the same time so we will only check the s_001sk_last_SK_stamp entry
#NEVER #NOTE: For now, ALL the locations have the same expiration so we will only check the s_001sk_ski_area_code entry
#NEVER "r_sk001a_rend_rule_01",0,0,"l_sk001a_last_rend_stamp@NullIfAnyGreater(s_001sk_last_SK_stamp)Update(l_sk001a_last_rend_stamp)"
#NEVER "r_sk001a_rend_rule_02",0,0,"l_sk001a_next_expire_stamp@SetToMinExpiration(s_001sk_ski_area_code)Update(l_sk001a_next_expire_stamp)"
#NEVER "r_sk001b_rend_rule_01",0,0,"l_sk001b_last_rend_stamp@NullIfAnyGreater(s_001sk_last_SK_stamp)Update(l_sk001b_last_rend_stamp)"
#NEVER "r_sk001b_rend_rule_02",0,0,"l_sk001b_next_expire_stamp@SetToMinExpiration(s_001sk_ski_area_code)Update(l_sk001b_next_expire_stamp)"
#
#####
#
#####"r_ti001a_rend_rule_01",0,0,"l_ti001a_last_rend_stamp@NullIfAnyGreater(s_001ti_last_TI_stamp s_002ti_last_TI_stamp)Update(l_ti001a_last_rend_stamp)"
#####"r_ti001a_rend_rule_02",0,0,"l_ti001a_next_expire_stamp@SetToMinExpiration(s_001ti_high_tide_period_01_time s_002ti_high_tide_period_01_time)Update(l_ti001a_next_expire_stamp)"
"r_ti001a_rend_rule_01",0,0,"l_ti001a_last_rend_stamp@NullIfAnyGreater(s_001ti_last_TI_stamp)Update(l_ti001a_last_rend_stamp)"
"r_ti001a_rend_rule_02",0,0,"l_ti001a_next_expire_stamp@SetToMinExpiration(s_001ti_high_tide_period_01_time)Update(l_ti001a_next_expire_stamp)"
#
#####
#
"r_36f001_rend_rule_01",0,0,"l_36f001_last_rend_stamp@NullIfAnyGreater(s_00136f_last_FVAR_stamp)Update(l_36f001_last_rend_stamp)"
"r_36f001_rend_rule_02",0,0,"l_36f001_next_expire_stamp@SetToMinExpiration(l_36f001_slang_next_expire s_00136f_FVAR_start_times)Update(l_36f001_next_expire_stamp)"
#
#####
#
"r_24f001_rend_rule_01",0,0,"l_24f001_last_rend_stamp@NullIfAnyGreater(s_00124f_last_FVAR_stamp)Update(l_24f001_last_rend_stamp)"
"r_24f001_rend_rule_02",0,0,"l_24f001_next_expire_stamp@SetToMinExpiration(l_24f001_slang_next_expire s_00124f_FVAR_start_times)Update(l_24f001_next_expire_stamp)"
#
#####
#
"r_nws001_rend_rule_01",0,0,"l_nws001_last_rend_stamp@NullIfAnyGreater(s_001nws_last_NWS_stamp)Update(l_nws001_last_rend_stamp)"
"r_nws001_rend_rule_02",0,0,"l_nws001_next_expire_stamp@SetToMinExpiration(s_001nws_NWS_headline_text)Update(l_nws001_next_expire_stamp)"
#
#####
