"What is going to happen to them?" Taylor asked still feeling a little fearful of the Faction, even though he knew they couldn't remember nothing of what they did to him.
"We will take care of them my young one. Their minds will stay as young as children for as long as they live." Neque explained trying to reasure him as he nodded slowly.
"I feel sort of bad now for what I did to them." Walker said searching Neque's face.
"Don't my Walker. In a way it is a blessing for them. They won't live to much longer. And in this state of mind they will be happy now. Their love and need for power is not apart of them anymore. For that we thank you." Neque crooned glowing in a light shade of gold.
"What do you mean they won't live much longer?" Ike asked noticing Lucky was by his feet looking up at him longingly. He bent down picking him up into his left arm and petted his head gently.
"They didn't want to believe our people that they were malformed. Even when they were born we knew that their life spans would not be as long as ours. Their time is now close to an end. The powers in them are growing weaker as we knew it would, but didn't know when. They only deluded themselves into believing that they were somehow superior because they were different. They knew that Nadroj was also and wanted to think they were like him but even better. The imbalance brought out the worst in them. Their need for power grew with each passing year. The Faction grew up resenting Nadroj for who he was. They were jealous of him and heard the stories of the young ones who saved our world, knowing that Taylor was responsible for the power that Nadroj held inside him. Our people held back the true information from them of how Nadroj and Taylor were like one and how it happened through the healing of the Enosa." Neque explained as they listened to her every word.
"I..I still feel afraid of them. I can't help it." Taylor murmured softly looking down at the ground.
"That is understandable my Taylor. They put you through a lot of pain. But know this my young one. You proved that you were more then they ever imagined. You gave them a good fight and love won out in the end." Demi expressed looking at Taylor and then toward Walker who blushed slightly knowing what he meant.
"Actually I think they didn't realize the power of all of us put together. Without any of you I know I would have not made it!" Taylor exclaimed with tears welling in his eyes.
"That is so true!" Ike smiled swallowing back the lump in his throat from hearing his brother's words.
"I guess they didn't understand what love is all about." Zac added in as Taylor walked up next to Nadroj looking up at him.
"Without you we would have never made it through this. You held us together Nodrow. I realize now how much you are apart of who I am. We share more then just the color of blue eyes! I feel you! I love you!" Taylor said looking deeply into Nadroj's tearful eyes. Nadroj reached his arms around him lifting him up into the air hugging the boy against him wanting to never let go.
"As one my Taylor. As one." Nadroj rasped with his voice cracking with emotion as everyone bowed their heads.
Hours later Walker and his sons finally finished packing up their belongings as they prepared to go home. Taylor sat on the ground watching his friends feeling a peace surround him. He looked at the land before him noticing this section of their world was coming back to life again. He smiled knowing that he was apart of the reason why. He slowly stood up and walked back toward his family hating to say goodbye to his friends once again.
"Tay? Are you ready to go home?" Walker asked knowing his son was in deep thought.
"Earth to Tay!" Zac shouted making Taylor jump.
"Huh? Oh yeah. I'm ready." Taylor smiled watching Ike holding Lucky in his arms.
"Ike? You can't bring him back with us." Zac stated looking at his brother's face fall into a frown.
"I know that. But who is going to take care of him when I leave?" Ike asked sadly when Haelz stepped up to him.
"I will my Ike. I will take care of them both." Haelz said pointing at Saber who pawed at the ground nervously sensing he wasn't going to see his friend for much longer. Taylor walked up to him and grabbed his blue tuffs in his hands.
"You be good now Sa..Saber. Listen to Hazel. Don't worry Saber I will come and visit you when I can." Taylor crooned with tears welling in his eyes. Saber moved in and rubbed his face against the boy's chest pushing him back slightly. He started to hum watching him turn and walk back toward the others. He grunted loudly as if to say he understood.
Ike handed the Nettik to Haelz sadly as he started to shake a little. Lucky hooted wanting to go back into Ike's arm again. He didn't understand what was going on as he blinked his eyes longingly up at him.
"Oh God...don't look at me like that Lucky. Hazel here is...is going to take care of you while I am gone." Ike choked on the tears welling up inside of him.
"I can't believe we are saying goodbye again." Zac murmured remembering the last time. Haelz ran her free hand down his face lovingly.
"Remember what you said the last time my Zac. We won't say goodbye just till we meet again." Haelz reminded him as she glowed in a soft shade of gold.
"Yeah... yeah that's right." Zac said smiling up at her as he she hugged him with her right arm still holding Lucky in her left.
"I will miss you Nodrow....Demi." Taylor exclaimed looking at both of them standing in front of him. They both reached out stroking his face gingerly with love.
"I will always be with you my Taylor no matter the distance between us. Whenever you need me. I will always be there." Nadroj smiled with a tear dripping down his cheek.
"Same here. If you ever need me just call." Taylor smiled pointing at his mind.
"My Taylor. You take care now and go with love." Demi cooed softly loving this human being intensely. He reached out bending low and hugged Taylor as he hugged back sucking in a shaking breath.
"You too Demi." Taylor whispered stepping back.
Mayte walked up to Taylor and hugged him against her.
"Love you May." Taylor expressed feeling his heart pounding out of his chest as he held back his tears. She hugged each one of them and sadly stood back next to Haelz.
Walker looked into Neque's eyes not knowing what to say. He couldn't put into words how much he wanted to thank them for helping to bring his son back to him safely. Ike reached his arms around her as Neque brightly glowed in a golden color.
"I will miss you Que. Visit us more often this time. Okay?" Ike asked sniffing, holding back his tears.
"I will my sweet love. Stay safe and go with love." Neque crooned running her hand through the curls of his hair lovingly.
"How do I thank you?" Walker asked looking at the beings around him.
"Just getting to know you my Walker is thanks enough. Together we have saved the things that are most precious to our hearts." Neque expressed casting her hand toward Taylor and then around her showing the world that surrounded them.
"Yes. We do make quite some team... huh?" Walker smiled as she gently put her hand on the side of his face.
"And love is the strength that binds us. It is the power that always overcomes, my Walker." She cooed with tiny lights floating in the air around them.
"I will lead you home now through the rips my friends." Nadroj said taking Taylor's hand in his.
Walker took his other hand as Ike grabbed onto his father's and Zac grabbed onto Taylor's. He opened a rip into the balance of time as the bubble formed in front of them. Nadroj started to swirl in rainbow colors as he took a step forward going into the rip with his friends. Taylor turned looking back out to his friends for one last look, as Nadroj took off at blinding speed taking them finally home.


text:
'use strict';

const msRest = require('ms-rest');
const msRestAzure = require('ms-rest-azure');
const WebResource = msRest.WebResource;

/**
 * Get the vault extended info.
 *
 * @param {string} resourceGroupName The name of the resource group where the
 * recovery services vault is present.
 *
 * @param {string} vaultName The name of the recovery services vault.
 *
 * @param {object} [options] Optional Parameters.
 *
 * @param {object} [options.customHeaders] Headers that will be added to the
 * request
 *
 * @param {function} callback - The callback.
 *
 * @returns {function} callback(err, result, request, response)
 *
 *                      {Error}  err        - The Error object if an error occurred, null otherwise.
 *
 *                      {object} [result]   - The deserialized result object if an error did not occur.
 *                      See {@link VaultExtendedInfoResource} for more
 *                      information.
 *
 *                      {object} [request]  - The HTTP Request object if an error did not occur.
 *
 *                      {stream} [response] - The HTTP Response stream if an error did not occur.
 */
function _get(resourceGroupName, vaultName, options, callback) {
   /* jshint validthis: true */
  let client = this.client;
  if(!callback && typeof options === 'function') {
    callback = options;
    options = null;
  }
  if (!callback) {
    throw new Error('callback cannot be null.');
  }
  // Validate
  try {
    if (this.client.subscriptionId === null || this.client.subscriptionId === undefined || typeof this.client.subscriptionId.valueOf() !== 'string') {
      throw new Error('this.client.subscriptionId cannot be null or undefined and it must be of type string.');
    }
    if (this.client.apiVersion === null || this.client.apiVersion === undefined || typeof this.client.apiVersion.valueOf() !== 'string') {
      throw new Error('this.client.apiVersion cannot be null or undefined and it must be of type string.');
    }
    if (resourceGroupName === null || resourceGroupName === undefined || typeof resourceGroupName.valueOf() !== 'string') {
      throw new Error('resourceGroupName cannot be null or undefined and it must be of type string.');
    }
    if (vaultName === null || vaultName === undefined || typeof vaultName.valueOf() !== 'string') {
      throw new Error('vaultName cannot be null or undefined and it must be of type string.');
    }
    if (this.client.acceptLanguage !== null && this.client.acceptLanguage !== undefined && typeof this.client.acceptLanguage.valueOf() !== 'string') {
      throw new Error('this.client.acceptLanguage must be of type string.');
    }
  } catch (error) {
    return callback(error);
  }

  // Construct URL
  let baseUrl = this.client.baseUri;
  let requestUrl = baseUrl + (baseUrl.endsWith('/') ? '' : '/') + 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo';
  requestUrl = requestUrl.replace('{subscriptionId}', encodeURIComponent(this.client.subscriptionId));
  requestUrl = requestUrl.replace('{resourceGroupName}', encodeURIComponent(resourceGroupName));
  requestUrl = requestUrl.replace('{vaultName}', encodeURIComponent(vaultName));
  let queryParameters = [];
  queryParameters.push('api-version=' + encodeURIComponent(this.client.apiVersion));
  if (queryParameters.length > 0) {
    requestUrl += '?' + queryParameters.join('&');
  }

  // Create HTTP transport objects
  let httpRequest = new WebResource();
  httpRequest.method = 'GET';
  httpRequest.url = requestUrl;
  httpRequest.headers = {};
  // Set Headers
  httpRequest.headers['Content-Type'] = 'application/json; charset=utf-8';
  if (this.client.generateClientRequestId) {
      httpRequest.headers['x-ms-client-request-id'] = msRestAzure.generateUuid();
  }
  if (this.client.acceptLanguage !== undefined && this.client.acceptLanguage !== null) {
    httpRequest.headers['accept-language'] = this.client.acceptLanguage;
  }
  if(options) {
    for(let headerName in options['customHeaders']) {
      if (options['customHeaders'].hasOwnProperty(headerName)) {
        httpRequest.headers[headerName] = options['customHeaders'][headerName];
      }
    }
  }
  httpRequest.body = null;
  // Send Request
  return client.pipeline(httpRequest, (err, response, responseBody) => {
    if (err) {
      return callback(err);
    }
    let statusCode = response.statusCode;
    if (statusCode !== 200) {
      let error = new Error(responseBody);
      error.statusCode = response.statusCode;
      error.request = msRest.stripRequest(httpRequest);
      error.response = msRest.stripResponse(response);
      if (responseBody === '') responseBody = null;
      let parsedErrorResponse;
      try {
        parsedErrorResponse = JSON.parse(responseBody);
        if (parsedErrorResponse) {
          if (parsedErrorResponse.error) parsedErrorResponse = parsedErrorResponse.error;
          if (parsedErrorResponse.code) error.code = parsedErrorResponse.code;
          if (parsedErrorResponse.message) error.message = parsedErrorResponse.message;
        }
        if (parsedErrorResponse !== null && parsedErrorResponse !== undefined) {
          let resultMapper = new client.models['CloudError']().mapper();
          error.body = client.deserialize(resultMapper, parsedErrorResponse, 'error.body');
        }
      } catch (defaultError) {
        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody ` +
                         `- "${responseBody}" for the default response.`;
        return callback(error);
      }
      return callback(error);
    }
    // Create Result
    let result = null;
    if (responseBody === '') responseBody = null;
    // Deserialize Response
    if (statusCode === 200) {
      let parsedResponse = null;
      try {
        parsedResponse = JSON.parse(responseBody);
        result = JSON.parse(responseBody);
        if (parsedResponse !== null && parsedResponse !== undefined) {
          let resultMapper = new client.models['VaultExtendedInfoResource']().mapper();
          result = client.deserialize(resultMapper, parsedResponse, 'result');
        }
      } catch (error) {
        let deserializationError = new Error(`Error ${error} occurred in deserializing the responseBody - ${responseBody}`);
        deserializationError.request = msRest.stripRequest(httpRequest);
        deserializationError.response = msRest.stripResponse(response);
        return callback(deserializationError);
      }
    }

    return callback(null, result, httpRequest, response);
  });
}

/**
 * Create vault extended info.
 *
 * @param {string} resourceGroupName The name of the resource group where the
 * recovery services vault is present.
 *
 * @param {string} vaultName The name of the recovery services vault.
 *
 * @param {object} resourceResourceExtendedInfoDetails Details of
 * ResourceExtendedInfo
 *
 * @param {string} [resourceResourceExtendedInfoDetails.integrityKey] Integrity
 * key.
 *
 * @param {string} [resourceResourceExtendedInfoDetails.encryptionKey]
 * Encryption key.
 *
 * @param {string}
 * [resourceResourceExtendedInfoDetails.encryptionKeyThumbprint] Encryption key
 * thumbprint.
 *
 * @param {string} [resourceResourceExtendedInfoDetails.algorithm] Algorithm
 * for Vault ExtendedInfo
 *
 * @param {string} [resourceResourceExtendedInfoDetails.eTag] Optional ETag.
 *
 * @param {object} [options] Optional Parameters.
 *
 * @param {object} [options.customHeaders] Headers that will be added to the
 * request
 *
 * @param {function} callback - The callback.
 *
 * @returns {function} callback(err, result, request, response)
 *
 *                      {Error}  err        - The Error object if an error occurred, null otherwise.
 *
 *                      {object} [result]   - The deserialized result object if an error did not occur.
 *                      See {@link VaultExtendedInfoResource} for more
 *                      information.
 *
 *                      {object} [request]  - The HTTP Request object if an error did not occur.
 *
 *                      {stream} [response] - The HTTP Response stream if an error did not occur.
 */
function _createOrUpdate(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, callback) {
   /* jshint validthis: true */
  let client = this.client;
  if(!callback && typeof options === 'function') {
    callback = options;
    options = null;
  }
  if (!callback) {
    throw new Error('callback cannot be null.');
  }
  // Validate
  try {
    if (this.client.subscriptionId === null || this.client.subscriptionId === undefined || typeof this.client.subscriptionId.valueOf() !== 'string') {
      throw new Error('this.client.subscriptionId cannot be null or undefined and it must be of type string.');
    }
    if (resourceGroupName === null || resourceGroupName === undefined || typeof resourceGroupName.valueOf() !== 'string') {
      throw new Error('resourceGroupName cannot be null or undefined and it must be of type string.');
    }
    if (vaultName === null || vaultName === undefined || typeof vaultName.valueOf() !== 'string') {
      throw new Error('vaultName cannot be null or undefined and it must be of type string.');
    }
    if (this.client.apiVersion === null || this.client.apiVersion === undefined || typeof this.client.apiVersion.valueOf() !== 'string') {
      throw new Error('this.client.apiVersion cannot be null or undefined and it must be of type string.');
    }
    if (resourceResourceExtendedInfoDetails === null || resourceResourceExtendedInfoDetails === undefined) {
      throw new Error('resourceResourceExtendedInfoDetails cannot be null or undefined.');
    }
    if (this.client.acceptLanguage !== null && this.client.acceptLanguage !== undefined && typeof this.client.acceptLanguage.valueOf() !== 'string') {
      throw new Error('this.client.acceptLanguage must be of type string.');
    }
  } catch (error) {
    return callback(error);
  }

  // Construct URL
  let baseUrl = this.client.baseUri;
  let requestUrl = baseUrl + (baseUrl.endsWith('/') ? '' : '/') + 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo';
  requestUrl = requestUrl.replace('{subscriptionId}', encodeURIComponent(this.client.subscriptionId));
  requestUrl = requestUrl.replace('{resourceGroupName}', encodeURIComponent(resourceGroupName));
  requestUrl = requestUrl.replace('{vaultName}', encodeURIComponent(vaultName));
  let queryParameters = [];
  queryParameters.push('api-version=' + encodeURIComponent(this.client.apiVersion));
  if (queryParameters.length > 0) {
    requestUrl += '?' + queryParameters.join('&');
  }

  // Create HTTP transport objects
  let httpRequest = new WebResource();
  httpRequest.method = 'PUT';
  httpRequest.url = requestUrl;
  httpRequest.headers = {};
  // Set Headers
  httpRequest.headers['Content-Type'] = 'application/json; charset=utf-8';
  if (this.client.generateClientRequestId) {
      httpRequest.headers['x-ms-client-request-id'] = msRestAzure.generateUuid();
  }
  if (this.client.acceptLanguage !== undefined && this.client.acceptLanguage !== null) {
    httpRequest.headers['accept-language'] = this.client.acceptLanguage;
  }
  if(options) {
    for(let headerName in options['customHeaders']) {
      if (options['customHeaders'].hasOwnProperty(headerName)) {
        httpRequest.headers[headerName] = options['customHeaders'][headerName];
      }
    }
  }
  // Serialize Request
  let requestContent = null;
  let requestModel = null;
  try {
    if (resourceResourceExtendedInfoDetails !== null && resourceResourceExtendedInfoDetails !== undefined) {
      let requestModelMapper = new client.models['VaultExtendedInfoResource']().mapper();
      requestModel = client.serialize(requestModelMapper, resourceResourceExtendedInfoDetails, 'resourceResourceExtendedInfoDetails');
      requestContent = JSON.stringify(requestModel);
    }
  } catch (error) {
    let serializationError = new Error(`Error "${error.message}" occurred in serializing the ` +
        `payload - ${JSON.stringify(resourceResourceExtendedInfoDetails, null, 2)}.`);
    return callback(serializationError);
  }
  httpRequest.body = requestContent;
  // Send Request
  return client.pipeline(httpRequest, (err, response, responseBody) => {
    if (err) {
      return callback(err);
    }
    let statusCode = response.statusCode;
    if (statusCode !== 200) {
      let error = new Error(responseBody);
      error.statusCode = response.statusCode;
      error.request = msRest.stripRequest(httpRequest);
      error.response = msRest.stripResponse(response);
      if (responseBody === '') responseBody = null;
      let parsedErrorResponse;
      try {
        parsedErrorResponse = JSON.parse(responseBody);
        if (parsedErrorResponse) {
          if (parsedErrorResponse.error) parsedErrorResponse = parsedErrorResponse.error;
          if (parsedErrorResponse.code) error.code = parsedErrorResponse.code;
          if (parsedErrorResponse.message) error.message = parsedErrorResponse.message;
        }
        if (parsedErrorResponse !== null && parsedErrorResponse !== undefined) {
          let resultMapper = new client.models['CloudError']().mapper();
          error.body = client.deserialize(resultMapper, parsedErrorResponse, 'error.body');
        }
      } catch (defaultError) {
        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody ` +
                         `- "${responseBody}" for the default response.`;
        return callback(error);
      }
      return callback(error);
    }
    // Create Result
    let result = null;
    if (responseBody === '') responseBody = null;
    // Deserialize Response
    if (statusCode === 200) {
      let parsedResponse = null;
      try {
        parsedResponse = JSON.parse(responseBody);
        result = JSON.parse(responseBody);
        if (parsedResponse !== null && parsedResponse !== undefined) {
          let resultMapper = new client.models['VaultExtendedInfoResource']().mapper();
          result = client.deserialize(resultMapper, parsedResponse, 'result');
        }
      } catch (error) {
        let deserializationError = new Error(`Error ${error} occurred in deserializing the responseBody - ${responseBody}`);
        deserializationError.request = msRest.stripRequest(httpRequest);
        deserializationError.response = msRest.stripResponse(response);
        return callback(deserializationError);
      }
    }

    return callback(null, result, httpRequest, response);
  });
}

/**
 * Update vault extended info.
 *
 * @param {string} resourceGroupName The name of the resource group where the
 * recovery services vault is present.
 *
 * @param {string} vaultName The name of the recovery services vault.
 *
 * @param {object} resourceResourceExtendedInfoDetails Details of
 * ResourceExtendedInfo
 *
 * @param {string} [resourceResourceExtendedInfoDetails.integrityKey] Integrity
 * key.
 *
 * @param {string} [resourceResourceExtendedInfoDetails.encryptionKey]
 * Encryption key.
 *
 * @param {string}
 * [resourceResourceExtendedInfoDetails.encryptionKeyThumbprint] Encryption key
 * thumbprint.
 *
 * @param {string} [resourceResourceExtendedInfoDetails.algorithm] Algorithm
 * for Vault ExtendedInfo
 *
 * @param {string} [resourceResourceExtendedInfoDetails.eTag] Optional ETag.
 *
 * @param {object} [options] Optional Parameters.
 *
 * @param {object} [options.customHeaders] Headers that will be added to the
 * request
 *
 * @param {function} callback - The callback.
 *
 * @returns {function} callback(err, result, request, response)
 *
 *                      {Error}  err        - The Error object if an error occurred, null otherwise.
 *
 *                      {object} [result]   - The deserialized result object if an error did not occur.
 *                      See {@link VaultExtendedInfoResource} for more
 *                      information.
 *
 *                      {object} [request]  - The HTTP Request object if an error did not occur.
 *
 *                      {stream} [response] - The HTTP Response stream if an error did not occur.
 */
function _update(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, callback) {
   /* jshint validthis: true */
  let client = this.client;
  if(!callback && typeof options === 'function') {
    callback = options;
    options = null;
  }
  if (!callback) {
    throw new Error('callback cannot be null.');
  }
  // Validate
  try {
    if (this.client.subscriptionId === null || this.client.subscriptionId === undefined || typeof this.client.subscriptionId.valueOf() !== 'string') {
      throw new Error('this.client.subscriptionId cannot be null or undefined and it must be of type string.');
    }
    if (resourceGroupName === null || resourceGroupName === undefined || typeof resourceGroupName.valueOf() !== 'string') {
      throw new Error('resourceGroupName cannot be null or undefined and it must be of type string.');
    }
    if (vaultName === null || vaultName === undefined || typeof vaultName.valueOf() !== 'string') {
      throw new Error('vaultName cannot be null or undefined and it must be of type string.');
    }
    if (this.client.apiVersion === null || this.client.apiVersion === undefined || typeof this.client.apiVersion.valueOf() !== 'string') {
      throw new Error('this.client.apiVersion cannot be null or undefined and it must be of type string.');
    }
    if (resourceResourceExtendedInfoDetails === null || resourceResourceExtendedInfoDetails === undefined) {
      throw new Error('resourceResourceExtendedInfoDetails cannot be null or undefined.');
    }
    if (this.client.acceptLanguage !== null && this.client.acceptLanguage !== undefined && typeof this.client.acceptLanguage.valueOf() !== 'string') {
      throw new Error('this.client.acceptLanguage must be of type string.');
    }
  } catch (error) {
    return callback(error);
  }

  // Construct URL
  let baseUrl = this.client.baseUri;
  let requestUrl = baseUrl + (baseUrl.endsWith('/') ? '' : '/') + 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/extendedInformation/vaultExtendedInfo';
  requestUrl = requestUrl.replace('{subscriptionId}', encodeURIComponent(this.client.subscriptionId));
  requestUrl = requestUrl.replace('{resourceGroupName}', encodeURIComponent(resourceGroupName));
  requestUrl = requestUrl.replace('{vaultName}', encodeURIComponent(vaultName));
  let queryParameters = [];
  queryParameters.push('api-version=' + encodeURIComponent(this.client.apiVersion));
  if (queryParameters.length > 0) {
    requestUrl += '?' + queryParameters.join('&');
  }

  // Create HTTP transport objects
  let httpRequest = new WebResource();
  httpRequest.method = 'PATCH';
  httpRequest.url = requestUrl;
  httpRequest.headers = {};
  // Set Headers
  httpRequest.headers['Content-Type'] = 'application/json; charset=utf-8';
  if (this.client.generateClientRequestId) {
      httpRequest.headers['x-ms-client-request-id'] = msRestAzure.generateUuid();
  }
  if (this.client.acceptLanguage !== undefined && this.client.acceptLanguage !== null) {
    httpRequest.headers['accept-language'] = this.client.acceptLanguage;
  }
  if(options) {
    for(let headerName in options['customHeaders']) {
      if (options['customHeaders'].hasOwnProperty(headerName)) {
        httpRequest.headers[headerName] = options['customHeaders'][headerName];
      }
    }
  }
  // Serialize Request
  let requestContent = null;
  let requestModel = null;
  try {
    if (resourceResourceExtendedInfoDetails !== null && resourceResourceExtendedInfoDetails !== undefined) {
      let requestModelMapper = new client.models['VaultExtendedInfoResource']().mapper();
      requestModel = client.serialize(requestModelMapper, resourceResourceExtendedInfoDetails, 'resourceResourceExtendedInfoDetails');
      requestContent = JSON.stringify(requestModel);
    }
  } catch (error) {
    let serializationError = new Error(`Error "${error.message}" occurred in serializing the ` +
        `payload - ${JSON.stringify(resourceResourceExtendedInfoDetails, null, 2)}.`);
    return callback(serializationError);
  }
  httpRequest.body = requestContent;
  // Send Request
  return client.pipeline(httpRequest, (err, response, responseBody) => {
    if (err) {
      return callback(err);
    }
    let statusCode = response.statusCode;
    if (statusCode !== 200) {
      let error = new Error(responseBody);
      error.statusCode = response.statusCode;
      error.request = msRest.stripRequest(httpRequest);
      error.response = msRest.stripResponse(response);
      if (responseBody === '') responseBody = null;
      let parsedErrorResponse;
      try {
        parsedErrorResponse = JSON.parse(responseBody);
        if (parsedErrorResponse) {
          if (parsedErrorResponse.error) parsedErrorResponse = parsedErrorResponse.error;
          if (parsedErrorResponse.code) error.code = parsedErrorResponse.code;
          if (parsedErrorResponse.message) error.message = parsedErrorResponse.message;
        }
        if (parsedErrorResponse !== null && parsedErrorResponse !== undefined) {
          let resultMapper = new client.models['CloudError']().mapper();
          error.body = client.deserialize(resultMapper, parsedErrorResponse, 'error.body');
        }
      } catch (defaultError) {
        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody ` +
                         `- "${responseBody}" for the default response.`;
        return callback(error);
      }
      return callback(error);
    }
    // Create Result
    let result = null;
    if (responseBody === '') responseBody = null;
    // Deserialize Response
    if (statusCode === 200) {
      let parsedResponse = null;
      try {
        parsedResponse = JSON.parse(responseBody);
        result = JSON.parse(responseBody);
        if (parsedResponse !== null && parsedResponse !== undefined) {
          let resultMapper = new client.models['VaultExtendedInfoResource']().mapper();
          result = client.deserialize(resultMapper, parsedResponse, 'result');
        }
      } catch (error) {
        let deserializationError = new Error(`Error ${error} occurred in deserializing the responseBody - ${responseBody}`);
        deserializationError.request = msRest.stripRequest(httpRequest);
        deserializationError.response = msRest.stripResponse(response);
        return callback(deserializationError);
      }
    }

    return callback(null, result, httpRequest, response);
  });
}

/** Class representing a VaultExtendedInfoOperations. */
class VaultExtendedInfoOperations {
  /**
   * Create a VaultExtendedInfoOperations.
   * @param {RecoveryServicesClient} client Reference to the service client.
   */
  constructor(client) {
    this.client = client;
    this._get = _get;
    this._createOrUpdate = _createOrUpdate;
    this._update = _update;
  }

  /**
   * Get the vault extended info.
   *
   * @param {string} resourceGroupName The name of the resource group where the
   * recovery services vault is present.
   *
   * @param {string} vaultName The name of the recovery services vault.
   *
   * @param {object} [options] Optional Parameters.
   *
   * @param {object} [options.customHeaders] Headers that will be added to the
   * request
   *
   * @returns {Promise} A promise is returned
   *
   * @resolve {HttpOperationResponse<VaultExtendedInfoResource>} - The deserialized result object.
   *
   * @reject {Error} - The error object.
   */
  getWithHttpOperationResponse(resourceGroupName, vaultName, options) {
    let client = this.client;
    let self = this;
    return new Promise((resolve, reject) => {
      self._get(resourceGroupName, vaultName, options, (err, result, request, response) => {
        let httpOperationResponse = new msRest.HttpOperationResponse(request, response);
        httpOperationResponse.body = result;
        if (err) { reject(err); }
        else { resolve(httpOperationResponse); }
        return;
      });
    });
  }

  /**
   * Get the vault extended info.
   *
   * @param {string} resourceGroupName The name of the resource group where the
   * recovery services vault is present.
   *
   * @param {string} vaultName The name of the recovery services vault.
   *
   * @param {object} [options] Optional Parameters.
   *
   * @param {object} [options.customHeaders] Headers that will be added to the
   * request
   *
   * @param {function} [optionalCallback] - The optional callback.
   *
   * @returns {function|Promise} If a callback was passed as the last parameter
   * then it returns the callback else returns a Promise.
   *
   * {Promise} A promise is returned
   *
   *                      @resolve {VaultExtendedInfoResource} - The deserialized result object.
   *
   *                      @reject {Error} - The error object.
   *
   * {function} optionalCallback(err, result, request, response)
   *
   *                      {Error}  err        - The Error object if an error occurred, null otherwise.
   *
   *                      {object} [result]   - The deserialized result object if an error did not occur.
   *                      See {@link VaultExtendedInfoResource} for more
   *                      information.
   *
   *                      {object} [request]  - The HTTP Request object if an error did not occur.
   *
   *                      {stream} [response] - The HTTP Response stream if an error did not occur.
   */
  get(resourceGroupName, vaultName, options, optionalCallback) {
    let client = this.client;
    let self = this;
    if (!optionalCallback && typeof options === 'function') {
      optionalCallback = options;
      options = null;
    }
    if (!optionalCallback) {
      return new Promise((resolve, reject) => {
        self._get(resourceGroupName, vaultName, options, (err, result, request, response) => {
          if (err) { reject(err); }
          else { resolve(result); }
          return;
        });
      });
    } else {
      return self._get(resourceGroupName, vaultName, options, optionalCallback);
    }
  }

  /**
   * Create vault extended info.
   *
   * @param {string} resourceGroupName The name of the resource group where the
   * recovery services vault is present.
   *
   * @param {string} vaultName The name of the recovery services vault.
   *
   * @param {object} resourceResourceExtendedInfoDetails Details of
   * ResourceExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.integrityKey] Integrity
   * key.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.encryptionKey]
   * Encryption key.
   *
   * @param {string}
   * [resourceResourceExtendedInfoDetails.encryptionKeyThumbprint] Encryption key
   * thumbprint.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.algorithm] Algorithm
   * for Vault ExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.eTag] Optional ETag.
   *
   * @param {object} [options] Optional Parameters.
   *
   * @param {object} [options.customHeaders] Headers that will be added to the
   * request
   *
   * @returns {Promise} A promise is returned
   *
   * @resolve {HttpOperationResponse<VaultExtendedInfoResource>} - The deserialized result object.
   *
   * @reject {Error} - The error object.
   */
  createOrUpdateWithHttpOperationResponse(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options) {
    let client = this.client;
    let self = this;
    return new Promise((resolve, reject) => {
      self._createOrUpdate(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, (err, result, request, response) => {
        let httpOperationResponse = new msRest.HttpOperationResponse(request, response);
        httpOperationResponse.body = result;
        if (err) { reject(err); }
        else { resolve(httpOperationResponse); }
        return;
      });
    });
  }

  /**
   * Create vault extended info.
   *
   * @param {string} resourceGroupName The name of the resource group where the
   * recovery services vault is present.
   *
   * @param {string} vaultName The name of the recovery services vault.
   *
   * @param {object} resourceResourceExtendedInfoDetails Details of
   * ResourceExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.integrityKey] Integrity
   * key.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.encryptionKey]
   * Encryption key.
   *
   * @param {string}
   * [resourceResourceExtendedInfoDetails.encryptionKeyThumbprint] Encryption key
   * thumbprint.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.algorithm] Algorithm
   * for Vault ExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.eTag] Optional ETag.
   *
   * @param {object} [options] Optional Parameters.
   *
   * @param {object} [options.customHeaders] Headers that will be added to the
   * request
   *
   * @param {function} [optionalCallback] - The optional callback.
   *
   * @returns {function|Promise} If a callback was passed as the last parameter
   * then it returns the callback else returns a Promise.
   *
   * {Promise} A promise is returned
   *
   *                      @resolve {VaultExtendedInfoResource} - The deserialized result object.
   *
   *                      @reject {Error} - The error object.
   *
   * {function} optionalCallback(err, result, request, response)
   *
   *                      {Error}  err        - The Error object if an error occurred, null otherwise.
   *
   *                      {object} [result]   - The deserialized result object if an error did not occur.
   *                      See {@link VaultExtendedInfoResource} for more
   *                      information.
   *
   *                      {object} [request]  - The HTTP Request object if an error did not occur.
   *
   *                      {stream} [response] - The HTTP Response stream if an error did not occur.
   */
  createOrUpdate(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, optionalCallback) {
    let client = this.client;
    let self = this;
    if (!optionalCallback && typeof options === 'function') {
      optionalCallback = options;
      options = null;
    }
    if (!optionalCallback) {
      return new Promise((resolve, reject) => {
        self._createOrUpdate(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, (err, result, request, response) => {
          if (err) { reject(err); }
          else { resolve(result); }
          return;
        });
      });
    } else {
      return self._createOrUpdate(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, optionalCallback);
    }
  }

  /**
   * Update vault extended info.
   *
   * @param {string} resourceGroupName The name of the resource group where the
   * recovery services vault is present.
   *
   * @param {string} vaultName The name of the recovery services vault.
   *
   * @param {object} resourceResourceExtendedInfoDetails Details of
   * ResourceExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.integrityKey] Integrity
   * key.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.encryptionKey]
   * Encryption key.
   *
   * @param {string}
   * [resourceResourceExtendedInfoDetails.encryptionKeyThumbprint] Encryption key
   * thumbprint.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.algorithm] Algorithm
   * for Vault ExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.eTag] Optional ETag.
   *
   * @param {object} [options] Optional Parameters.
   *
   * @param {object} [options.customHeaders] Headers that will be added to the
   * request
   *
   * @returns {Promise} A promise is returned
   *
   * @resolve {HttpOperationResponse<VaultExtendedInfoResource>} - The deserialized result object.
   *
   * @reject {Error} - The error object.
   */
  updateWithHttpOperationResponse(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options) {
    let client = this.client;
    let self = this;
    return new Promise((resolve, reject) => {
      self._update(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, (err, result, request, response) => {
        let httpOperationResponse = new msRest.HttpOperationResponse(request, response);
        httpOperationResponse.body = result;
        if (err) { reject(err); }
        else { resolve(httpOperationResponse); }
        return;
      });
    });
  }

  /**
   * Update vault extended info.
   *
   * @param {string} resourceGroupName The name of the resource group where the
   * recovery services vault is present.
   *
   * @param {string} vaultName The name of the recovery services vault.
   *
   * @param {object} resourceResourceExtendedInfoDetails Details of
   * ResourceExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.integrityKey] Integrity
   * key.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.encryptionKey]
   * Encryption key.
   *
   * @param {string}
   * [resourceResourceExtendedInfoDetails.encryptionKeyThumbprint] Encryption key
   * thumbprint.
   *
   * @param {string} [resourceResourceExtendedInfoDetails.algorithm] Algorithm
   * for Vault ExtendedInfo
   *
   * @param {string} [resourceResourceExtendedInfoDetails.eTag] Optional ETag.
   *
   * @param {object} [options] Optional Parameters.
   *
   * @param {object} [options.customHeaders] Headers that will be added to the
   * request
   *
   * @param {function} [optionalCallback] - The optional callback.
   *
   * @returns {function|Promise} If a callback was passed as the last parameter
   * then it returns the callback else returns a Promise.
   *
   * {Promise} A promise is returned
   *
   *                      @resolve {VaultExtendedInfoResource} - The deserialized result object.
   *
   *                      @reject {Error} - The error object.
   *
   * {function} optionalCallback(err, result, request, response)
   *
   *                      {Error}  err        - The Error object if an error occurred, null otherwise.
   *
   *                      {object} [result]   - The deserialized result object if an error did not occur.
   *                      See {@link VaultExtendedInfoResource} for more
   *                      information.
   *
   *                      {object} [request]  - The HTTP Request object if an error did not occur.
   *
   *                      {stream} [response] - The HTTP Response stream if an error did not occur.
   */
  update(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, optionalCallback) {
    let client = this.client;
    let self = this;
    if (!optionalCallback && typeof options === 'function') {
      optionalCallback = options;
      options = null;
    }
    if (!optionalCallback) {
      return new Promise((resolve, reject) => {
        self._update(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, (err, result, request, response) => {
          if (err) { reject(err); }
          else { resolve(result); }
          return;
        });
      });
    } else {
      return self._update(resourceGroupName, vaultName, resourceResourceExtendedInfoDetails, options, optionalCallback);
    }
  }

}

module.exports = VaultExtendedInfoOperations;

redpajama_set_name: RedPajamaGithub


€3.60 Low StockThere are only 3 items left in stock. Please order now to secure this price!
€14.30 Low StockThere is only 1 item left in stock. Please order now to secure this price!
€14.30 Low StockThere are only 2 items left in stock. Please order now to secure this price!


text:
Add a trailing slash to urls in Firefox again
As a Firefox user you may remember that Mozilla some time ago decided to "optimize" the address displayed in the browser's urlbar by removing the http:// protocol information from the beginning and the / slash at the end for root domains. So, instead of seeing http://www.coffeeinated.com/ in the address bar, Firefox suddenly only displayed www.coffeeinated.com in there. Mozilla removed the favicon from the urlbar as well.
It is not really clear why Mozilla dumbed down the display but it is likely that the developers once again looked at how Google Chrome is handling the display of urls to replicate it exactly. Some have said that it is for the better of the user, that users do not understand how urls work and that less characters in the urlbar helps visualize the domain name to them. I'm not a fan of dumbing down as it would be far better to educate users about urls instead of just providing them with a limited display that is hiding some information.
One of the things that has irritated me lately is the removal of the trailing slash on root domains. I sometimes click on the url bar to add path information behind the trailing slash. With it being removed in Firefox, I now have to add that slash before I can write or paste the path information in the address bar. It may sound like a minor thing but it is actually a very frustrating experience.
What I like about Firefox is that it gives you options to undo most of what the developers have changed in the browser in recent time. While it may not be the case for all changes, you get modification options for many of them including the dumbed down address bar.
Back when Mozilla announced the change I published a guide that explained how you can add the http:// protocol back to the Firefox address bar, but what I failed to mention was that the very same workaround added the trailing slash back to the browser's address bar as well.
So, to get the trailing slash back for root domains you would do the following:
Type about:config into the address bar and hit enter.
Confirm that you will be careful if you load the page for the first time.
Type in browser.urlbar.trimURLs
Double-click the entry to set it to false
You should immediately notice that both http and the trailing slash are added back to addresses in the Firefox browser.
Firefox 96.0.3 and Firefox 91.5.1 ESR fix search Telemetry data sending issue
How to restore Firefox's classic download behavior
Here is what is new in Firefox 96.0.2
Firefox will soon download files automatically instead of displaying a prompt
Mozilla releases Firefox 96.0.1 to fix connection issues
Some Firefox users report connection issues (workaround inside)
Previous Post: « Official Mega Firefox extension released
Next Post: « How to limit Java exposure in Firefox
beemeeup said on February 11, 2013 at 1:48 pm
Other than a few speed improvements here and there, I have yet to here anything good about recent changes to Firefox. Nowadays it's just about taking away more things people rely on, fixing things that not only wasn't broken but actually useful to begin with.
This is why I stick with Pale Moon. At least then I can be sure that retarded changes won't be implemented by default, all while remaining up to date with the latest security and performance enhancements.
JimT said on February 11, 2013 at 3:30 pm
+1 for Pale Moon. I made the switch early last summer, and have never looked back.
noswal said on February 11, 2013 at 4:00 pm
Another thumbs up for Pale Moon. Switched about 6 months ago and hardly ever load FireFox anymore.
George said on February 11, 2013 at 5:19 pm
Count me as another fan of Palemoon :-)
Transcontinental said on February 11, 2013 at 7:12 pm
I've heard many good comments regarding Pale Moon. Requires a modern "infrastructure" though. Here with good old Charly we ain't got the means, at this time!
Uhtred said on February 11, 2013 at 8:19 pm
Thanks Martin, nice to have a full url with trailing slash again.
Rafael said on February 12, 2013 at 2:58 am
Opera's way of dealing with this is much better…
It hides these parts of the URL, but when you click / focus the address field it displays the full URL (apart from giving the setting to disable the hiding) so it's a win-win.
Ken Saunders said on February 12, 2013 at 4:41 am
I've been using Locationbar² for years.
https://addons.mozilla.org/en-US/firefox/addon/locationbar²
* Puts emphasis on the domain to reduce spoofing risk
* Linkifies URL segments (press Ctrl, Meta, Shift or Alt)
* More URL formatting options configurable
There's a few bad reviews for it, but it works perfectly fine for me.
There's also this userstyle
http://userstyles.org/styles/1842/firefox-locationbar-2-css-mods
I don't use that userstyle any longer (I use my own), but it's a decent one.
Bruce Tech Guy said on February 12, 2013 at 7:09 am
Great tip.
The other change that I always make when installing or updating Firefox for myself or others I work with, is to turn off the gray-out of the address elements (called Domain highlighting):
Find "browser.urlbar.formatting.enabled" in the about:config window
Double click to change value to FALSE.
batman said on February 12, 2013 at 10:37 am
this should not be up to the browser to device, but rather the webserver.
decide i mean, sorry.
Finvana said on February 12, 2013 at 10:47 am
I found the Luddite UI addon to be really helpful: https://addons.mozilla.org/en-US/firefox/addon/luddite-ui/.
It lets you change lots of silly "innovations".
alph said on November 1, 2015 at 10:49 am
this shall be the default setting.
(otherwise we will reach the idiocracy very soon, but this seems to be the intention)
Firefox 89 ships with interface changes
No, the Firefox logo isn't being changed
Mozilla plans to remove the Compact Density option from Firefox's Customize menu
How to fix the Firefox 89 user interface
Here is what is new and changed in Firefox 88.0

redpajama_set_name: RedPajamaCommonCrawl


I pick up my phone early in the morning to begin the process of sifting through the news feeds for the latest in genealogy, family history, historical archives, and technology, and I'm inspired.
A news article catches my eye on the ease of web indexing with new technology, making it easier than ever for volunteers to use the web, a laptop, tablet, or even their smartphone to assist with indexing records on FamilySearch, and I'm inspired.
A photograph in the hallway is of my great-grandmother holding my grandfather, the only picture we have of her, and the clue that revealed her existence to me, and led me on the path to genealogy studies over a lifetime, and I'm inspired.
I walk into my office and see my family history chart, all color coded to match the file folder colors in the filing cabinet nearby, and I'm inspired.
On my desktop computer, the web browser is opened to an obituary in a newspaper of one of my ancestors, and I'm inspired.
A simple web search turns up several hundred possibilities that may answer a genealogy question for me today, and I'm inspired.
A comment from a fan of my family history site asked a good question about how to resolve four conflicting bits of evidence for a birth date of her great-ought grandmother, and I'm inspired.
A fan of this site asked me what the latest news was on digital book scanning for home offices, and I'm inspired.
A post by a fellow genealogist takes a moment to thank the volunteers that make our family history research possible today, finding, preserving, digitizing, transcribing, and indexing records, and making these available to everyone researching their family tree, and I'm inspired.
I walk up the long gravel road to the mailbox and find a personal thank you letter from my local genealogy group for being such a valuable member, and I'm inspired.
An email from a cousin in Wisconsin uncovers some family papers that might uncover more details in our research into our Norwegian family branch, and I'm inspired.
A friend swings by to drop off some supplies for an upcoming conference on writing I'm producing, and asks me if I'm still into this "family history thing." We sit down and she says, "About my own family, I've been wondering…" and I'm inspired.
I am inspired by the big things in genealogy research and technology today, but it is often the small things, the things we tend to take for granted, that inspire me to keep going, minute by minute, hour by hour, year after year.
To all the small things, and the people who make them happen, I thank you. You inspire me.


text:
Puerto Murialdo ist eine Ortschaft und eine Parroquia rural ("ländliches Kirchspiel") im Kanton Loreto der ecuadorianischen Provinz Orellana. Sitz der Verwaltung ist die Ortschaft Puerto Murialdo, knapp 20 km östlich des Kantonshauptortes Loreto sowie 30 km südsüdwestlich der Provinzhauptstadt Puerto Francisco de Orellana. Die Parroquia besitzt eine Fläche von 194 km². Die Einwohnerzahl lag im Jahr 2010 bei 3375. Die Parroquia wurde am 26. März 1990 eingerichtet. In der Paroquia gibt es 13 Kommunen (cumunidades): El Inca, San Lorenzo, San Carlos, Puerto Sol, Jandia Yaku, Bajo Huino, Turupunta, Alto Huino, Suyuno, Centro Huino, Agua Colorada, Fano und Runallacta.

Lage
Die Parroquia Puerto Murialdo liegt in der vorandinen Region am Westrand des Amazonasbeckens. Sie liegt am Ostufer des in Richtung Nordnordost strömenden Río Napo. Dessen Nebenfluss Río Suno fließt entlang der südöstlichen Verwaltungsgrenze nach Nordosten und mündet bei Puerto Murialdo in den Río Napo. Im Norden wird das Gebiet von dem Flüsschen Río Sunuyacu begrenzt.

Am gegenüber liegenden Flussufer des Río Napo im Osten befinden sich die Parroquias García Moreno und La Belleza (beide im Kanton Francisco de Orellana). Die Parroquia Puerto Murialdo grenzt im Süden an die Parroquia Chontapunta (Kanton Tena, Provinz Napo) und an die Parroquia San José de Dahuano, im Westen an die Parroquias Ávila Huiruno und Loreto, im Nordwesten und im Norden an die Parroquia San José de Payamino sowie im äußersten Nordosten an die Parroquia San Luis de Armenia (Kanton Francisco de Orellana).

Weblinks
 https://www.puertomurialdo.gob.ec/ – GAD Puerto Murialdo
 GAD Parroquial Rural Puerto Murialdo; Actualizactión del Plan de Desarrollo y Ordenamiento Territorial (PDF; 5,1 MB)
 Bevölkerungstatisik bei www.citypopulation.de

Parroquia in der Provinz Orellana
Ort in Ecuador
Ort in Südamerika
Gegründet 1990

redpajama_set_name: RedPajamaWikipedia


Jackson sees that April is upset and tries to help her.
The Biggest Loser: 6 Weeks to a Healthier You: Lose Weight and Get Healthy For Life!: amzn.to/2HYqDDh Please support this channel! Anything Helps!
All Meredith and Nathan Scenes from Season 14. I don't own any of these clips, they belong to the writers and Shondaland.
Grey's Anatomy Season 14 Funny momens.
Meredith and Alex compare their current problems to past relationships. Watch this scene from the latest season!
Amelia and Owen discuss Owen's feelings for Teddy and how they've always been there.
Million had the nation in shock after they discovered be deliberately separated children and their mother.


After installing beautiful stone tile in your shower, protect your investment with proper cleaning tactics.Certain cleaning products cause a chemical reaction when applied to natural stone, altering the color of the tile and potentially undermining its durability. Ensure porous stone, such as limestone and granite, is properly sealed after installation to protect the stone from oils and excess staining.
Wipe down the shower after every use with a microfiber rag to remove excess moisture. This prevents the development of mildew and reduces soap scum build-up.
Clean soap scum and dirt with a diluted spray cleaner designed for use on natural stone once a week. Spray the tile evenly with the product and then wipe it down with a microfiber cloth. Rinse the shower thoroughly and remove excess water with a clean microfiber cloth.
Kill mildew with a store-bought cleaning formula specifically meant for stone tile. Products intended for ceramic tile may be too harsh for natural stone, even if the stone is sealed. Allow the product to sit according to manufacturer directions and then rinse the tile with clean water before drying the stone with a microfiber cloth.
Keep any acidic cleaners, such as white vinegar, toilet bowl cleaner and glass cleaner, away from the stone to prevent etching. If you have a glass door or mirror in the shower, spray the rag with window cleaner instead of spraying the glass directly to protect tile from over-spray. As an alternative, rubbing alcohol acts as a stone-tile-friendly glass cleaner.


text:
ESTEAM for Youth began as a group of women interested in increasing the opportunities that youth, especially our young women and girls of color, have in gaining access to experiences in entrepreneurship, science, technology, engineering, art, and math. We wanted to build a community of women who could mentor, support, and also push one another in fields where women were sometimes isolated or felt like they didn't have enough of a community. Our goal was to create a pipeline of girls from Kindergarten through high school, college through early professionals to veteran women deep in their careers who could nurture one another with their experiences, strength, and dreams and who could be there for one another to guide, support, and cheer each other on.
Where we are now
We have presented programming that brings youth in grades K-8 an opportunity to explore careers, engage in hands on opportunities to explore the fields of ESTEAM, a chance to explore new topics, and a place for parents of students interested in these fields to find more information and make connections to new programming available to them. Our first ESTEAM for Girls Summit was a chance for girls to be engaged in many different ways and we expect this year to be no different
This year we are excited to offer another chance for students in K-8 to engage in more hands on exploration in the fields of Entrepreneurship, Science, Technology, Engineering, Art, and Mathematics.
The students from Monticello's Health and Medical Science Academy, Albemarle's Math, Engineering, and Science Academy, and Western Albemarle's Environmental Science Academy will be there to run some sessions.
We're excited to bring back the career bingo which was a big hit last year as well.
Our biological artist who worked with students on drawing from nature will also be back.
Girls Geek Day will have plenty on offer as well.
For our 5-8 students we're very excited about our full out Disaster Response Simulation which will include all aspects of ESTEAM and will give students in their middle grades a chance to explore the multi-faceted world of how our NGOs and Government agencies handle real world crises!
This year will be even better than last!
Founders of ESTEAM for Youth :


Buyer Beware! In order to fully experience Dying: Reborn, you must purchase the PlayStation 4 version, not the PlayStation VR version. That is to say that purchasing the PS VR title only gives you an abridged version of the full game. Even the puzzles within each stage are abridged, with you having to do less to get from point A to point B in the VR version.
Both versions are sold separately, as opposed to a situation like Resident Evil 7 which includes both. This hurts anyone hoping for the next horror experience in VR as this is very much an incomplete game. I realized this halfway through the PS VR edition and had to start over on the standard game in order to fully cover the review.
Dying: Reborn is indeed a physiological horror game. Those fresh off the Resident Evil 7 experience will probably find familiarity here. Hell, even the story feels somewhat recognizable. But this is not an adventure game. It holds more in common with an "escape" game, where you are stuck in a situation or a room and have to solve complex puzzles in order to escape.
Most tasks are fairly logic-based, but some of them are downright brutal. For example, I know little-to-nothing about music, as in playing music, and one puzzle required me to understand what song to play on a piano, with little explanation.
In fact, if I hadn't known the song I had to play, I would have been royally screwed. I'll be honest: I had to look it up. There is an inventory system, but it's mainly used to hold an item until it's required for a puzzle.
Perhaps these types of puzzles would resonate with a more experienced gamer in the puzzle genre. So I could forgive that one puzzle and state that the rest of the experience moved along smoothly with a little searching and combining of elements leading to further conundrums to resolve. And so it was throughout the relatively short campaign, much shorter if you are playing in VR.
While there are a few minor jump scares, the "horror" comes more from atmosphere and the feeling of being trapped with no way to defend yourself, but since most threats come from simply being trapped, you never quite feel that intense sensation of danger.
It was a pleasant surprise to see that VR visuals held up very well in this title. I played in on the PlayStation 4 Pro and nothing stood out as blurry or lacking because of the VR component.
I would dare to say that visual integrity-wise, it holds up just as well as Resident Evil. While not exactly being as much of a looker, it maintains a steady framerate throughout. The developers have adopted the now common locomotion method of turning intervals to reduce nausea with 45 degree angles being the default.
This isn't a bad-looking game, certainly not for the price. It does a decent job of creating the abysmal environments that you are desperately trying to escape. While I personally found the fish-head antagonist to look a little silly, it takes on a slightly different intimidation level when confronted. Not quite the Pyramid Head level, but we all can't be mannequin-molesting psychopaths.
Is it bad that the voice acting made me nostalgic for the original PlayStation version of Resident Evil? I'm not quite sure if it's a good thing to be reminded of that, because nostalgia aside, it makes for some pretty cringe-worthy voice acting. Fortunately, you will be playing this for the puzzles and not so much the story. I wasn't, anyway.
Audio effects themselves are pretty sporadic, with certain sound levels not mixing well with others. The effects themselves aren't bad, rather the volume assigned to each effect. Most people won't care, but it became glaringly obvious in VR, when I donned the headphones.
My initial reaction when watching the trailer for Dying: Reborn was excitement at another potentially terrifying horror game so soon after my heart recovered from Resident Evil 7. I never expected a Triple-A title from a smaller developer and a relatively budget price, as long as you don't factor in having to purchase two copies in order to play in VR and experience the full story on PS4.
But, again, it's important to mention that this is strictly a puzzle game, and an "escape" one at that. As such, some of the technical issues, and the fact that it was never explained that the VR version would be limited to a few "stages" from the game proper, give me reason to reluctantly give it a lower score. Unless you absolutely crave this kind of game, you will likely be disappointed.
Posted by: Rey Barrera on March 12, 2017.


text:
Economic growth and income distribution implications of public spending and tax decisions
Darvas, Zsolt (2020) Economic growth and income distribution implications of public spending and tax decisions. Working Paper. Corvinus University of Budapest, Budapest.
The level and composition of public expenditures and revenues both have implications for economic development, as shown by the 'fiscal multiplier' and the 'quality of public finance' literature. Public finance decisions also influence the distribution of income. Based on a review of the literature, I argue for a fair distribution of income as reflected in low-income inequality, not particularly because of the impact of income inequality on long-term growth (which is a controversial issue), but primarily because income inequality typically implies inequality of opportunity. European Union countries have very diverse public finance structures and different levels of effectiveness and there is room for improvement in the growth and equality impacts in all countries. A general guideline would be that the most effective approach comprises progressive taxes and inheritance taxes, spending on education, health and public infrastructure, and better government effectiveness. At the height of the 2008 global crisis and the subsequent European financial and economic crises, the fiscal consolidation strategies of EU countries largely relied on cutting public investment and social spending (except pensions), which is the opposite of what is suggested in the literature. Better fiscal rules and good fiscal institutions are needed to safeguard growth- and distribution-friendly expenditures in a crisis.
Corvinus Economics Working Papers - CEWP
Series Number / Identification Number:
taxation, public pending, economic growth, income inequality
D63 - Equity, Justice, Inequality, and Other Normative Criteria and Measurement
H20 - Taxation, Subsidies, and Revenue: General
H50 - National Government Expenditures and Related Policies: General
O40 - Economic Growth and Aggregate Productivity: General


STOCKBRIDGE, Ga. -- Two suspects stole money from game machines at a Henry County gas station last Thursday night.
The robbery happened at around 11:20 p.m. at the Citgo at Highway 138 and Daniel Drive in Stockbridge.
Henry County Police Sgt. Joey Smith said one suspect used a crowbar to pry open the machines and take the money. He then ran from the store and got away in a brown SUV driven by a second suspect. No one was hurt, although the suspect threatened to kill the store's clerk, according to Smith.
The robbery is under investigation. Anyone with information is asked to call Henry County Police Det. Clark at 770-288-7242.
MCDONOUGH, Ga. -- Two people have been charged with murdering a Henry County man with whom one of the suspects was living.
Michael Raymond Patton, 45, was found dead Sunday morning in his Highland Drive home.
Henry County Police Sgt. Joey Smith said Patton was shot to death. Investigators determined a woman living in the house, 44-year-old Tonia Lynn Gantt, conspired with another suspect to rob Patton before he died.
Gantt and 49-year-old Joseph Franklin Norris shot Patton during the attempted robbery, according to Smith. Gantt suffered a head injury during the incident.
Both suspects are being held in the Henry County Jail on murder charges. Gantt has also been charged with methamphetamine possession.
HENRY COUNTY, Ga. -- Henry County Police are looking for a man who used counterfeit money to make a purchase at an Ellenwood pharmacy.
The man passed four fake $100 bills at the Walgreens on Fairview Road, according to Henry County Police Sgt. Joey Smith. He apparently bought a Green Dot prepaid debit card with the phony money.
Surveillance cameras inside the store captured clear images of the suspect, as well as footage of him driving away in a white Dodge Charger.
HENRY COUNTY, Ga. -- A former Henry County Schools paraprofessional is accused of defrauding the Georgia State Board of Workers' Compensation.
Warrants have been issued for 40-year-old Beth Ealey's arrest. She faces 52 counts of unlawful receipt of workers' compensation benefits.
Stan Bexley, director of the State Board of Workers' Compensation Enforcement Division, said Ealey was injured in 2008 while employed by the Henry County School System. She told the district that she planned to resign and move to Florida.
In August 2012, Ealey accepted a teaching job in Putnam County, Fla., but did not tell Henry County that she was no longer disabled. She also did not tell the Putnam County School District that she claimed in Georgia to be totally disabled and was receiving benefits, according to Bexley.
MCDONOUGH, Ga. -- Henry County police have identified and arrested the man accused of robbing a grocery store last month.
The robbery happened Jan. 7 at the Aldi on Jonesboro Road in McDonough.
Henry County Police Sgt. Joey Smith said the suspect, Douglas Brock of McDonough, made a one-dollar purchase. When the cashier opened the register to give him change, Brock snatched the cash drawer and then ran.
Surveillance cameras captured images of Brock leaving the store with the drawer.
A Facebook tip led police to the suspect. Brock is now being held in the Henry County Jail.
HAMPTON, Ga. -- Henry County police are working to identify a driver who hit a cyclist and then left the scene.
The female cyclist was struck on Rocky Creek Road near McDonough Hampton Road in Hampton last Friday at around 7:30 p.m. She suffered non-life-threatening injuries.
Henry County Police Sgt. Joey Smith said the suspect's car left behind parts matching a green 1996-2000 Honda Civic EX.
Smith said the car lost its passenger side mirror in the crash. It also should have additional damage to its passenger side.
Anyone with information in this hit-and-run case is asked to call Henry County police at 770-288-8281.


text:
« Medical community comes down on Frist | Main | Dumb Edwards statistic on poverty »
More bad Factcheck.org criticism of AARP
FactCheck.org has published another terrible article about AARP and Social Security. (For details on the last one, see my previous post.)
This time, Factcheck focuses on metaphors used by the AARP in a recent ad. The obvious problem, however, is that metaphors are deeply subjective. There are no facts to check - the whole issue comes down to a matter of perspective. It's exactly the sort of ideological issue that we went to great lengths to not take a position on at Spinsanity. (We did analyze the most outrageous PR-influenced attempts to twist language and manipulate the public, but this ad hardly falls into that category.)
Here's the AARP ad in question:
Plumber: Yep, looks like the drain is clogged. Only one way to fix it. We're going to have to tear down the entire house.
Woman: What?!!!
Plumber: Go ahead, guys!
On Screen: Demolition crew wrecks house with sledgehammer, jackhammer, backhoe, wrecking ball.
Announcer: If you had a problem with the sink, you wouldn't tear down the entire house. So why dismantle Social Security when it can be fixed with just a few moderate changes?
Reform is necessary, but diverting money into private accounts is just too drastic, could add up to two trillion dollars in more debt and lead to huge benefit cuts. For more visit AARP.org. Paid for by the AARP.
That's it. Pretty outrageous, huh?
Here's Factcheck's analysis -- subjective claim #1:
Comparing Social Security's problems to a clogged sink understates matters considerably. In fact, as we've often noted, the current Social Security tax structure can't support all the benefits that have been promised. According to Social Security's chief actuary, the current level of Social Security taxes will be able to support only 73 percent of the currently promised level of benefits when the systems trust funds become exhausted. That's currently projected to happen in the year 2042. A new report is due out later this week, which may revise those numbers up or down slightly. Either way, that's more serious than a clogged drain.
Note that this depends entirely on accepting the assumptions underlying the 2042 estimate. The Congressional Budget Office projects the trust fund won't be exhausted until 2052. And if the economy does well, the date could get pushed back even further. There's just no right answer to whether the "clogged sink" is the right metaphor or not.
Subjective claim #2:
The ad further claims that the current system "can be fixed with just a few moderate changes." In fact, fixing the current system will require some fairly sizeable tax increases, cuts in future benefit levels, or some combination of the two. For details, see our earlier article and decide for yourself how moderate such changes seem.
This all depends on how you define "fix" and "moderate," as I explained earlier. Why we should assume that Factcheck's definitions of those terms are the right answers?
Subjective claims #3-5:
Creation of individual accounts would be a big change, but would hardly "dismantle" Social Security as the AARP ad claims. As proposed by the President, the individual accounts would be voluntary. Those who choose not to participate would remain in the current system, and so would all who are currently age 55 or older.
Also, individual accounts wouldn't by themselves "lead to huge benefit cuts" as the ad claims. Future benefit levels will indeed have to be reduced unless taxes are increased to pay for them, something the President has said he's against. But that's true regardless of whether or not individual accounts are created.
It is also true that those who choose to participate in individual accounts would have to accept a reduction in the level of their own guaranteed future benefits, but that would be their choice, and it would be in exchange for the chance to get a higher level of future benefits overall should the investments in the accounts yield returns higher than three percent a year above inflation.
Again, note the highly subjective definition of "dismantle." But the middle paragraph above really takes the cake. It is true that "individual accounts wouldn't by themselves 'lead to huge benefit cuts'" and that "Future benefit levels will indeed have to be reduced unless taxes are increased to pay for them ... regardless of whether or not individual accounts are created," but both statements are almost willfully obscure.
Let's review. The AARP stated that private accounts "could ... lead to huge benefit cuts." The operative word is could. In fact, this is a reasonable claim, although AARP doesn't back it up in the ad. First, President Bush has explicitly proposed private accounts as a sweetener to make it possible to change the way benefits are calculated for everyone (see the Wehner memo if you don't believe me). That calculation would have the effect of reducing benefits from what was originally promised by as much as 40%. It is true that we could create private accounts and not implement benefit cuts, but that would make the situation worse, as Wehner himself points out.
Moreover, private accounts require massive borrowing that will put enormous pressure on the federal budget over the next several decades. That borrowing will make income tax increases more likely, and make it harder to increase Social Security revenue through higher payroll taxes. If more of the burden of alleviating the shortfall has to be borne by benefit cuts, then the potential for "huge" ones is higher.
The culmination of the absurdity comes when Factcheck purports to try to propose the "correct" metaphor:
Both sides are using exaggerated metaphors in this debate. Where AARP presents Social Security as having nothing worse than a stopped-up drain, the other side has depicted it as a doomed Titanic about the strike an iceberg and sink to the bottom. Neither picture is accurate.
What would be an accurate metaphor? Since others are having so much fun with this, we'll give it a try.
The kitchen-sink metaphor is wrong because Social Security's problems grow steadily worse over time and threaten the entire benefit structure. The entire house is crumbing from within, so delaying a solution only makes the eventual repair more difficult and expensive. We would compare the problem to a termite infestation rather than a clogged sink or a sudden collision with an iceberg.
Furthermore, individual accounts by themselves don't constitute a wrecking ball as the AARP implies, any more than individual accounts alone would save the system as the President's supporters claim. It is true as the AARP ad says that substantial borrowing would be needed to create such accounts. So we would characterize the creation of such accounts as adding a new wing to that termite-infested house, while taking out a new mortgage to pay for it. The new wing may or may not be worth the expense, but the termites are still there.
We're not sure that the image of building a new addition to a slowly deteriorating home would make a very good TV ad, but it would give a better picture of reality than either sides' ads have shown so far.
I don't even know what to say about this. It demeans the term to call it factchecking. What a mess.
You *are* sending these along to FactCheck, right?
Posted by: rone | March 24, 2005 at 05:57 PM


I'm continuing with my mini-series on content creation. This is probably the last one, unless I think of something else. Coming up with topics to write about it a difficult task. Particularly if you rely mostly on reviews and you are in a reading slump, or if you have been blogging for a while. Prompts can be your best friend when who hit the bottom of the content barrel.
Challenges, BlogFlashes, and Memes abound in the blogging world and can be a wonderful source of inspiration. A short prompt or graphic can set your mind thinking in directions it hasn't gone before. Some of these are ongoing events, while others happen once a year. Even if the event has past you can still use the prompts to create your own posts, you just won't have the extra benefit of linking up with the others as part of the event.
A-Z Blogging Challenge (going on NOW) - Each day you write a post based on the letter of the day. It can be time intensive if you are not use to blogging 6 days a week. Today is day 4 of the challenge so it's the letter D.
#BlogFlash - this occurred in March, but as it's a Facebook page I suspect there will be future events in the months to come.
Photo-a-Day - If you are wanting to create content without writing so much try this challenge from Fat Mum Slim. Each day has a prompt for you to take a picture of. It's great if you are wanting to get more involved with Instagram or maybe increase your photo gallery.
Saturday Snapshot - a weekly meme to share a picture or two or three. It's hosted by At Home with Books and each week a linky is posted for you to link up with other participating blogs.
A word of caution - depending on the focus of your blog, photo challenges can lead you off focus. If you want to make your blog solely about books, you can still do that with photos (books you got in the mail, bookstore visits, etc.).
Top Ten Tuesdays - this is hosted by a book blogger and there's a new topic each week.
Waiting on Wednesday - another bookish meme. You can just post the cover of the book you are anxiously waiting for. Great for when you don't have time to write up a whole post.
If you want more information on memes, check out this post I wrote last year.
For some reading challenges that might help you get out of your slump, check out these.
Where are you Reading - Try to read a book set in or about each of the 50 states (or each European country, etc) in 2013.
2013 Audio Book Challenge - When I'm super busy often the only reading I get done is audio books. This challenge is also great for those have been thinking of getting into audio books - great recommendations from die-hard audio readers.
7 Continents, 7 Billion People, 7 Books Challenge - This is a super cool challenge, particularly if you are wanting to read international literature. The challenge is broken down even further with sub-categories, such as 7 countries with the most population. There's some helpful lists to assist you with locating literature that fits each of the 7 categories.
There you have it, if you need inspiration for content creation then check out some of these challenges. You don't have to follow the event to get ideas for posts.
What challenges, memes, blogflashes do you participate in? Where do you find inspiration for content when you are drawing a blank?
I do love that memes can help inspire me when I'm in a creative funk. However, I know that I'm REALLY in a funk when I'm doing too many memes (which, for me, is more than 1-2 a week). I like to do as much original content as possible, and even though my contribution to the meme is my original thoughts, the meme itself does not feel original to me. So I try to use them as occasional guides rather than constant posts, kwim? I know other bloggers feel differently on this subject though.
Beyond memes, when I finish a book, I try to think about the general themes/issues I liked/disliked while reading. For example, was a particular character not clicking for me? Why? What do I look for in an intriguing character? Stuff like that can get my wheels going for posts.
I agree about too many memes on a blog. I find it boring if everyday is just another meme. It can be a great for filler content but shouldn't be the main focus of a blog.


text:
by davidrobertlewis - Apartheid - August 20, 2013
Marikana Concourt Judgement: An Insult to workers
The judgement took just five minutes. The Constitutional Court dismissed a request by 270 injured and arrested mineworkers from Marikana's Lonmin mine for leave to appeal for funding from the state for their legal representation at the Farlam Commission of Inquiry. The mineworkers were not even given an opportunity to state their case. Instead the court chose to duck the issue and based its judgment on a technicality. The Constitutional Court, the highest court in the land, ruled that it was not competent to deal with a matter being handled by a lower court.
This was a lost opportunity for the Constitutional Court to level the playing field and to affirm the new human rights culture that this society is committed to building after the brutality of apartheid. It was also an insult to the workers who died, and all other victims of police brutality and state repression in the history of South Africa. The reality is, each day that the commission sits, these mineworkers face a David and Goliath battle against a state, a police force and Lonmin, all of whom possess formidable funds to employ an army of top lawyers and researchers.
The spirit of callousness against the miners who were attacked by police on the 16th August doesn't stop with the withholding of state funds to meet their legal representation. The North West ANC failed to attend the highly successful commemoration rally in Marikana last Friday (16th August). This was an opportunity to show their respect to the families of all those who had died and the injured and arrested survivors of the Marikana massacre. Their refusal to participate was shocking even to the national ANC, who condemned their action in a press statement the following day. The commemoration was planned as a day of unity and healing and a call to continue the fight for a living wage. Many political parties shared a platform to give messages of support to the miners and their families. The NUM was invited to share this platform. They also refused to attend, despite the fact that at the time of the massacre, many who lost their lives were in fact NUM members.
A year on from the massacre, there has been no justice, no move by mining companies to address the issue of a living wage and now to add insult to injury, miners at Anglo Platinum mines face the company's decision to go ahead with the retrenchment of around 7000 jobs. Many from Anglo Platinum, as did those from Implats, joined their comrades from Lonmin at the commemoration on the 16th August. It is no wonder that workers across the platinum sector are beginning to speak in one voice in combining the demand for a living wage with those of justice against state brutality and in defence of jobs.
The pursuit of legal and peaceful channels by the miners in their quest for justice for those who were arrested, injured and killed has been a futile exercise. The workers clearly cannot expect justice or truth from the courts of the land and even less from the Farlam Commission where the odds are stacked against them. The only option left open is to boycott the commission and to take collective protest action to demand that the government pay the legal fees of the miners' representatives. This demand should now be merged with the continued fight for a living wage and for defence of jobs at Anglo Platinum and taken up across the platinum belt.
ConCourt Marikana
You have a right to defend our country from the insurrectionists
Verwoerdian newspeak, Israel disinformation and INM bogus babies, it's all real


Even the unique snowflake is jealous of such subtle beauty! The glow and grace are mixed with a wild spirit and Victorian reference to introduce the Snow Queen to the spectator. The silk organza sleeves match the skirt hem layers, while the top combines the dotted mesh and French lace embellishment with beading and rhinestones. The shoulder straps can be adjusted as well as the sleeves ties. The V-shaped front and back lining remains alluring under the lace covering. The back has a keyhole detail with two sparkling buttons, hidden zipper closure, and a slight train. The dress can be made sleeveless by the bride's preference.
Materials: Natural silk organza, dotted mesh, French lace, tulle.


Henry David Thoreau, a distinguished American writer and philosopher, was amazing personality. The excerpts and quotes from his work and speeches showcases how great a person was he. The basic goodness of his nature was made him an inspiration that millions of people look forward to today. His ideas and thoughts had a hidden power in them.
He always inspired people to learn the art of reawakening by an unbounded expectation of the dawn that doesn't forsake them even in their soundest sleep. Henry David Thoreau quotes civil disobedience and other quotes showcase his ideology that only the conscious endeavour and unquestionable ability of a person could lead him to success.
Henry David Thoreau inspirational quotes have always guided people to live a peaceful and not waste it in living hastily. According to him when individuals live a wise and unhurried life, they perceive only worthy and great things that have absolute and permanent existence. Following even a single thing of such a great personality is a thing of pleasure in itself.
An excerpt from one of his writings says that if night and day are always greeted with joy, life emits a fragrance like that of sweet-scented herbs and flowers, and that keeps one positive always and paves his/her to success. In his sayings Thoreau mentioned that the real harvest of people's life is somewhat as indescribable and intangible as the evening or morning tints. One should always consider himself/herself blessed. Thoreau quotes are an inspiration that help, guide people to lead a better life.