A Hawk Developments Site Manager was Highly Commended at the LABC Warranty Regional Site Manager Awards held at Lancaster London on Tuesday 10th November 2015. As these awards have developed, LABC Warranty has seen build standards improve and are delighted with the quality of contenders nominated in 2015. With over 3000 eligible site managers, it is a great achievement to have been selected as one of the 16 national finalists.
Larry Shearer was recognised for his development at Limekiln Lane in Wellington, for achieving excellence in construction and in doing so, demonstrated exceptional site management and workmanship. This development included 50 new build properties which were built on behalf of The Wrekin Housing Trust.


text:
Chicago, Ill., Apr. 28, 2020 – Over the past month, we've seen businesses, brands, and individuals alike step up and give back to communities affected by COVID-19. These acts of kindness, both big and small, have offered a glimmer of hope in an otherwise frightening and stressful time.
The AZEK Company, makers of TimberTech decking and other sustainable building products, has shifted resources at its Vycom facility in Scranton, PA to produce antibacterial partition materials to be used in treatment centers providing care during the COVID-19 pandemic. Over the past month, AZEK provided roughly 5,000 hygienic plastic sheets to the State of New York to be used in the partitions at the Jacob K. Javits Convention Center, which has been transformed into a 2,000-bed temporary hospital.
Using these products, The AZEK Company has also designed temporary buildings, beds and other structures for medical use at the following facilities:
• SUNY Old Westbury (Old Westbury, NY)
• SUNY Stony Brook (Stony Brook, NY)
• DeVos Place Convention Center (Grand Rapids, MI)
Once the need for field hospitals dissipates, The AZEK Company will also be a resource to these sites by recycling the materials into other sustainable products. In the meantime, The AZEK Company is currently in touch with several state governments and stands ready to design and produce materials for additional emergency hospital conversions.
About The AZEK® Company
CPG Newco LLC (d/b/a The AZEK® Company) is an industry-leading manufacturer of beautiful, low-maintenance residential and commercial building products, committed to innovation, sustainability and research and design.
Christine Carter
Backbone Media
christine.carter@backbonemedia.net
SPAX Engineered Fasteners Set to Expand SPAX Crew of Influencers in 2023
Trex Company Announces New Products for 2023

redpajama_set_name: RedPajamaCommonCrawl


text:
Home NRC Library Document Collections Events, Reports Associated with Part 21 Reports 2000
Page Last Reviewed/Updated Friday, January 31, 2020
Part 21 Report - 2000-053
AUTOMATIC SWITCH CO.
HANOVER ROAD, FLORHAM PARK, NEW JERSEY 07932
NJ - (973)966-2000 / NY- (212)344-3765 FAX: (973) 966-2628
Document Control Desk
SUBJECT: ASCO General Controls NH Series
Hydramotor® Actuators
This is to inform you of a potential manufacturing problem with certain relief valve assemblies used in ASCO General Controls' pump assemblies supplied either as components of series NH Hydramotor® actuators, or as spare parts in kits. These Hydramotor® actuators are used in various applications in nuclear plants, including dampers in HVAC systems.
A total of 2 series NH Hydramotors®, in service for approximately 2 months in two different nuclear power plants reportedly failed to maintain the pistons in their fully retracted position. These units were removed from service and returned to the ASCO facility in Aiken, South Carolina.
Analysis of the returned units confirmed that the actuator was not maintaining the piston in the retracted position although the pump was running. Further analysis revealed that the adjustment screw in the relief valve assembly had backed out slightly, preventing the build-up of sufficient hydraulic pressure to overcome the piston spring force. Inspection of the relief valve revealed that the adjustment screw had not been staked. This staking operation is intended to prevent movement of the adjustment screw (see attached drawing). Although not documented on the relief valve assembly drawing, assemblers had been instructed to perform this operation on every relief valve. We have determined that this procedure was followed regularly by assembly personnel except for one assembler. All unstaked relief valves from on hand and distributor stock have been traced to this assembler. All records are being reviewed to identify product built by the assembler, so that customers can be notified. ASCO Engineering and QA have inrrnediately initiated changes to assembly procedures to insure that all critical steps including the staking operation are documented and verified.
One of the returned units has been extensively tested with the adjustment screw of the relief valve in the proper position, but not staked. The problem could not be duplicated (adjustment screw did not back out). Additional tests are in progress. Furthermore, there have been only two incidents of the adjustment screw backing out in almost 4 years of ASCO's production of these Hydramotor® actuators.
The potential failure described above may result in the actuator not maintaining the piston in the retracted position although the pump is running. We believe that in most, if not all, cases the return of the piston to the extended position is considered the fail-safe condition for the Hydramotor® actuator. As such, the described condition would result in the unit moving to the fail-safe condition. Each utility should determine the fail-safe mode of their Hydramotor®.
However, ASCO does not have adequate knowledge of the actual installation and operating conditions of these actuators to determine whether their malfunction would create a "substantial safety hazard" as defined in l0CFR21.3. We are likewise unable to conduct the evaluation necessary to make such a determination, which must be based on the specific applications of the product.
Identification of Affected Items/ Notification of Customers
Our investigation of this problem is continuing. ASCO plans to send a similar notification to affected customers delineating the potential problem with these relief valves by July 7". This notification will list all potentially affected product. Within two weeks of this interim notice, ASCO will provide individual purchasers with information (customer PO, quantity, product number, etc.) so that affected product can be identified. The notification will also include options to inspect for and correct the relief valve problem or offer assistance as necessary.
Should you wish to discuss this further, or obtain any additional information, please let us know. As additional information becomes available, we will forward it to you.
Richard Beverly
Senior Vice President, Sales and Marketing
Automatic Switch Company
RB/rd
Enclosure: View of NH90 Pump Assembly illustrating location of Relief Valve Assembly, 114040A (see image version of this document)


The aviation industry is part of our critical infrastructure. It is a complex ecosystem with many different players - airline operations, airports, aircraft manufacturers, ATC, FAA, EASA, TSA, etc. Aviation is the cornerstone of much of our national and international business, tourism, and trade. It is vital consumers have a high level of trust in the aviation industry.


Cuteness overload! If you're allergic to anything cute, be forewarned: This mug just might kill you! Seriously, the delightful My Little Pony 12 oz. Ceramic Mug is ideal for fans of the hit show My Little Pony: Friendship is Magic, specifically Pegasus pony Rainbow Dash. Colored blue overall and made to look like Rainbow Dash's adorable and smiling face, it includes the My Little Pony: Friendship is Magic logo on the inside and the words "Rainbow Dash" on the other side. This is the cutest mug ever for drinking your hot or cold beverages! Dishwasher safe.


Description: This was a request, and I couldnt resist sharing it with all of you nice people. Its spooky walking and hanging skeletons on a transparent background. Enjoy.
Description: a closet full of skeletons doing what skeletons do. they seem like a happy group of halloween partiers. midi is..bad to the bone..very fitting for the stars of this saver.
Description: Skulls on black background.
Description: From VisualParadox.com, a slightly spooky but gleaming crystal skull. For Halloween or other occasions. Subtle saver has optional music. Desktop theme available from Tootsies Theme Shop.
Description: It s made of bat, and eye of newt, and lots of gooey goop, it will enchant you and put a spell on you, this Halloween skull soup! Bats and skulls fly around the screen in this animated screensaver. Matching theme, wallpaper, XP bootscreen, Winamp and ICQ skins available separately. So if you are looking for a recipe that will knock you for a loop, then you must try the Witch s brew, the Halloween skull soup.
Description: The treacherous skullduggery Is a cunning dirty trick, It is dishonesy and chicanery And completely barbaric. There is some shady business here It s a trick and not a treat, These Halloween skulls betray and beguile, Their lies are pure deceit. Eyes flash and skulls bounce around the screen in this animated screensaver. Matching desktop theme, wallpaper, XP bootscreen, and Winamp skin available.
Description: Transparent with burning skulls bouncing.Each time they hit the sides it makes a spooky sound.When it hits another skull it makes a sound and changes directions.Made to compliment my theme,Gates Of Hell.Matching Hotbar,IE Skin and WinAmp.
Description: Skulls for halloween on a transparent background....Hope ya like it!
Description: The witch queen flies through the dark sky, her bloody skulls she takes, she brings them as tribute to her witch king, it s horror and fear that she makes. Scary skulls float around the screen in this ANIMATED screensaver. Matching wallpaper also available.
Description: Pretty hearts floating in the clouds for Valentine Day. Theme has icons, cursors, sounds and custom colors. The original wallpaper by Irene is available as is an animated screensaver with lots of hearts floating and some changing color. Screensaver has mutable music. Let this one lift up your heart and brighten your life.


text:
Illusory lovemaking...
By sobriquet, January 4, 2007 in Creativity, Spirituality & Philosophy
sobriquet
Climate or location:The Universe
The captain of a yacht and his wife are hosting a young male guest for a potential crew position for their planned Mediterranean cruise.
The captain asks the young man to demonstrate his sailing ability by climbing the main mast. Once the young man gets to the top of the mast he says to the captain far below...
"You could have asked me to go below deck if you were wanting to make love to your wife on the deck."
The captain answers back bewildered "We're not doing anything of the sort."
A minute later the young man repeats that he can see them making love on the deck and that he could leave if they wanted him to. The captain shouts that there is absolutely nothing of the sort going on. The young man says... "It must be an optical illusion due to the height and air temperature fluctuation."
The captain is utterly confused and asks the young man to descend from the mast and see for himself. Once he is down and confirms there is no lovemaking happening on deck the captain who is curious announces that he wants to climb the mast to see for himself why the young man was saying the bizarre things he was. As the captain is climbing the young man caresses the wife and proceeds to make love to her.
The captain who has got to the top of the mast by then looks down and says... "Wow, I must say that's a pretty convincing illusion."
gomaos
reborn... yet again...
Country:brisbane
Interests:Shamanism, Music, Markets and much more<br />Self-declared Shaman
Climate or location:brisbane
i made this tea again last made from psychotria carthginensis, heimia, calea, 1 datura leaf and mint to taste.
the first night it put me straight o sleep.
the 2nd night, last night, i slept, but not very good, woke up 2 am feeling bad so i took 2 valium *5mg each)
i had this really cool dream
i was back in Jakarta or somewhere in Indonesia or similar.
Everything outside was pretty grim, but there was this place I was in a large building with many people fluctuating in it.
There was all cool people in there, sexy indonesian chicks, white ones, black ones, all kinds.
Everybody was engaged in making love or similar things, some dudes were smoking bongs and such,
and i was just basically looking for a room. My son was with me, and one time when I stood at a window, a police car rolled up outside, and my son came and covered me so they couldn't see me, because he stood there.
Other than that he spent most of his time with other kids in some sort of playpen/jumping castle where they were continuously moving.
I asked some of the people, and they said: "yes it's 200 bucks for a room."
I thought : "damn, 200 bucks for a room how can I afford that and then you'd probably have to pay the girls too...'
At the last scene of that dream I was standing there umbling: "what, 200 bucks?' But Iwas urrounded by all these sexy girls, asian, german, whatever...' They were touching me at all sorts of places including my dick...
sadly enough I had to wake up because i had to pee...
because i really wanted to return to that dreamworld with all those girls, which was my vision of paradise, i took another 5mg valium.
I didn't return to that paradise house but was with a woman, whose identity I can't remember right now.
She sucked my dick until I almost came, but I woke up beforehand...
also during the night I had those crazy ideas about brugmansia flowers:
they are like vaginas.
If one was to get a brug flowers put it over one's dick, erected of course, and started masturbating, what would happen?
Would brug make you cut off your dick?
To be on the safe side, you would have to make proper sex:
The male lies down on his back, places brugs flower over erect dick, then the female comes and sits on brug flower and dick.
What would happen?
Edited January 4, 2007 by gomaos
Conan Troutman
Country:Gumboot country
Climate or location:S.W VIC Cold/Temperate
there would probably only be one way to find that out I reckon...
Country:Noth coast
Interests:Progress
Climate or location:North Coast
Benzos are supposed to interfere with the REM ( dreaming)part of sleep.
i wonder which way that would be....
You should be asking for volunteers for your experiment...
Ramon - dreaming doesnt only happen in REM phase of sleep
actually I'd be too scared myself...
with a brug flower that is...
i.e. you'd need some sitters to stand by and watch...
Go To Topic Listing Creativity, Spirituality & Philosophy


text:
#include "e.h"

E_API E_Config *e_config = NULL;

/* local subsystem functions */
static void      _e_config_save_cb(void *data);
static void      _e_config_free(E_Config *cfg);
static Eina_Bool _e_config_cb_timer(void *data);
static int       _e_config_eet_close_handle(Eet_File *ef, char *file);

/* local subsystem globals */
static int _e_config_save_block = 0;
static const char *_e_config_profile = NULL;

static E_Config_DD *_e_config_edd = NULL;
static E_Config_DD *_e_config_module_edd = NULL;
static E_Config_DD *_e_config_theme_edd = NULL;
static E_Config_DD *_e_config_desktop_bg_edd = NULL;
static E_Config_DD *_e_config_desklock_bg_edd = NULL;
static E_Config_DD *_e_config_desktop_name_edd = NULL;
static E_Config_DD *_e_config_desktop_window_profile_edd = NULL;
static E_Config_DD *_e_config_env_var_edd = NULL;
static E_Config_DD *_e_config_client_type_edd = NULL;

E_API int E_EVENT_CONFIG_MODE_CHANGED = 0;

#if 0
static E_Dialog *_e_config_error_dialog = NULL;

static void
_e_config_error_dialog_cb_delete(void *dia)
{
   if (dia == _e_config_error_dialog)
     _e_config_error_dialog = NULL;
}
#endif

static void
_e_config_edd_shutdown(void)
{
   E_CONFIG_DD_FREE(_e_config_edd);
   E_CONFIG_DD_FREE(_e_config_module_edd);
   E_CONFIG_DD_FREE(_e_config_theme_edd);
   E_CONFIG_DD_FREE(_e_config_desktop_bg_edd);
   E_CONFIG_DD_FREE(_e_config_desklock_bg_edd);
   E_CONFIG_DD_FREE(_e_config_desktop_name_edd);
   E_CONFIG_DD_FREE(_e_config_desktop_window_profile_edd);
   E_CONFIG_DD_FREE(_e_config_env_var_edd);
   E_CONFIG_DD_FREE(_e_config_client_type_edd);
}

static void
_e_config_edd_init(Eina_Bool old)
{
   _e_config_desktop_bg_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Background", E_Config_Desktop_Background);
#undef T
#undef D
#define T E_Config_Desktop_Background
#define D _e_config_desktop_bg_edd
   E_CONFIG_VAL(D, T, zone, INT);
   E_CONFIG_VAL(D, T, desk_x, INT);
   E_CONFIG_VAL(D, T, desk_y, INT);
   E_CONFIG_VAL(D, T, file, STR);

   _e_config_desktop_name_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Name", E_Config_Desktop_Name);
#undef T
#undef D
#define T E_Config_Desktop_Name
#define D _e_config_desktop_name_edd
   E_CONFIG_VAL(D, T, zone, INT);
   E_CONFIG_VAL(D, T, desk_x, INT);
   E_CONFIG_VAL(D, T, desk_y, INT);
   E_CONFIG_VAL(D, T, name, STR);

   _e_config_desktop_window_profile_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Window_Profile", E_Config_Desktop_Window_Profile);
#undef T
#undef D
#define T E_Config_Desktop_Window_Profile
#define D _e_config_desktop_window_profile_edd
   E_CONFIG_VAL(D, T, zone, INT);
   E_CONFIG_VAL(D, T, desk_x, INT);
   E_CONFIG_VAL(D, T, desk_y, INT);
   E_CONFIG_VAL(D, T, profile, STR);

   _e_config_module_edd = E_CONFIG_DD_NEW("E_Config_Module", E_Config_Module);
#undef T
#undef D
#define T E_Config_Module
#define D _e_config_module_edd
   E_CONFIG_VAL(D, T, name, STR);
   E_CONFIG_VAL(D, T, enabled, UCHAR);
   E_CONFIG_VAL(D, T, delayed, UCHAR);
   E_CONFIG_VAL(D, T, priority, INT);

   _e_config_env_var_edd = E_CONFIG_DD_NEW("E_Config_Env_Var", E_Config_Env_Var);
#undef T
#undef D
#define T E_Config_Env_Var
#define D _e_config_env_var_edd
   E_CONFIG_VAL(D, T, var, STR);
   E_CONFIG_VAL(D, T, val, STR);
   E_CONFIG_VAL(D, T, unset, UCHAR);

   _e_config_client_type_edd = E_CONFIG_DD_NEW("E_Config_Client_Type", E_Config_Client_Type);
#undef T
#undef D
#define T E_Config_Client_Type
#define D _e_config_client_type_edd
   E_CONFIG_VAL(D, T, name, STR);
   E_CONFIG_VAL(D, T, clas, STR);
   E_CONFIG_VAL(D, T, window_type, INT);
   E_CONFIG_VAL(D, T, client_type, INT);

   _e_config_edd = E_CONFIG_DD_NEW("E_Config", E_Config);
#undef T
#undef D
#define T E_Config
#define D _e_config_edd
   /**/ /* == already configurable via ipc */
   E_CONFIG_VAL(D, T, config_version, INT);
   E_CONFIG_VAL(D, T, desktop_default_background, STR);
   E_CONFIG_VAL(D, T, desktop_default_name, STR);
   E_CONFIG_VAL(D, T, desktop_default_window_profile, STR);
   E_CONFIG_LIST(D, T, desktop_backgrounds, _e_config_desktop_bg_edd);
   E_CONFIG_LIST(D, T, desktop_names, _e_config_desktop_name_edd);
   E_CONFIG_LIST(D, T, desktop_window_profiles, _e_config_desktop_window_profile_edd);
   E_CONFIG_VAL(D, T, framerate, DOUBLE);
   E_CONFIG_VAL(D, T, priority, INT);
   E_CONFIG_VAL(D, T, zone_desks_x_count, INT);
   E_CONFIG_VAL(D, T, zone_desks_y_count, INT);
   E_CONFIG_LIST(D, T, modules, _e_config_module_edd);
   E_CONFIG_VAL(D, T, window_placement_policy, INT);
   E_CONFIG_VAL(D, T, focus_policy, INT);
   E_CONFIG_VAL(D, T, focus_policy_ext, INT);
   E_CONFIG_VAL(D, T, focus_setting, INT);
   E_CONFIG_VAL(D, T, always_click_to_raise, INT);
   E_CONFIG_VAL(D, T, always_click_to_focus, INT);
   E_CONFIG_VAL(D, T, use_auto_raise, INT);
   E_CONFIG_VAL(D, T, maximize_policy, INT);
   E_CONFIG_VAL(D, T, allow_manip, INT);
   E_CONFIG_VAL(D, T, kill_if_close_not_possible, INT);
   E_CONFIG_VAL(D, T, kill_process, INT);
   E_CONFIG_VAL(D, T, kill_timer_wait, DOUBLE);
   E_CONFIG_VAL(D, T, ping_clients, INT);
   E_CONFIG_VAL(D, T, use_e_cursor, INT);
   E_CONFIG_VAL(D, T, cursor_size, INT);
   E_CONFIG_VAL(D, T, transient.move, INT);
   E_CONFIG_VAL(D, T, transient.resize, INT);
   E_CONFIG_VAL(D, T, transient.raise, INT);
   E_CONFIG_VAL(D, T, transient.lower, INT);
   E_CONFIG_VAL(D, T, transient.layer, INT);
   E_CONFIG_VAL(D, T, transient.desktop, INT);
   E_CONFIG_VAL(D, T, transient.iconify, INT);
   E_CONFIG_VAL(D, T, fullscreen_policy, INT);
   E_CONFIG_VAL(D, T, dpms_enable, INT);
   E_CONFIG_VAL(D, T, dpms_standby_enable, INT);
   E_CONFIG_VAL(D, T, dpms_suspend_enable, INT);
   E_CONFIG_VAL(D, T, dpms_off_enable, INT);
   E_CONFIG_VAL(D, T, dpms_standby_timeout, INT);
   E_CONFIG_VAL(D, T, dpms_suspend_timeout, INT);
   E_CONFIG_VAL(D, T, dpms_off_timeout, INT);
   E_CONFIG_VAL(D, T, no_dpms_on_fullscreen, UCHAR);
   E_CONFIG_VAL(D, T, mouse_hand, INT);
   E_CONFIG_VAL(D, T, border_raise_on_mouse_action, INT);
   E_CONFIG_VAL(D, T, border_raise_on_focus, INT);
   E_CONFIG_VAL(D, T, raise_on_revert_focus, INT);
   E_CONFIG_VAL(D, T, theme_default_border_style, STR);
   E_CONFIG_VAL(D, T, screen_limits, INT);
   E_CONFIG_VAL(D, T, ping_clients_interval, INT);
   E_CONFIG_VAL(D, T, border_keyboard.timeout, DOUBLE);
   E_CONFIG_VAL(D, T, border_keyboard.move.dx, UCHAR);
   E_CONFIG_VAL(D, T, border_keyboard.move.dy, UCHAR);
   E_CONFIG_VAL(D, T, border_keyboard.resize.dx, UCHAR);
   E_CONFIG_VAL(D, T, border_keyboard.resize.dy, UCHAR);
   E_CONFIG_VAL(D, T, scale.min, DOUBLE);
   E_CONFIG_VAL(D, T, scale.max, DOUBLE);
   E_CONFIG_VAL(D, T, scale.factor, DOUBLE);
   E_CONFIG_VAL(D, T, scale.base_dpi, INT);
   E_CONFIG_VAL(D, T, scale.use_dpi, UCHAR);
   E_CONFIG_VAL(D, T, scale.use_custom, UCHAR);
   E_CONFIG_VAL(D, T, show_cursor, UCHAR);
   E_CONFIG_VAL(D, T, idle_cursor, UCHAR);
   E_CONFIG_LIST(D, T, env_vars, _e_config_env_var_edd);
   E_CONFIG_VAL(D, T, xkb.only_label, INT);
   E_CONFIG_VAL(D, T, xkb.default_model, STR);
   E_CONFIG_VAL(D, T, xkb.dont_touch_my_damn_keyboard, UCHAR);
   E_CONFIG_VAL(D, T, xkb.use_cache, UCHAR);
   E_CONFIG_VAL(D, T, xkb.delay_held_key_input_to_focus, UINT);
   E_CONFIG_VAL(D, T, xkb.default_rmlvo.rules, STR);
   E_CONFIG_VAL(D, T, xkb.default_rmlvo.model, STR);
   E_CONFIG_VAL(D, T, xkb.default_rmlvo.layout, STR);
   E_CONFIG_VAL(D, T, xkb.default_rmlvo.variant, STR);
   E_CONFIG_VAL(D, T, xkb.default_rmlvo.options, STR);
   E_CONFIG_VAL(D, T, keyboard.repeat_delay, INT);
   E_CONFIG_VAL(D, T, keyboard.repeat_rate, INT);
   E_CONFIG_VAL(D, T, use_desktop_window_profile, INT);
#ifdef _F_ZONE_WINDOW_ROTATION_
   E_CONFIG_VAL(D, T, wm_win_rotation, UCHAR);
#endif
   E_CONFIG_VAL(D, T, use_cursor_timer, INT);
   E_CONFIG_VAL(D, T, cursor_timer_interval, INT);
   E_CONFIG_LIST(D, T, client_types, _e_config_client_type_edd);
   E_CONFIG_VAL(D, T, comp_shadow_file, STR);
   E_CONFIG_VAL(D, T, wl_sock_access.use, UCHAR);
   E_CONFIG_VAL(D, T, wl_sock_access.owner, STR);
   E_CONFIG_VAL(D, T, wl_sock_access.group, STR);
   E_CONFIG_VAL(D, T, wl_sock_access.permissions, INT);
   E_CONFIG_VAL(D, T, wl_sock_access.smack.use, UCHAR);
   E_CONFIG_VAL(D, T, wl_sock_access.smack.name, STR);
   E_CONFIG_VAL(D, T, wl_sock_access.smack.value, STR);
   E_CONFIG_VAL(D, T, wl_sock_access.smack.flags, INT);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.use, UCHAR);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.link_name, STR);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.owner, STR);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.group, STR);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.smack.name, STR);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.smack.value, STR);
   E_CONFIG_VAL(D, T, wl_sock_symlink_access.smack.flags, INT);
   E_CONFIG_VAL(D, T, sleep_for_dri, INT);
   E_CONFIG_VAL(D, T, create_wm_ready, INT);
   E_CONFIG_VAL(D, T, create_wm_start, INT);
   E_CONFIG_VAL(D, T, comp_canvas_bg.r, UCHAR);
   E_CONFIG_VAL(D, T, comp_canvas_bg.g, UCHAR);
   E_CONFIG_VAL(D, T, comp_canvas_bg.b, UCHAR);
   E_CONFIG_VAL(D, T, comp_canvas_bg.a, UCHAR);
   E_CONFIG_VAL(D, T, comp_canvas_bg.opmode, INT);
   E_CONFIG_VAL(D, T, delayed_load_idle_count, INT);
   E_CONFIG_VAL(D, T, use_buffer_flush, UCHAR);
}

/* externally accessible functions */
EINTERN int
e_config_init(void)
{
   E_EVENT_CONFIG_MODE_CHANGED = ecore_event_type_new();

   /* if environment var set - use this profile name */
   _e_config_profile = eina_stringshare_add(getenv("E_CONF_PROFILE"));

   _e_config_edd_init(EINA_FALSE);

   e_config_load();
   EINA_SAFETY_ON_NULL_RETURN_VAL(e_config, 0);

   e_config_save_queue();
   return 1;
}

EINTERN int
e_config_shutdown(void)
{
   eina_stringshare_del(_e_config_profile);

   _e_config_edd_shutdown();

   return 1;
}

E_API void
e_config_load(void)
{
   int reload = 0;

   e_config = e_config_domain_load("e", _e_config_edd);
   if (e_config)
     {
        /* major version change - that means wipe and restart */
        if ((e_config->config_version) < E_CONFIG_FILE_EPOCH * 1000000)
          {
             /* your config is too old - need new defaults */
             _e_config_free(e_config);
             e_config = NULL;
             reload = 1;
             ecore_timer_add(1.0, _e_config_cb_timer,
                             _("Settings data needed upgrading. Your old settings have
"
                               "been wiped and a new set of defaults initialized. This
"
                               "will happen regularly during development, so don't report a
"
                               "bug. This simply means Enlightenment needs new settings
"
                               "data by default for usable functionality that your old
"
                               "settings simply lack. This new set of defaults will fix
"
                               "that by adding it in. You can re-configure things now to your
"
                               "liking. Sorry for the hiccup in your settings.
"));
          }
        /* config is too new? odd! suspect corruption? */
        else if (e_config->config_version > E_CONFIG_FILE_VERSION)
          {
             /* your config is too new - what the fuck??? */
             _e_config_free(e_config);
             e_config = NULL;
             reload = 1;
             ecore_timer_add(1.0, _e_config_cb_timer,
                             _("Your settings are NEWER than Enlightenment. This is very
"
                               "strange. This should not happen unless you downgraded
"
                               "Enlightenment or copied the settings from a place where
"
                               "a newer version of Enlightenment was running. This is bad and
"
                               "as a precaution your settings have been now restored to
"
                               "defaults. Sorry for the inconvenience.
"));
          }
        if (reload)
          {
             e_config_profile_del(e_config_profile_get());
             e_config_profile_set("default");
             e_config = e_config_domain_load("e", _e_config_edd);
          }
     }
   while (!e_config)
     {
        _e_config_edd_shutdown();
        _e_config_edd_init(EINA_TRUE);
        e_config = e_config_domain_load("e", _e_config_edd);
        /* I made a c&p error here and fucked the world, so this ugliness
         * will be my public mark of shame until E :/
         * -zmike, 2013
         */
        if (e_config)
          {
             /* this is essentially CONFIG_VERSION_CHECK(7) */
             INF("Performing config upgrade to %d.%d", 1, 7);
             _e_config_edd_shutdown();
             _e_config_edd_init(EINA_FALSE);
             break;
          }
#undef T
#undef D
        e_config_profile_set("default");
        if (!reload) e_config_profile_del(e_config_profile_get());
        e_config_save_block_set(1);
        e_error_message_show(_("Could not load e.cfg"));
        return;
     }

#define CONFIG_VERSION_CHECK(VERSION) \
  if (e_config->config_version - (E_CONFIG_FILE_EPOCH * 1000000) < (VERSION))

#define CONFIG_VERSION_UPDATE_INFO(VERSION) \
  INF("Performing config upgrade for %d.%d", E_CONFIG_FILE_EPOCH, VERSION);

   if (e_config->config_version < E_CONFIG_FILE_VERSION)
     {
        CONFIG_VERSION_CHECK(18)
          {
             ;
          }
        CONFIG_VERSION_CHECK(19)
          {
             CONFIG_VERSION_UPDATE_INFO(19);

             /* set (400, 25) as the default values of repeat delay, rate */
             e_config->keyboard.repeat_delay = 400;
             e_config->keyboard.repeat_rate = 25;
          }
     }

   e_config->config_version = E_CONFIG_FILE_VERSION;

   /* limit values so they are sane */
   E_CONFIG_LIMIT(e_config->framerate, 1.0, 200.0);
   E_CONFIG_LIMIT(e_config->priority, 0, 19);
   E_CONFIG_LIMIT(e_config->zone_desks_x_count, 1, 64);
   E_CONFIG_LIMIT(e_config->zone_desks_y_count, 1, 64);
   E_CONFIG_LIMIT(e_config->window_placement_policy, E_WINDOW_PLACEMENT_SMART, E_WINDOW_PLACEMENT_MANUAL);
   E_CONFIG_LIMIT(e_config->focus_policy, 0, 2);
   E_CONFIG_LIMIT(e_config->focus_policy_ext, 0, 1);
   E_CONFIG_LIMIT(e_config->focus_setting, 0, 3);
   E_CONFIG_LIMIT(e_config->always_click_to_raise, 0, 1);
   E_CONFIG_LIMIT(e_config->always_click_to_focus, 0, 1);
   E_CONFIG_LIMIT(e_config->use_auto_raise, 0, 1);
   E_CONFIG_LIMIT(e_config->maximize_policy, E_MAXIMIZE_FULLSCREEN, E_MAXIMIZE_DIRECTION);
   E_CONFIG_LIMIT(e_config->allow_manip, 0, 1);
   E_CONFIG_LIMIT(e_config->kill_if_close_not_possible, 0, 1);
   E_CONFIG_LIMIT(e_config->kill_process, 0, 1);
   E_CONFIG_LIMIT(e_config->kill_timer_wait, 0.0, 120.0);
   E_CONFIG_LIMIT(e_config->ping_clients, 0, 1);
   E_CONFIG_LIMIT(e_config->use_e_cursor, 0, 1);
   E_CONFIG_LIMIT(e_config->cursor_size, 0, 1024);
   E_CONFIG_LIMIT(e_config->dpms_enable, 0, 1);
   E_CONFIG_LIMIT(e_config->dpms_standby_enable, 0, 1);
   E_CONFIG_LIMIT(e_config->dpms_suspend_enable, 0, 1);
   E_CONFIG_LIMIT(e_config->dpms_off_enable, 0, 1);
   E_CONFIG_LIMIT(e_config->dpms_standby_timeout, 30, 5400);
   E_CONFIG_LIMIT(e_config->dpms_suspend_timeout, 30, 5400);
   E_CONFIG_LIMIT(e_config->dpms_off_timeout, 30, 5400);
   E_CONFIG_LIMIT(e_config->mouse_hand, 0, 1);
   E_CONFIG_LIMIT(e_config->border_raise_on_mouse_action, 0, 1);
   E_CONFIG_LIMIT(e_config->border_raise_on_focus, 0, 1);
   E_CONFIG_LIMIT(e_config->raise_on_revert_focus, 0, 1);
   E_CONFIG_LIMIT(e_config->screen_limits, 0, 2);
   E_CONFIG_LIMIT(e_config->ping_clients_interval, 16, 1024);
   E_CONFIG_LIMIT(e_config->border_keyboard.move.dx, 1, 255);
   E_CONFIG_LIMIT(e_config->border_keyboard.move.dy, 1, 255);
   E_CONFIG_LIMIT(e_config->border_keyboard.resize.dx, 1, 255);
   E_CONFIG_LIMIT(e_config->border_keyboard.resize.dy, 1, 255);
   E_CONFIG_LIMIT(e_config->show_cursor, 0, 1);
   E_CONFIG_LIMIT(e_config->xkb.delay_held_key_input_to_focus, 0,5000); // 5000(ms) == 5(s)
   E_CONFIG_LIMIT(e_config->keyboard.repeat_delay, -1, 1000); // 1 second
   E_CONFIG_LIMIT(e_config->keyboard.repeat_rate, -1, 1000); // 1 second
   E_CONFIG_LIMIT(e_config->use_cursor_timer, 0, 1);
   E_CONFIG_LIMIT(e_config->sleep_for_dri, 0, 1);
   E_CONFIG_LIMIT(e_config->create_wm_ready, 0, 1);
   E_CONFIG_LIMIT(e_config->create_wm_start, 0, 1);
   E_CONFIG_LIMIT(e_config->comp_canvas_bg.r, 0, 255);
   E_CONFIG_LIMIT(e_config->comp_canvas_bg.g, 0, 255);
   E_CONFIG_LIMIT(e_config->comp_canvas_bg.b, 0, 255);
   E_CONFIG_LIMIT(e_config->comp_canvas_bg.a, 0, 255);
   E_CONFIG_LIMIT(e_config->comp_canvas_bg.opmode, 0, 11);
   E_CONFIG_LIMIT(e_config->delayed_load_idle_count, 0, 100);
   E_CONFIG_LIMIT(e_config->use_buffer_flush, 0, 1);
}

E_API int
e_config_save(void)
{
   _e_config_save_cb(NULL);
   return e_config_domain_save("e", _e_config_edd, e_config);
}

E_API void
e_config_save_queue(void)
{
   // TODO: add ecore_timer_add and call _e_config_save_cb
   _e_config_save_cb(NULL);
}

E_API const char *
e_config_profile_get(void)
{
   return _e_config_profile;
}

E_API void
e_config_profile_set(const char *prof)
{
   eina_stringshare_replace(&_e_config_profile, prof);
   e_util_env_set("E_CONF_PROFILE", _e_config_profile);
}

E_API char *
e_config_profile_dir_get(const char *prof)
{
   char buf[PATH_MAX];

   e_user_dir_snprintf(buf, sizeof(buf), "config/%s", prof);
   if (ecore_file_is_dir(buf)) return strdup(buf);
   e_prefix_data_snprintf(buf, sizeof(buf), "data/config/%s", prof);
   if (ecore_file_is_dir(buf)) return strdup(buf);
   return NULL;
}

static int
_cb_sort_files(char *f1, char *f2)
{
   return strcmp(f1, f2);
}

E_API Eina_List *
e_config_profile_list(void)
{
   Eina_List *files;
   char buf[PATH_MAX], *p;
   Eina_List *flist = NULL;
   size_t len;

   len = e_user_dir_concat_static(buf, "config");
   if (len + 1 >= (int)sizeof(buf))
     return NULL;

   files = ecore_file_ls(buf);

   buf[len] = '/';
   len++;

   p = buf + len;
   len = sizeof(buf) - len;
   if (files)
     {
        char *file;

        files = eina_list_sort(files, 0, (Eina_Compare_Cb)_cb_sort_files);
        EINA_LIST_FREE(files, file)
          {
             if (eina_strlcpy(p, file, len) >= len)
               {
                  free(file);
                  continue;
               }
             if (ecore_file_is_dir(buf))
               flist = eina_list_append(flist, file);
             else
               free(file);
          }
     }
   len = e_prefix_data_concat_static(buf, "data/config");
   if (len + 1 >= sizeof(buf))
     return NULL;

   files = ecore_file_ls(buf);

   buf[len] = '/';
   len++;

   p = buf + len;
   len = sizeof(buf) - len;
   if (files)
     {
        char *file;
        files = eina_list_sort(files, 0, (Eina_Compare_Cb)_cb_sort_files);
        EINA_LIST_FREE(files, file)
          {
             if (eina_strlcpy(p, file, len) >= len)
               {
                  free(file);
                  continue;
               }
             if (ecore_file_is_dir(buf))
               {
                  const Eina_List *l;
                  const char *tmp;
                  EINA_LIST_FOREACH(flist, l, tmp)
                    if (!strcmp(file, tmp)) break;

                  if (!l) flist = eina_list_append(flist, file);
                  else free(file);
               }
             else
               free(file);
          }
     }
   return flist;
}

E_API void
e_config_profile_add(const char *prof)
{
   char buf[4096];
   if (e_user_dir_snprintf(buf, sizeof(buf), "config/%s", prof) >= sizeof(buf))
     return;
   ecore_file_mkdir(buf);
}

E_API void
e_config_profile_del(const char *prof)
{
   char buf[4096];
   if (e_user_dir_snprintf(buf, sizeof(buf), "config/%s", prof) >= sizeof(buf))
     return;
   ecore_file_recursive_rm(buf);
}

E_API void
e_config_save_block_set(int block)
{
   _e_config_save_block = block;
}

E_API int
e_config_save_block_get(void)
{
   return _e_config_save_block;
}

/**
 * Loads configurations from file located in the working profile
 * The configurations are stored in a struct declated by the
 * macros E_CONFIG_DD_NEW and E_CONFIG_TYPE
 *
 * @param domain of the configuration file.
 * @param edd to struct definition
 * @return returns allocated struct on success, if unable to find config returns null
 */
E_API void *
e_config_domain_load(const char *domain, E_Config_DD *edd)
{
   Eet_File *ef;
   char buf[4096];
   void *data = NULL;

   e_user_dir_snprintf(buf, sizeof(buf), "config/%s/%s.cfg",
                       _e_config_profile, domain);
   ef = eet_open(buf, EET_FILE_MODE_READ);
   if (ef)
     {
        data = eet_data_read(ef, edd, "config");
        _e_config_eet_close_handle(ef, buf);
        if (data)
          {
             ELOGF("CFG", "Loaded %s", NULL, NULL, buf);
             return data;
          }
     }
   else
     {
        ELOGF("CFG", "Could not load %s", NULL, NULL, buf);
     }

   return e_config_domain_system_load(domain, edd);
}

E_API void *
e_config_domain_system_load(const char *domain, E_Config_DD *edd)
{
   Eet_File *ef;
   char buf[4096];
   void *data = NULL;

   e_prefix_data_snprintf(buf, sizeof(buf), "data/config/%s/%s.cfg",
                          _e_config_profile, domain);
   ef = eet_open(buf, EET_FILE_MODE_READ);
   if (ef)
     {
        data = eet_data_read(ef, edd, "config");
        _e_config_eet_close_handle(ef, buf);
        if (data)
          {
             ELOGF("CFG", "Loaded %s", NULL, NULL, buf);
             return data;
          }

        ELOGF("CFG", "Could not read data %s", NULL, NULL, buf);
     }

   ELOGF("CFG", "Could not load %s", NULL, NULL, buf);

   return data;
}

#if 0
static void
_e_config_mv_error(const char *from, const char *to)
{
   E_Dialog *dia;
   char buf[8192];

   if (_e_config_error_dialog) return;

   dia = e_dialog_new(NULL, "E", "_sys_error_logout_slow");
   EINA_SAFETY_ON_NULL_RETURN(dia);

   e_dialog_title_set(dia, _("Enlightenment Settings Write Problems"));
   e_dialog_icon_set(dia, "dialog-error", 64);
   snprintf(buf, sizeof(buf),
            _("Enlightenment has had an error while moving config files
"
              "from:
"
              "%s
"
              "
"
              "to:
"
              "%s
"
              "
"
              "The rest of the write has been aborted for safety.
"),
            from, to);
   e_dialog_text_set(dia, buf);
   e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
   e_dialog_button_focus_num(dia, 0);
   //elm_win_center(dia->win, 1, 1);
   e_object_del_attach_func_set(E_OBJECT(dia),
                                _e_config_error_dialog_cb_delete);
   e_dialog_show(dia);
   _e_config_error_dialog = dia;
}
#endif

E_API int
e_config_profile_save(void)
{
#if 0
   Eet_File *ef;
   char buf[4096], buf2[4096];
   int ok = 0;

   /* FIXME: check for other sessions fo E running */
   e_user_dir_concat_static(buf, "config/profile.cfg");
   e_user_dir_concat_static(buf2, "config/profile.cfg.tmp");

   ef = eet_open(buf2, EET_FILE_MODE_WRITE);
   if (ef)
     {
        ok = eet_write(ef, "config", _e_config_profile,
                       strlen(_e_config_profile), 0);
        if (_e_config_eet_close_handle(ef, buf2))
          {
             Eina_Bool ret = EINA_TRUE;

             if (_e_config_revisions > 0)
               {
                  int i;
                  char bsrc[4096], bdst[4096];

                  for (i = _e_config_revisions; i > 1; i--)
                    {
                       e_user_dir_snprintf(bsrc, sizeof(bsrc), "config/profile.%i.cfg", i - 1);
                       e_user_dir_snprintf(bdst, sizeof(bdst), "config/profile.%i.cfg", i);
                       if ((ecore_file_exists(bsrc)) &&
                           (ecore_file_size(bsrc)))
                         {
                            ret = ecore_file_mv(bsrc, bdst);
                            if (!ret)
                              {
                                 _e_config_mv_error(bsrc, bdst);
                                 break;
                              }
                         }
                    }
                  if (ret)
                    {
                       e_user_dir_snprintf(bsrc, sizeof(bsrc), "config/profile.cfg");
                       e_user_dir_snprintf(bdst, sizeof(bdst), "config/profile.1.cfg");
                       ret = ecore_file_mv(bsrc, bdst);
//                       if (!ret)
//                          _e_config_mv_error(bsrc, bdst);
                    }
               }
             ret = ecore_file_mv(buf2, buf);
             if (!ret) _e_config_mv_error(buf2, buf);
          }
        ecore_file_unlink(buf2);
     }
   return ok;
#else
   return 1;
#endif
}

/**
 * Saves configurations to file located in the working profile
 * The configurations are read from a struct declated by the
 * macros E_CONFIG_DD_NEW and E_CONFIG_TYPE
 *
 * @param domain  name of the configuration file.
 * @param edd pointer to struct definition
 * @param data struct to save as configuration file
 * @return 1 if save success, 0 on failure
 */
E_API int
e_config_domain_save(const char *domain, E_Config_DD *edd, const void *data)
{
   Eet_File *ef;
   char buf[4096], buf2[4096];
   int ok = 0, ret;
   size_t len, len2;

   if (_e_config_save_block) return 0;
   /* FIXME: check for other sessions fo E running */
   len = e_user_dir_snprintf(buf, sizeof(buf), "config/%s", _e_config_profile);
   if (len + 1 >= sizeof(buf)) return 0;

   ecore_file_mkdir(buf);

   buf[len] = '/';
   len++;

   len2 = eina_strlcpy(buf + len, domain, sizeof(buf) - len);
   if (len2 + sizeof(".cfg") >= sizeof(buf) - len) return 0;

   len += len2;

   memcpy(buf + len, ".cfg", sizeof(".cfg"));
   len += sizeof(".cfg") - 1;

   if (len + sizeof(".tmp") >= sizeof(buf)) return 0;
   memcpy(buf2, buf, len);
   memcpy(buf2 + len, ".tmp", sizeof(".tmp"));

   ef = eet_open(buf2, EET_FILE_MODE_WRITE);
   if (ef)
     {
        ok = eet_data_write(ef, edd, "config", data, 1);
        if (_e_config_eet_close_handle(ef, buf2))
          {
             ret = ecore_file_mv(buf2, buf);
             if (!ret)
               ERR("*** Error saving config. ***");
          }
        ecore_file_unlink(buf2);
     }
   return ok;
}

E_API void
e_config_mode_changed(void)
{
   ecore_event_add(E_EVENT_CONFIG_MODE_CHANGED, NULL, NULL, NULL);
}

/* local subsystem functions */
static void
_e_config_save_cb(void *data EINA_UNUSED)
{
   e_config_profile_save();
   e_module_save_all();
   e_config_domain_save("e", _e_config_edd, e_config);
}

static void
_e_config_free(E_Config *ecf)
{
   E_Config_Module *em;
   E_Config_Env_Var *evr;
   E_Config_Desktop_Window_Profile *wp;

   if (!ecf) return;

   EINA_LIST_FREE(ecf->desktop_window_profiles, wp)
     {
        eina_stringshare_del(wp->profile);
        E_FREE(wp);
     }

   eina_stringshare_del(ecf->xkb.default_model);
   eina_stringshare_del(ecf->xkb.default_rmlvo.rules);
   eina_stringshare_del(ecf->xkb.default_rmlvo.model);
   eina_stringshare_del(ecf->xkb.default_rmlvo.layout);
   eina_stringshare_del(ecf->xkb.default_rmlvo.variant);
   eina_stringshare_del(ecf->xkb.default_rmlvo.options);

   eina_stringshare_del(ecf->wl_sock_access.owner);
   eina_stringshare_del(ecf->wl_sock_access.group);
   eina_stringshare_del(ecf->wl_sock_access.smack.name);
   eina_stringshare_del(ecf->wl_sock_access.smack.value);

   eina_stringshare_del(ecf->wl_sock_symlink_access.link_name);
   eina_stringshare_del(ecf->wl_sock_symlink_access.owner);
   eina_stringshare_del(ecf->wl_sock_symlink_access.group);
   eina_stringshare_del(ecf->wl_sock_symlink_access.smack.name);
   eina_stringshare_del(ecf->wl_sock_symlink_access.smack.value);

   EINA_LIST_FREE(ecf->modules, em)
     {
        if (em->name) eina_stringshare_del(em->name);
        E_FREE(em);
     }
   if (ecf->comp_shadow_file) eina_stringshare_del(ecf->comp_shadow_file);
   if (ecf->desktop_default_background) eina_stringshare_del(ecf->desktop_default_background);
   if (ecf->desktop_default_name) eina_stringshare_del(ecf->desktop_default_name);
   if (ecf->desktop_default_window_profile) eina_stringshare_del(ecf->desktop_default_window_profile);
   if (ecf->theme_default_border_style) eina_stringshare_del(ecf->theme_default_border_style);
   EINA_LIST_FREE(ecf->env_vars, evr)
     {
        if (evr->var) eina_stringshare_del(evr->var);
        if (evr->val) eina_stringshare_del(evr->val);
        E_FREE(evr);
     }

   E_FREE(ecf);
}

static Eina_Bool
_e_config_cb_timer(void *data)
{
   e_util_dialog_show(_("Settings Upgraded"), "%s", (char *)data);
   return 0;
}

static int
_e_config_eet_close_handle(Eet_File *ef, char *file)
{
   Eet_Error err;
   char *erstr = NULL;

   err = eet_close(ef);
   switch (err)
     {
      case EET_ERROR_NONE:
        /* all good - no error */
        break;

      case EET_ERROR_BAD_OBJECT:
        erstr = _("The EET file handle is bad.");
        break;

      case EET_ERROR_EMPTY:
        erstr = _("The file data is empty.");
        break;

      case EET_ERROR_NOT_WRITABLE:
        erstr = _("The file is not writable. Perhaps the disk is read-only
or you lost permissions to your files.");
        break;

      case EET_ERROR_OUT_OF_MEMORY:
        erstr = _("Memory ran out while preparing the write.
Please free up memory.");
        break;

      case EET_ERROR_WRITE_ERROR:
        erstr = _("This is a generic error.");
        break;

      case EET_ERROR_WRITE_ERROR_FILE_TOO_BIG:
        erstr = _("The settings file is too large.
It should be very small (a few hundred KB at most).");
        break;

      case EET_ERROR_WRITE_ERROR_IO_ERROR:
        erstr = _("You have I/O errors on the disk.
Maybe it needs replacing?");
        break;

      case EET_ERROR_WRITE_ERROR_OUT_OF_SPACE:
        erstr = _("You ran out of space while writing the file.");
        break;

      case EET_ERROR_WRITE_ERROR_FILE_CLOSED:
        erstr = _("The file was closed while writing.");
        break;

      case EET_ERROR_MMAP_FAILED:
        erstr = _("Memory-mapping (mmap) of the file failed.");
        break;

      case EET_ERROR_X509_ENCODING_FAILED:
        erstr = _("X509 Encoding failed.");
        break;

      case EET_ERROR_SIGNATURE_FAILED:
        erstr = _("Signature failed.");
        break;

      case EET_ERROR_INVALID_SIGNATURE:
        erstr = _("The signature was invalid.");
        break;

      case EET_ERROR_NOT_SIGNED:
        erstr = _("Not signed.");
        break;

      case EET_ERROR_NOT_IMPLEMENTED:
        erstr = _("Feature not implemented.");
        break;

      case EET_ERROR_PRNG_NOT_SEEDED:
        erstr = _("PRNG was not seeded.");
        break;

      case EET_ERROR_ENCRYPT_FAILED:
        erstr = _("Encryption failed.");
        break;

      case EET_ERROR_DECRYPT_FAILED:
        erstr = _("Decryption failed.");
        break;

      default: /* if we get here eet added errors we don't know */
        erstr = _("The error is unknown to Enlightenment.");
        break;
     }
   if (erstr)
     {
        // TODO - yigl
#if 0
        /* delete any partially-written file */
        ecore_file_unlink(file);
        /* only show dialog for first error - further ones are likely */
        /* more of the same error */
        if (!_e_config_error_dialog)
          {
             E_Dialog *dia;

             dia = e_dialog_new(NULL, "E", "_sys_error_logout_slow");
             if (dia)
               {
                  char buf[8192];

                  e_dialog_title_set(dia, _("Enlightenment Settings Write Problems"));
                  e_dialog_icon_set(dia, "dialog-error", 64);
                  snprintf(buf, sizeof(buf),
                           _("Enlightenment has had an error while writing
"
                             "its config file.
"
                             "%s
"
                             "
"
                             "The file where the error occurred was:
"
                             "%s
"
                             "
"
                             "This file has been deleted to avoid corrupt data.
"),
                           erstr, file);
                  e_dialog_text_set(dia, buf);
                  e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
                  e_dialog_button_focus_num(dia, 0);
                  //elm_win_center(dia->win, 1, 1);
                  e_object_del_attach_func_set(E_OBJECT(dia),
                                               _e_config_error_dialog_cb_delete);
                  e_dialog_show(dia);
                  _e_config_error_dialog = dia;
               }
          }
        return 0;
#else
        ELOGF("CFG", "EET ERROR %s", NULL, NULL, erstr);
        return 0;
#endif
     }
   return 1;
}

redpajama_set_name: RedPajamaGithub


text:
Richard Adler and Jerry Ross: Hey There
by Joseph Thalken | Nov 2, 2016 | Song of the Day
By the 1950s, the influence of Rodgers and Hammerstein was enormous, and many younger theatre songwriters—peers of Richard Rodgers' daughter Mary—aspired to the success of R&H, and shared some of their aesthetic principles. As we look at songs written by...
Rodgers and Hammerstein: Soliloquy from Carousel
by John Brancy | Oct 24, 2016 | Song of the Day
I felt it necessary to write about the power and magic of "Soliloquy" from Carousel as my first Song of the Day. This epic monologue ends the first act of Carousel, creating suspense and emotion like no other piece I've ever performed. Carousel, written in...


text:
Crime report for Aug. 22
A burglary of a dwelling/breaking and entering a residence was reported in the 100 block of Harrell Street.
An automobile burglary/theft from a motor vehicle was reported in the 60 block of Millpond Drive.
An automobile burglary/theft from a motor vehicle was reported at 215 Forrest St.
An automobile burglary/theft from a motor vehicle was reported in the 1500 block of Arledge Street.
An automobile burglary/theft from a motor vehicle was reported in the 700 block of Ellis Avenue.
A burglary of a dwelling/breaking and entering a residence was reported in the 500 block of McComb Street.
Jarvis Pearson, 27, of Hattiesburg was arrested at the intersection of Evans and Mobile streets and charged with possession of a Schedule I-II drug of over 2 grams but less than 10 grams and felony eluding a law enforcement officer.
An automobile burglary/theft from a motor vehicle was reported at 2103 W. Pine St.
A grand larceny from an individual of more than $1,000 was reported at 5542 Old Highway 42.
Michael Brill was arrested at 6508 U.S. 49 and charged with possession of a Schedule I-II drug over 0.1 grams to less than 2 grams.
A burglary of a dwelling/breaking and entering a residence was reported in the 700 block of Northhill Drive.
Detrick Davis was arrested at the intersection of North 39th Avenue and Montague Street and charged with possession, sale, etc. of a stolen weapon-first offense.
Monday calls
Officers responded to five animal calls, one disturbance, one escort, five medical calls, four public assists and transported two prisoners.
Deputies responded to 13 alarm calls, five accidents with no injuries, one accident with minor injuries, one animal call, two disturbances, three domestic disturbances, two petit larcenies and one vandalism.
Troop J responded to one accident with no injuries.


Our distinctive hotel features spacious rooms and suites with 42-inch Plasma televisions, Point Plush mattresses and Wireless Fidelity throughout.
Sort by 1-10 of 91 reviews, i WAS very computer casino games free upset when MY nephew opened this UP AS AN early christmas present only TO find OUT that THE bingo cards where NOT IN THE states ON THE BOX that IT includes much FOR AN early present.Look no further than shopDisney for the best selection of huggable friends.1 0 numbers are not clear to see, also metal cage does not hold balls secure would not recommend this item 2 0, at first I didn't think the kids would have enjoyed playing bingo but the minute we started they were all excited.South Point also has a fabulous 400-seat showroom that features headliner entertainment and dancing to live bands on weekends.On the other hand the game it great.A unique feature to this property is its Equestrian Center, which is the finest horse facility in the country.Cozy up to playtime with cute Belle, Moana, Elsa, Anna and Ariel soft dolls.1 0, it is what I expected.One ball at a time.Purchased for alzheimers person.
All of the lalicious products are made using high-quality and natural ingredients that are nourishing to the skin and body.
Click Here To View All Upcoming Entertainers 50 Prime Time Mondays, sunday Pigskin Special A Buck A Bottle.
It's a great family game that needs attention brought to the table and who doesn't want to spin the cage?!Some are barely readable but you can figure it out.18 1, overall loved this game.A sharpie will fix problem.Congratulations to Paul.3 2, first time to order from Walmart and very happy.Theres even talking plush but thats not the last word.


text:
Lo stadio comunale di Can Misses () è un impianto sportivo multifunzione spagnolo che si trova a Ibiza, comune dell'omonima isola nella comunità autonoma delle Baleari.

Ospita le partite casalinghe della squadra della città, la Unión Deportiva Ibiza.

È lo stadio principale dell'isola, ospitante sin dalla sua costruzione molti eventi musicali e sportivi, ed è collocato all'interno del complesso sportivo municipale Can Misses, situato nel quartiere di Can Misses che dà il nome allo stadio.

In vista della storica gara con il  per i sedicesimi di Coppa del Re 2019-2020 lo stadio è stato ampliato a 6.000 posti.

Note

Collegamenti esterni

Ibiza (comune)
Stadi di calcio della Spagna
Architetture delle Isole Baleari

redpajama_set_name: RedPajamaWikipedia


text:
Final Jackson-area boys basketball power rankings for 2021 season
Updated: Mar. 23, 2021, 7:30 a.m. | Published: Mar. 23, 2021, 7:30 a.m.
By Josh VanDyke | jvandyke@mlive.com
Follow Josh VanDyke on Twitter
Hanover-Horton tops Grass Lake in boys basketball
JACKSON – The 2021 boys basketball season has felt much more like a sprint than a marathon, but the fast-paced action on Jackson-area basketball courts has been entertaining to say the least.
As we prepare for the district tournament to tip-off tonight, we've finalized the local power rankings for the regular season, weighing conference championships, quality wins and competitive balance in formulating our localized power index.
Below is the final edition of the Jackson-area boys basketball power rankings for the 2021 season.
Grass Lake's Carson Farley (3) shoots during a high school boys basketball game at Hanover-Horton High School on Wednesday, Feb. 10, 2021. Hanover-Horton won the game over Grass Lake, 67-48.J. Scott Park | MLive.com
Grass Lake (7-9)
The Warriors ended the season with a pair of impressive wins over Vandercook Lake (63-53) and East Jackson (80-44) before a loss to Michigan Center (63-38). They'll be a dark horse team to watch in their district tournament this week, as the trio of Brennen Bargesser, Carson Farley and Travis Fernamberg are capable of scoring in bunches on any given night.
Vandercook Lake's Jabari Banford Jr. (3) drives to the basket during a boys high school basketball game at East Jackson High School on Tuesday, Feb. 23, 2021. J. Scott Park | MLive.com
10. Vandercook Lake (9-8)
The Jayhawks snapped a three-game losing streak with an 81-24 win over Manchester last Friday and will look to play spoiler Thursday night, as they hope to upset Napoleon in the district semifinals. The Pirates scored wins of 74-35 and 62-51 over Vandercook Lake earlier this season.
Stockbridge's Jeremy Pilch (14) rebounds the ball during a boys basketball game at Stockbridge High School on Friday, Jan. 17, 2020. Leslie won the game in overtime over Stockbridge, 63-60.J. Scott Park | MLive.com
9. Stockbridge (8-8)
The Panthers scored wins over Perry (58-29) and Olivet (48-37) and pushed GLAC champion Leslie to the brink in a narrow 39-37 home loss. They'll hope to put together their best performance of the season Thursday, as they take on SEC White champion Chelsea (11-3) in the district semifinals.
8. Hillsdale (7-5)
The Hornets have won four of their last five games heading into the postseason and will kick off their district tournament against LCAA rival Columbia Central tonight. Hillsdale scored a 45-40 win over the Golden Eagles last Monday after Columbia Central took a 50-42 decision on Feb. 11.
7. Hillsdale Academy (13-2)
The Colts were stunned by Concord in a 61-54 road loss last Monday but bounced back with wins over North Adams-Jerome (77-18) and Camden-Frontier (63-42) to end the regular season. The SCAA East champions will take on the winner of Camden-Frontier (10-5) and Waldron (7-8) in Thursday's Division 4 district semifinals.
Napoleon's Josh Adams (21) shoots a jump shot during a Napoleon vs Columbia Central basketball game at Napoleon High School on Monday, Feb. 11, 2019. Napoleon defeated Columbia Central 66-49. (Mary Lewandowski | MLive.com)Mary Lewandowski
6. Napoleon (9-4)
The Pirates appear to be hitting their stride just in time for the postseason as they've reeled off four straight wins, including the last three by an average of 48 points. They'll take on Vandercook Lake (9-8) on Thursday in the Division 3 district semifinals at Michigan Center High School.
Michigan Center head coach Travis Gaddy makes a point in the hudddle during a boys basketball game at Michigan Center High School on Monday, Jan. 7, 2019. Michigan Center won the game over Addison, 57-39. (J. Scott Park | MLive.com)
5. Michigan Center (12-3)
The Cardinals are 9-1 in their last 10 games to enter the postseason with plenty of positive momentum after finishing runner-up in the Cascades Conference. They'll face the winner of Grass Lake (7-9) and East Jackson (4-13) on Thursday in the Division 3 district semifinals before possibly facing Napoleon in the district championship game Saturday.
4. Jonesville (13-2)
The Comets secured a share of the Big Eight Conference championship with a 59-40 road win against Bronson last week and will take on the winner of Parma Western (4-8) and Adrian (9-9) on Thursday in the Division 2 district semifinals.
Homer's Kyle Landis (22) drives to the basket during a boys high school basketball game at Homer High School on Thursday, March 4, 2021. Homer won the game over Union City.J. Scott Park | MLive.com
3. Homer (13-2)
The Trojans suffered a head-scratching home loss to Quincy (66-62) last Monday that ended up costing the team an outright share of the Big Eight Conference title. They'll set their sights on a potential district championship this week, as they take on Concord (6-9) on Thursday in the district semifinals before a potential matchup with Hanover-Horton on Saturday in the district championship game.
Leslie's Nolan Frohriep (14) shoots during a boys basketball game at Stockbridge High School on Friday, Jan. 17, 2020. Leslie won the game in overtime over Stockbridge, 63-60.J. Scott Park | MLive.com
2. Leslie (13-1)
The Blackhawks are riding an eight-game winning streak into the postseason after claiming the GLAC championship with narrow wins over Olivet (53-51) and Stockbridge (39-37). They'll likely see Dansville (11-3) on Thursday in the Division 3 district semifinals. Leslie defeated the Aggies 75-62 in last week's regular-season finale.
Hanover-Horton players huddle during a high school boys basketball game at Hanover-Horton High School on Wednesday, Feb. 10, 2021. Hanover-Horton won the game over Grass Lake, 67-48.J. Scott Park | MLive.com
1. Hanover-Horton (15-1)
The Comets secured their fourth straight Cascades Conference championship with wins over Michigan Center (66-52) and Addison (60-23) last week. The team decided to rest of the majority of its varsity players in the regular-season finale against East Jackson in a 59-42 road loss. Despite their active winning streak and conference winning streak both being snapped, Hanover-Horton remains the Jackson-area team with the highest ceiling of potential heading into the postseason. If they can survive their district tournament, they'll likely see either Michigan Center or Napoleon in the regional semifinals next week.
MORE JACKSON-AREA SPORTS COVERAGE
Vote for the MLive Jackson Player of the Week for March 15-20
Jackson-area boys basketball district brackets, predictions
Jackson-area girls basketball district brackets, predictions
Jackson-area girls basketball district first-round scoreboard
Michigan Associated Press boys basketball final regular-season state rankings
Michigan Associated Press girls basketball rankings for March 22
Jackson-area cheer roundup: Vandercook Lake, Addison, Concord advance to regionals
Jackson-area bowling roundup: See which local teams rolled on to the state finals
Jackson-area roundup: 95 local wrestlers advance to individual regionals


text:
package com.netflix.genie.web.tasks.leader;

import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.integration.leader.event.AbstractLeaderEvent;
import org.springframework.integration.leader.event.OnGrantedEvent;
import org.springframework.integration.leader.event.OnRevokedEvent;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.Trigger;

import javax.annotation.PreDestroy;
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.ScheduledFuture;

/**
 * Class which handles coordinating leadership related tasks. Listens for leadership grant and revoke events and starts
 * tasks associated with being the cluster leader.
 *
 * @author tgianos
 * @since 3.0.0
 */
@Slf4j
public class LeadershipTasksCoordinator {

    private final Set<LeadershipTask> tasks;
    private final Set<ScheduledFuture<?>> futures;
    private final TaskScheduler taskScheduler;
    private boolean isRunning;

    /**
     * Constructor.
     *
     * @param taskScheduler The task executor to use.
     * @param tasks         The leadership tasks to run
     */
    public LeadershipTasksCoordinator(final TaskScheduler taskScheduler, final Collection<LeadershipTask> tasks) {
        this.futures = Sets.newHashSet();
        this.taskScheduler = taskScheduler;
        this.isRunning = false;
        this.tasks = Sets.newHashSet();
        if (tasks != null) {
            this.tasks.addAll(tasks);
        }
    }

    /**
     * Make sure any threads are taken care of before this object is destroyed.
     */
    @PreDestroy
    public void preDestroy() {
        this.cancelTasks();
    }

    /**
     * Leadership event listener. Starts and stop processes when this Genie node is elected the leader of the cluster.
     * <p>
     * Synchronized to ensure no race conditions between threads trying to start and stop leadership tasks.
     *
     * @param leaderEvent The leader grant or revoke event
     * @see org.springframework.integration.leader.event.OnGrantedEvent
     * @see org.springframework.integration.leader.event.OnRevokedEvent
     */
    @EventListener
    public synchronized void onLeaderEvent(final AbstractLeaderEvent leaderEvent) {
        if (leaderEvent instanceof OnGrantedEvent) {
            if (this.isRunning) {
                return;
            }
            log.info("Leadership granted.");
            this.isRunning = true;
            this.tasks.forEach(
                task -> {
                    switch (task.getScheduleType()) {
                        case TRIGGER:
                            final Trigger trigger = task.getTrigger();
                            log.info(
                                "Scheduling leadership task {} to run with trigger {}",
                                task.getClass().getCanonicalName(),
                                trigger
                            );
                            this.futures.add(this.taskScheduler.schedule(task, trigger));
                            break;
                        case FIXED_RATE:
                            final long rate = task.getFixedRate();
                            log.info(
                                "Scheduling leadership task {} to run every {} second(s)",
                                task.getClass().getCanonicalName(),
                                rate / 1000.0
                            );
                            this.futures.add(this.taskScheduler.scheduleAtFixedRate(task, rate));
                            break;
                        case FIXED_DELAY:
                            final long delay = task.getFixedDelay();
                            log.info(
                                "Scheduling leadership task {} to run at a fixed delay of every {} second(s)",
                                task.getClass().getCanonicalName(),
                                delay / 1000.0
                            );
                            this.futures.add(this.taskScheduler.scheduleWithFixedDelay(task, delay));
                            break;
                        default:
                            log.error("Unknown Genie task type {}", task.getScheduleType());
                    }
                }
            );
        } else if (leaderEvent instanceof OnRevokedEvent) {
            if (!this.isRunning) {
                return;
            }
            log.info("Leadership revoked.");
            this.isRunning = false;
            this.cancelTasks();
        } else {
            log.warn("Unknown leadership event {}. Ignoring.", leaderEvent);
        }
    }

    private void cancelTasks() {
        for (final ScheduledFuture<?> future : this.futures) {
            log.info("Attempting to cancel thread {}", future);
            if (future.cancel(true)) {
                log.info("Successfully cancelled.");
            } else {
                log.info("Failed to cancel.");
            }
        }

        // Clear out the tasks
        this.futures.clear();
        this.tasks.forEach(LeadershipTask::cleanup);
    }
}


text:
Handbook: Seat Ibiza
Home Road Tests
Putting 2007 aside, the Ibiza has been Seat's best-selling car since 1985. James Batchelor drives the latest version
Seat's best-selling car worldwide and most popular car in the UK has undergone a mid-life facelift. With the new Mii on its way, Seat wants to keep Ibiza's 2011 sales of 19,179 units strong. So in comes a restyled nose, a freshened-up rear, new interior details, new alloys, eight new wheels, distinctive LED front and rear lights on FR models, and the FR range extended to the Ibiza estate – the ST.
WHAT'S UNDER THE BONNET?
There's a wide range of engines to suit. Petrol variants come in the form of a 1.2-litre 12V in 59bhp or 69bhp; a turbo-charged 1.2-litre TSI with 103bhp; a 84bhp 1.4-litre 16v; and a 148bhp twin-turbocharger 1.4-litre TSI. Meanwhile diesels include a 74bhp 1.2-litre and a super-eco 92 g/km of CO2 1.2-litre; a 104bhp 1.6; and a 142bhp 2.0-litre unit.
WHAT'S THE SPEC LIKE?
The three-door SC kicks off with the E 1.2-litre at £9,995 and rises to £16,340 for the 2.0-litre TDI FR. The five-door ranges from £11,430 for the S a/c to £16,840 for the 2.0-litre TDI FR, and £12,140-£17,080 covers the estate ST. The best-seller is predicted to be the five-door 1.4-litre SE at £12,495. Sporty Cupra comes later this year.
WHAT'S IT LIKE TO DRIVE?
There was never anything wrong with the way the previous Ibiza drove – and this trait remains. Even base models are fun and precise to steer with good body composure, while the sporty FR model only adds to the enjoyment.
WHAT DO THE PRESS THINK OF IT?
Honest John likes the new Ibiza, saying: 'To my mind it offers the most practicality, the least pretentiousness, the nicest styling and the most sensible prices of the VW Polo clones,' while Auto Express pointed out: 'Seat's styling department has done a great job updating the firm's biggest selling model, and while it's not the most distinctive car on the road, it's certainly one of the more attractive in its class'.
WHAT DO WE THINK OF IT?
Compared to the Volkswagen Polo and Skoda Fabia, customers would really only have bought the Ibiza for its value for money. Now though, a light nip and tuck has done wonders to the styling, and has made the Ibiza a compelling proposition in the supermini sector.
Families for £13k Rapid
Great Wall £1 deposit
Road Test of the Year 2020: Ford Puma
Road Test of the Year 2020: Honda e
Road Test of the Year 2020: Polestar 2
Road Test of the Year 2020: Mercedes-AMG A 45 S
Road Test of the Year 2020: Porsche Taycan Turbo
Road Test of the Year 2020: Land Rover Defender


Lion Creek is an incredible trip that takes quite a bit of time to figure out the first time down but which can be completed much quicker on succeeding trips. The overall difficulty of the run will increase as flows increase. If you get to the put-in and are concerned about the major rapids, it is easy to scout from the road grade that parallels the creek. This run is also hiker-friendly because the Pacific Northwest Scenic Trail parallels the creek, so this is a great run to bring non-boater or photographer friends looking for an adventure.
To get to the creek, head toward Priest Lake and then drive up the road that parallels Lion Creek. Drive to the end of this road and visually mark the take-out. Due to the hazardous nature of the rapid just below the take-out, it is imperative to mark your take-out with flagging or something visible from river level. Below the take-out the creek enters a rapid with a nasty overhang at head level and then drops 200 feet in the next quarter mile.
The trip to the upper section begins with an easy hike on an old road grade. You will reach a point in the old road grade trail that is easy to identify as a primitive camp site at approximately 1.5 miles in. At this point the road seems to cross Lion Creek and head toward Kent Creek on river left of Lion Creek. You may choose to put in here, or hike a little bit further up Lion creek on the PNT and to the put-in at the top of a large granite slide. Above the put-in slide is more whitewater, but this is marginally navigable and more on the Class V+ side of things.
After running the slide, a locally known natural waterslide is found above the Kent Creek confluence on river left. A hike up Kent Creek to do the waterslide can be a good addition to the trip. Hike through some brush on a primitive trail following up Kent Creek. Note that it is critical to stop at a pothole halfway down the slide: The consequences for missing the pothole are continuing 100 feet further down the slide and into a nasty undercut. Lower summer flows are more advisable.
The next bedrock feature on Lion Creek below the confluence with Kent Creek wraps around a couple of corners, starting with some easy read-and-run whitewater and quickly building into a significant and sometimes portaged rapid. It is easiest to get out on the left before the first of the small slides to be able to scout the whole series of drops.
More interesting whitewater continues below this rapid. Be sure to scout thoroughly and watch for snags throughout the run; wood has been a problem in the past.
From this point there is a break from the action that provides excellent views of the expansive landscape and local wildlife. This area has many similarities to some of the often visited areas in Yosemite National Park. At the end of the meadow there are some Class III rapids that are quickly interrupted by a large horizon line.
The first drop is best scouted on the left and portaged on the right. The most obvious line is down the left, though there were other options that had potential. It is prudent to place someone with a throw rope at the base of this drop as it leads directly into another large slide with high injury potential in the event of a missed line. Fortunately, the second drop has a clear line on the far right. The two drops together make for a very exciting rapid, but one to also be taken seriously. There is a small pool in between these two and another tall granite cascade to follow.
The next cascade features a number of fun moves in the right channel and some serious injury potential in the left. This cascade can be easily scouted and portaged on the right. Because the bank is so easy to move around on, it is easy to set up safety where it is needed. It can be helpful to position a person in the channel below the first vertical part of the rapid to help direct boats over a shallow bit mid-rapid. The rapid ends in a couple of sizeable holes that can be cleared with the speed attained from the slide following the shallow spot.
Downstream of this is a final challenging rapid before things ease to Class III-IV down to the take-out.
Road and stream conditions vary year to year. Be sure to check snow levels, road conditions, and scout on the river. Flows for this trip were 450 cfs on the Boundary Creek gage and 600 cfs on the Pack River gauge.
Incredible views. High quality Class IV and V whitewater. Remote location. Trail access.
Hike to put-in. Bring bear spray. Rough road. Dangerous rapid below take-out.


It has been a strange summer. On the one hand, making the most of our final days here at Seletar has been motivating some residents to continue with nature walks, art festivals and bonhomie. On the other hand, as the clock ticks louder, a strange apathy is enveloping us.
Some of our neighbours have moved out in anticipation of the eviction deadline of 31st December 2008. The rest of us have plans that do not include Singapore in the long term, so moving out will be goodbye in many aspects. Right now, the logistics of moving out are keeping us busy. We do not yet know how Postcards from Seletar will morph after January 2009, except that it will continue to have a life. Your suggestions, as always, will be appreciated.
The government predicts that F1 will increase tourism spending by $100m a year, with half of the 100,000 people attending the event coming from abroad…… However, only three of the 11 trackside hotels are fully booked in spite of predictions that demand would be strong.
While the affluent are partying on Singapore's Gold Coast in the south, increasing numbers are seeking food aid in the towering public housing projects that dominate the landscape in the northern half of the island.Ngiam Tong Dow, an influential former senior civil servant, has criticised the government for helping finance the F1 event. The government will assume 60 per cent of the S$150m annual cost to host the race for the the next five years and he says the money would be better spent helping the poor.
No new tenants in sight?


text:
Undercover Elf
Undercover ElfUndercover ElfUndercover Elf
Home & reader reviews
About Cydnee Brady
Children's book author Cydnee Brady has always had a flair for words. Over the course of her kids' childhoods, she added layers to an imaginative and festive story about being one of Santa's elves, adding excited anticipation to his impending arrival—and instantly believed! Once her grandchildren were born, the story spread to a new gener
Children's book author Cydnee Brady has always had a flair for words. Over the course of her kids' childhoods, she added layers to an imaginative and festive story about being one of Santa's elves, adding excited anticipation to his impending arrival—and instantly believed! Once her grandchildren were born, the story spread to a new generation, and now through her newly published picture book, Undercover Elf, to be shared with children everywhere.
Cydnee believes a great children's book is one that you can get lost in, where you are in another world that you escape to for a time. She hopes that her story gives families together time and brings happiness and joy that reminds them all year around of the magic of Christmas and Santa, long after the book is closed.
When she isn't writing humorous holiday stories, Cydnee works as a financial analyst for the Volvo Group, enjoys spending time with her three grandchildren, two kids, and husband of thirty-five years, Dean. She likes to sew, cook, and travel. Cydnee and Dean live with their four dogs in the country in Gibsonville, North Carolina. Undercover Elf is her debut picture book.
About Chuck Sirko
Chuck Sirko has been a Renaissance man all of his life, being a musician for over 48 years and a novice artist most that time as well. As for his art, Chuck enjoys working in a comic book style, but he has also done serious portraits. Much of Chuck's art interest was due to the influence of his mother, who was an Art Teacher and Artist.
Chuck's true passion is music, and he has been a performer for over 40+ years. Music breathes life into his soul, and he cannot express how his body reacts when music is involved. He is certain that not having music in his life would be devastating.
He was honored to work on this project with Cydnee, as it brought him much joy to see the work completed.
About Noah & Mason
Noah and Mason Spencer are Cydnee's oldest grandchildren. They have helped her on this project by providing illustrative assistance, and other creative ideas. The title is credited to Noah and Mason's creative minds, which they brainstormed one morning in the school drop-off line! These two guys have been amazing helpers and their crea
Noah and Mason Spencer are Cydnee's oldest grandchildren. They have helped her on this project by providing illustrative assistance, and other creative ideas. The title is credited to Noah and Mason's creative minds, which they brainstormed one morning in the school drop-off line! These two guys have been amazing helpers and their creativity has been astounding.
When not helping their grandmother with projects like this, both boys enjoy soccer, basketball and the outdoors.
cydnee@theundercoverelf.com
Copyright © 2022 Undercover Elf - All Rights Reserved.


text:
MS Pascal Lota (ex Superstar) is a fast ferry owned by the Corsica-based Corsica Ferries - Sardinia Ferries. She was built in 2008 at the Fincantieri shipyard in Ancona, Italy.

Concept and construction

The design of the Superstar is based on Moby Lines' MS Moby Aki. The original order included an option for a second ship of the same type, which Tallink decided not to exercise.

The keel of the vessel was laid on January 18, 2007. On October 5, 2007, the Superstar was christened by the Estonian tennis player Kaia Kanepi. The ship was delivered on 8 April 2008 and left Ancona for the Baltic Sea a day later.

Service history

Superstar entered service on Tallink's Helsinki–Tallinn route on 21 April 2008. On 30 April 2008 the ship suffered a hydraulics problem while leaving Tallinn, and one Tallinn–Helsinki roundtrip had to be cancelled. On 27 February 2009, while en route from Tallinn to Helsinki with 400 passengers on board, the ship's main engines stopped due to problems with the cooling systems at 8:45 am. The ship was adrift for nearly two hours, with emergency generators providing electricity, until full power could be restored at 10:30 am. Superstar arrived in Helsinki at 11:30, two hours behind schedule.

Design

The green external livery of the ship is according to Tallink promotion material "meant to reflect the environmentally friendly aspects of the ship's design".

The onboard facilities include a three-deck high showlounge, four restaurants, cafeteria, two bars, a casino, a business lounge and various shops.

Sister ship
 Moby Aki
 Moby Wonder
 MS Finlandia

References

External links

 MS Superstar on Tallink website
 MS Superstar at marinetraffic.com

Ferries of Estonia
Cruiseferries
2007 ships
Ships built by Fincantieri
Ships built in Ancona