This is the fourth tutorial in my four part series dealing with character animation. These tutorials are targeted for beginners wanting to learn the basics of modeling, uvw mapping, texturing, rigging, and creating a cute 3d monster. In this fourth part we're dealing with character rigging. You'll learn the basics of using the Morpher and Skin modifiers to manipulate and deform a simple character. Character rigging can be a tough subject for beginners but I'll do my best to keep things as simple as possible. I'm using 3ds Max 2011.
Step 1 What is Character Rigging?
In 3d animation, character rigging means the process of preparing the character for animation. The idea is to use special helper objects and modifiers to prepare a set of tools that make the animating process as easy as possible. We're going to rig the character by using the Morpher modifier for the facial animation and the Skin modifier (in conjunction with bones) for the rest of the body. In the picture below you see a character pose you can be easily do after completing this tutorial.
The Morpher modifier is commonly used for lip sync and facial animation. The Morpher modifier deforms the original object according to predefined target objects. The biggest task is the creation of the target objects ( morph targets ). The modifier itself is really simple to use.
Go to the front viewport and clone the monster ( Press and hold SHIFT in keyboard and move the monster ). Make sure you make a normal copy ( not instance or reference). From now on we work on the copy.
Remove Turbosmooth and both Unwrap UVW modifiers from the copy.
Go to the Editable Poly or Edit Poly modifier ( Make a selection > Modify panel ) below the Symmetry modifier and activate the vertex sub-object level.
Give appropriate name for your morph target such as 'mouth afraid'.
Now we have one morph target and that's enough for the sake of this tutorial. If you are about to create some serious facial animation, you need more morph targets. Just create more copies from the original and create expressions like smile, amazement, blinking eyes and so on. It's often a good idea to create separate targets for eyes and mouth and separate targets for the left and right side (like wink) as well to have maximum control over the expressions. The Morpher modifier lets you combine the expressions of several different morph targets.
Apply the Morpher modifier ( Make a selection > Modify panel > Modifier List > Object-Space Modifiers > Morpher ) and move it just below the Turbosmooth modifier.
Go to the 'Channel List' rollout and right-click on the first '- empty -' slot.
Click on 'Pick from Scene' and then on the morph target (mouth afraid). Now the first morph channel is activated. Just use the spinner to morph between the original model and the morph target. If you modify the morph target, remember to reload it by clicking on 'Reload All Morph Targets' button.
Tip: Turn 'Use Limits' off in the 'Global Parameters' rollout to go beyond the 0-100 range. Try for example negative values to get some interesting ( and maybe even useful ) results. Remember also that channel percentages can be mixed when you have multiple morph targets.
Go to the front viewport and create three bones from top to bottom like in picture below ( Create panel > Systems > Bones ). When you have created three bones, just right-click to end the bone creation. Exiting the bone creation mode creates a small nub bone at the end of the chain, which will be used later with IK ( inverse kinematics ).
Now we have four bones that are linked to each other. The first bone is the parent of the second, the second is the parent of the third, and so on. If you move the first bone the whole chain follows. You can also double click on the parent to select it and all its children.
Open Bone Tools ( Animation > Bone Tools… ), activate the 'Bone Edit Mode' and move the spine bone to meet the first bone of the leg like in picture below. Close the Bone Tools.
Next we'll create the arm bones. This time we want to link the arm bones to the spine so start creating the bones by clicking on the spine bone. Create four bones ( plus the nub bone) for the left arm like in picture below.
Now we have all the bones we need and we just have to fit them inside the character. Go to the left viewport, select all the bones and move them to the center of the character. Rotate the bones like in picture below. Notice how the knee bends. We bend the bones now to make them work better with IK.
I wasn't really sure how I should rig this weird monster character so I did the leg bones pretty much like I would for a human-like character (except for the fact that there is only one leg). You can also create two "legs" inside the monster if you want to make it "walk". It all depends on how you want your character to move. Does it move by flying, jumping, crawling, walking, or by all these means?
Go to the top viewport and rotate the arm bones so that they fit inside the character. Make sure the arm bends a little.
Select the whole arm by double clicking on the clavicle bone (the bone between the spine and the arm). Use the mirror tool ( The main toolbar > Mirror ) to make a mirrored copy of the arm ( make sure to make a standard copy, not instance or reference ). Position the new bones like in picture below.
Now the skeleton is complete, but let's create one more helper object to serve as a master that is used to move the whole skeleton. Create a dummy ( Create panel > Helpers > Dummy ) and position it exactly where the spine bone and the first leg bone meets. Check the position in both the left and front viewports.
Use the 'Select and Link' tool ( The main toolbar > Select and Link ) to link the spine bone and the first leg bone to the dummy. Now if you move the dummy, the whole skeleton should follow. Try this to make sure everything is ok and finally undo the move.
As a final step, link the eyes ( if you have them ) to the head bone. Now the eyes stay in place whenever the character moves.
Go to the left viewport, select the first leg bone, activate HI solver ( Animation > IK Solvers> HI Solver ), and click on the nub bone of the leg. Now IK has been assigned to the leg and there is a new blue helper object in the end of the IK chain. The helper object is often called IK handle and is used to control the movement of the whole chain. Try to move it to see how it works ( undo the move afterwards ).
Next go to the front viewport and assign IK also for both arms. Make the IK chain from the first bone of the arm to the nub bone ( Don't touch the clavicle bone ). Test how the arms work. They should work well in the top viewport.
Now all the IK solvers have been created. At the moment you can't rotate individual bones in the IK chain. To be able to do that, select the IK handle, go to the motion panel, and click 'Enabled' in the IK Solver rollout. This is the on/off switch for inverse kinematics for the selected IK chain. This button can also be animated so the animator can easily switch between inverse kinematics and forward kinematics ( just rotating the bones in the chain) while animating the character. Leave it on for now.
As a final thing, try to move the green dummy to see how the character responds when inverse kinematics is in use ( undo afterwards ).
Go to the 'Rotational Joint' rollout.
Now the leg bones can rotate only along Y axis and within limited range. Try to move the leg with the IK handle to see the difference. Now It's up to you whether you want to set the limits for the arms as well or not. You might want to come back to this step after the skinning process to see the movement of the character while trying out different values.
In the Skin modifier in the Parameters rollout, click 'Add', Select all the bones except for the nub bones, and click 'Select'. Now the bones deform the character but it's not pretty.
Activate the Envelope sub-object level.
Select the outer bound of the envelope at the top of the bone.
Change the radius of the envelope bound to 85 either by moving it or by inserting the value with keyboard( This is not exact value. The suitable value depends on the size of your character. Just look at the picture below to size the envelope correctly ).
Select the outer bound of the bottom of the bone and give it the same radius. ( The idea is to make the outer bounds of the envelopes so big that the whole width of the character falls inside of it ).
Now the skinning/vertex weighting process is done. Deactivate the envelope sub-object level and try to rotate each bone to see how the character deforms. Try also the IK handles and the master dummy. I recommend undoing all the rotations afterwards to keep the neutral pose.
Tip: The weighting/skinning process can be made easier by animating the bones. Just animate some natural bone movements. At first, the character will look ugly and distorted but keep in mind that as long as you keep the neutral pose in keyframe 0, nothing will break. You can always reverse everything by going to frame 0 and removing all the keyframes. The benefit of the animations is remarkable. You can see the deforming character while working on envelopes just by moving back and forth on the timeline.
That's my take on character rigging. Let's continue in the comments! In case you're wondering, I made the light and glow effects in Photoshop.


text:
Q: acos() bad results with two close points in C I am making a function that calculates the distance of two points using their latitude/longitude (in degrees not radians) and the spherical law of cosines. The problem I have is that due to rounding errors in the function acos() the results I am obtaining are far from good when the two points are very close to each other.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct{
 double lat;
 double lon;
} point;

#define DEG_TO_RAD 0.017453292519943295769236907684886
#define EARTH_RADIUS_IN_METERS 6372797.560856

double distance(point a, point b) {
  double arg=sin(a.lat * DEG_TO_RAD) * sin(b.lat * DEG_TO_RAD) + cos(a.lat * DEG_TO_RAD) * cos(b.lat * DEG_TO_RAD) * cos((a.lon-b.lon) * DEG_TO_RAD);
  if(arg>1) arg=1;
  else if (arg<-1) arg=-1;
  printf("arg=%.12f acos(arg)=%.12f\n",arg, acos(arg));    //to see the problem
  return acos(arg) * EARTH_RADIUS_IN_METERS;
}

int main(){
  point p1,p2;

  p1.lat=63.0;
  p1.lon=27.0;
  p2.lat=p1.lat;
  p2.lon=p1.lon;

  printf("dist=%.8f\n",distance(p1,p2));

  return 0;
}

The output is
arg=1.000000000000 acos(arg)=0.000000014901
dist=0.09496208

as you can see, when it computes the acos() it should give zero but it does give some errors that get enormously magnified after multiplying by the earth radius. It also happens when the two points are not equal but very close. If it is of any use my data about latitude and longitude has up to 7 decimal digits.

A: The result you get from acos is as good as it gets: the problem is that the calculation of arg will always have a small error and return a value that is slightly off. When the two points are equal or very close the result is less than one, for example 1-10-16. If you look at the graph of acos(x) you'll see that it's nearly vertical at x=1, which means that even the slightest error in arg has a huge impact on the relative error. In other words, the algorithm is numerically unstable.
You can use the haversine formula to get better results.

A: This is exactly what extended precision is for: to compute intermediate results at a higher precision than the double precision used for arguments and results.
I changed your program thus:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>

typedef struct{
 double lat;
 double lon;
} point;

#define DEG_TO_RAD 0.017453292519943295769236907684886L
#define EARTH_RADIUS_IN_METERS 6372797.560856L

double distance(point a, point b) {
  long double arg=sinl(a.lat * DEG_TO_RAD) * sinl(b.lat * DEG_TO_RAD) + cosl(a.lat * DEG_TO_RAD) * cosl(b.lat * DEG_TO_RAD) * cosl((a.lon-b.lon) * DEG_TO_RAD);
  if(arg>1) arg=1;
  else if (arg<-1) arg=-1;
  printf("arg=%.20Le acos(arg)=%.20Le\n",arg, acosl(arg));
  return acosl(arg) * EARTH_RADIUS_IN_METERS;
}

int main(){
  point p1,p2;

  p1.lat=63.0;
  p1.lon=27.0;
  p2.lat=p1.lat;
  p2.lon=p1.lon;

  printf("precision of long double:%Le\n", LDBL_EPSILON);

  printf("dist=%.8f\n",distance(p1,p2));

  return 0;
}

With these changes, on a compiler that offers extended precision for long double, the result is as expected:
precision of long double:1.084202e-19
arg=1.00000000000000000000e+00 acos(arg)=0.00000000000000000000e+00
dist=0.00000000

EDIT:
Here is a version that uses GCC's quadmath library for intermediate results. It requires a recent GCC.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <quadmath.h>

typedef struct{
 double lat;
 double lon;
} point;

#define DEG_TO_RAD (M_PIq / 180)
#define EARTH_RADIUS_IN_METERS ((__float128)6372797.560856L)

double distance(point a, point b) {
  __float128 arg=sinq(a.lat * DEG_TO_RAD) * sinq(b.lat * DEG_TO_RAD) + cosq(a.lat * DEG_TO_RAD) * cosq(b.lat * DEG_TO_RAD) * cosq((a.lon-b.lon) * DEG_TO_RAD);
  if(arg>1) arg=1;
  else if (arg<-1) arg=-1;
  printf("arg=%.20Le acos(arg)=%.20Le\n",(long double)arg, (long double)acosq(arg));
  return acosq(arg) * EARTH_RADIUS_IN_METERS;
}

int main(){
  point p1,p2;

  p1.lat=63.0;
  p1.lon=27.0;
  p2.lat=p1.lat;
  p2.lon=p1.lon;

  printf("dist=%.8f\n",distance(p1,p2));

  return 0;
}

I compiled and ran with:
$ gcc-206231/bin/gcc t.c -lquadmath && LD_LIBRARY_PATH=gcc-206231/lib64 ./a.out

A: In cases like this it's usually best to try to reformulate the problem
to avoid badly conditioned formulas like acos(x) with x small.  This is
a well-beaten problem in the case of distance computations on a sphere
and better formulations are provided on the Great-circle page on
Wikipedia.  These give high accuracy for short distances with ordinary
double precision arithmetic.

redpajama_set_name: RedPajamaStackExchange


text:
UNESCO organized a training course for prosecutors on crimes against journalists in Bangkok
UNESCO organized a training course for…
In collaboration with the Office of the Attorney General of Bangkok, UNESCO has concluded a national training course for prosecutors titled "Training course for prosecutors on investigating and prosecuting crimes against journalists and the protection of freedom of expression". The 3-day workshop took place in Bangkok from 9 to 11 March and covered international standards on freedom of expression and safety of journalists.
©UNESCO/C. Arnold
The training brought together 30 prosecutors from Bangkok and other regions and created an opportunity for open dialogues among different stakeholders, including Thai journalists. The workshop particularly underlined the crucial role of prosecutors' efforts not only to end impunity and ensure the rule of law, but also to protect freedom of expression as a fundamental human right. As underlined by Ms. Gita Sabharwal, the Resident Coordinator of the United Nations in Thailand in a tweet about the event: "the judicial system is fundamental to checks and balances in every society. The UN in Thailand recognizes that public prosecutors are at the core of this system and ensuring due process, human rights and rule of law for civil society to flourish".
As prosecutors, we have a key role in administrating justice and securing public order. However, prosecuting crimes against journalists is more meaningful. We are not only bringing those responsible for a crime to justice but also taking part in upholding freedom of expression, a fundamental right for exercising other rights.
M.L. Supakit Charoonrojn
Secretary-General of the Nitivajra Institute, Attorney General's Office of Thailand
Besides providing the participants with operational tools for investigating and prosecuting crimes against journalists and media workers, high-level trainers and national experts also addressed key thematic areas, such as specific threats against women journalists, and explored mechanisms for the protection of journalists and their sources, and the protection of witnesses.
When threats of violence and attacks against journalists are not properly investigated, this leads to more severe aggressions and murders, which is an extreme form of media censorship. This cycle of violence against journalists is often an indicator of the weakening of the rule of law and of the judicial system globally. Independent public prosecutors thus have a crucial role to play in protecting journalists and in ensuring that the rule of law and democracy are respected.
Shigeru Aoyagi
Director of the UNESCO office in Bangkok
In this regard, the training notably built on UNESCO and the International Association of Prosecutors' Guidelines for Prosecutors on Cases of Crimes Against Journalists, available in 18 languages and recently translated in Thai with the support of the Office of the Attorney General of Thailand. The course, delivered in a series of plenary and workshop sessions, examined constraints and challenges of working conditions of journalists and looked into how the work of journalists and prosecutors is done from each other's perspective.
For me as a prosecutor, the most interesting part was to raise awareness on the importance to protect journalists and to make them trust in the law system in Thailand. The part that shows the standards in the world and the examples from other countries is an aspect that I haven't had the opportunity to see during my studies in Thailand.
Duangrung Rattanaphirom
Assistant Public Prosecutor, Phuket, Thailand
This training for prosecutors was organized within the framework of UNESCO Judges' Initiative which, since 2013, has raised the capacities of over 23,000 judicial actors (judges, prosecutors and lawyers) on international and regional standards on freedom of expression, access to information and the safety of journalists in more than 150 countries, notably through a series of Massive Open Online Courses (MOOCs), on-the-ground training and workshops, and the publications of a number of toolkits and guidelines.
The organization of this training was notably supported by the Multi-Donor Programme on Freedom of Expression and Safety of Journalists.
Call for proposals: 2023 UNESCO International Programme for the Development of Communication (IPDC)
Journalism that Builds Bridges: UNESCO and partners sponsor the launch of an 18-month project nurturing young citizen journalists in Thailand
Putting the Periphery at the Center of the Conversation: Re-examining the Thai Media Landscape
UNESCO, government, civil society, academic and media representatives address artificial intelligence, e-governance and other impacts on access to information in the Mekong Region
Consultations on UN Plan of Action: Urgent need to address gendered violence against journalists

redpajama_set_name: RedPajamaCommonCrawl


text:
AAPG Members can login at the AAPG Members User Log In to access full-text articles from the AAPG Bulletin.
Datapages Home
DEO-GIS
AAPG Home
Datapages UPDATE Featured Articles
AAPG/OSU Consortium
AAPG GIS Publications Committee
GIS Author Resources
Financial Supporters
The Boone Pickens Digital Geology Fund
Datapages Board of Directors
About Staff
AAPG Datapages/Archives
Login as a different user |AAPG Members User Log In
All Content Collections
AAPG Bulletin
AAPG Special Volumes
Subscribe to the Archives
Full TextFull Text(subscription required)
Pay-Per-View PurchasePay-Per-View
Purchase Options Explain
> Protected PDF: $10
> Internal PDF: $14
> Open PDF: $24
Home > Browse Collections > AAPG Bulletin > Year 1976 > Issue August
The AAPG/Datapages Combined Publications Database
Issue: 8. (August)
First Page: 1288
Last Page: 1322
Title: Oil and Gas Developments in Maryland, Ohio, Pennsylvania, Virginia, and West Virginia
Author(s): William S. Lytle (2), Jonathan Edwards, Jr. (3), Theodore A. Debrosse (4), E. Perry Bendler (5), Jeffrey B. Hermann (6), William W. Kelley, Jr. (7), Douglas G. Patchen (8)
The CSD District 20 report includes Maryland, Ohio, Pennsylvania, Virginia, and West Virginia.
In Maryland a well testing the Oriskany on Negro Mountain was dry. Natural gas production declined 30% from that of 1974. Total new footage drilled was 24,067.
In Ohio 1,243 new wells were drilled in 1975. Of these, 417 were gas wells, 208 oil wells, 480 combination oil and gas wells, and 115 dry holes. Of the new wells drilled, 98 were exploratory. A total of 1,102 wells was drilled to the Silurian "Clinton-Medina" sandstone; 1,028 were productive. A total of 62 wells was drilled to the Mississippian Berea Sandstone; 54 were productive. The 1975 oil production had a value of $113,916,537 and the gas produced was valued at $60,604,235. Total new footage drilled was 4,953,249.
Pennsylvania's drilling activity increased in 1975 over 1974 by 11% in exploratory drilling and 16% in development drilling. The number of gas wells drilled increased 37% (469 in 1974 to 640 in 1975), and oil wells drilled increased 3% (667 in 1974 to 686 in 1975). A total of 1,362 new wells was drilled and 37 wells were deepened. Crude oil production decreased 6% and gas production increased 3% from that of 1974. There were 15 gas discoveries, the same number as in 1974, and 1 oil discovery. Seismic activity was down from 123 crew-weeks in 1974 to 50 crew-weeks in 1975. Footage drilled in new and deepened wells was 3,524,521, and in gas storage wells 29,966 for a total of 3,554,487.
In Virginia, 36 wells were drilled of which 28 were development and 8 exploratory, representing a decrease of 8% from the 1974 total. Of the 36 wells, 26 were gas, 2 oil, and 8 dry. Natural gas production decreased 5% and oil production increased 8% from that of 1974. Total footage drilled amounted to 168,765, a decrease of 14% from that of 1974.
West Virginia had a substantial increase (19%) in total well completions from 1974 to 1975. Most of the increase was due to the large number of gas storage wells completed, increasing the miscellaneous completions from 16 in 1974 to 168 in 1975. One more deep well was completed in 1975 than in 1974. Exploratory drilling increased 7% and was concentrated on Middle and Upper Devonian exploration objectives in the north-central counties and Mississippian objectives farther west and south. Areas which showed large increases in activity include the area south of Tallmansville field, Upshur County, and Greenbrier and Pocono activity in the tricounty area of Clay, Fayette, and Nicholas. Oil production decreased 6% and gas production decreased 7% from that of 1974. The highlight of the year w s Exxon's Cambrian gas discovery at a depth of 14,300 ft in a 17,675-ft basement test in Jackson County. Total footage drilled was 2,323,235, an increase of 12,792 ft from 1974.
Pay-Per-View Purchase Options
The article is available through a document delivery service. Explain these Purchase Options.
Protected Document: $10
Protected PDF Document – A Protected Document provides both the reader and the publisher with maximum security and helps guard against unauthorized users. A Protected Document is delivered as a PDF file "wrapped" in a registration file (DRM – Digital Rights Management file) that only allows the user to review and print the PDF from the machine to which it was originally downloaded. Certainly the best value and the lowest price, Protected Documents are recommended for librarians and others for whom security and copyright control is important.
Internal PDF Document: $14
Internal Document – An Internal Document is branded with the name of the original licensed customer to discourage unauthorized users from sharing the document outside the user's organization. The PDF is no longer restricted to one machine, but can be circulated to others in the same company or department. An Internal Document also can be printed for hard copy distribution internally but is not authorized for outside distribution nor posting on the internet. Users will not be able to cut-and-paste text or images from one document to another.
Open PDF Document: $24
Open Document – An Open Document is a fully functional PDF that can be circulated (a digital copy or hard-copy printed documents) outside the purchasing organization. Purchase of an Open Document does NOT constitute license for republication in any form, nor does it allow web posting without prior written permission from AAPG/Datapages ([email protected]).
AAPG Member?
Please login with your Member username and password.
Members of AAPG receive access to the full AAPG Bulletin Archives as part of their membership. For more information, contact the AAPG Membership Department at [email protected].
AAPG.org
Copyright © 2022 Datapages, Inc. All rights reserved


The village is finally developed!
Nicki Minaj has been secretly helping an Indian village build up it's infrastructure, via a series of financial donations.
The 'No Frauds' rapper, who delivered a stunning performance medley at last night's Billboard Music Awards, revealed the charitable news on Instagram.
"This is the kind of thing that makes me feel the most proud," she captioned a clip that showed fresh water being provided to the village.
"The money I've sent to this village in India for the last couple years [via my Pastor Lydia Sloley], has gotten them a Computer Center, a Tailoring Institute, a Reading Program and 2 WATER WELLS.
Nicki then explained that fans will get the chance to be involved in her charitable donations in the near future.
"Blessings to India. Our work is far from done," she said.
Meanwhile, Nicki Minaj also recently helped students on Twitter pay for their university fees, via a generous social media giveaway.
She also revealed that she will be starting her very own official charity dedicated to helping students with loans, tuition fees, supplies and more.


text:
Happy New Year! Welcome back to CNPRC News, your news roundup from the California National Primate Research Center (CNPRC).
News from the CNPRC
Two-dose vaccines provide protection against lung disease in rhesus macaques one year after they were vaccinated as infants, a recent study shows. The work, published in Science Translational Medicine, is a follow-up to a 2021 studying showing that the Moderna mRNA vaccine and a protein-based vaccine candidate containing an adjuvant, a substance that enhances immune responses, elicited durable neutralizing antibody responses to SARS-CoV-2 during infancy in preclinical research.
"This study emphasizes the need to get human infants immunized against SARS-CoV-2 as much as possible, as the benefits are clear and long-lasting. It also highlights the value of animal models in infectious disease research," Dr. Koen Van Rompay of the CNPRC said. "The lessons we learned and the resources and tools that were developed in the current study will be very valuable for future pandemic preparedness, to more effectively combat outbreaks with novel coronaviruses or other respiratory viruses in pediatric populations."
Uncovering the Long-Term Effects of COVID-19 and Its Impact on the Brain
We sat down with CNPRC Director Dr. John H. Morrison and Investigator Dr. Danielle Beckman to discuss their latest study on COVID-19. Their research revealed that SARS-CoV-2 caused significant neuron damage and inflammation within a week of infection. This research brings us closer to understanding the long-term impacts of COVID-19.
"This is direct virus accessing the brain very fast and spreading through memory-relevant regions," said Beckman.
Looking for Romance? That First Impression Matters
A recent University of California, Davis, study analyzing romantic first impressions shows that compatibility and popularity among the dating pool are influential in shaping who people pursue as potential romantic partners.
Although popularity and compatibility have been studied in established romantic relationships, in one of the first studies of its kind, UC Davis researchers explored whether these and other types of romantic first impressions affected later romantic outcomes. Researchers found that first impressions tend to linger, shaping whether people desired further contact with potential romantic partners after an initial meeting.
News from National Primate Research Centers
Diversifying the Next Generation of TB Vaccines
Mirroring the all-hands-on-deck collaborative approach that accelerated the development of a variety of COVID-19 vaccines during the pandemic, the National Institutes of Health is seeking to spark similar innovation for a longstanding, intractable disease: tuberculosis. As part of this national push, NIH's National Institute of Allergy and Infectious Diseases awarded Texas Biomedical Research Institute (Texas Biomed) and The Access to Advanced Health Institute (AAHI) in Seattle, Washington, a $3.5 million, five-year Innovation for Tuberculosis Vaccine Discovery grant.
A New Way to Fight Diseases? Stop Viruses From Stealing Nutrients
Researchers suspect that the way cells use nutrients in the presence of a virus can determine disease outcome and severity in the earliest stages of infection or even long after the pathogen leaves the body.
The immune system has long been touted as the body's primary defense against invading viruses, with the understanding that a strong immune response swiftly knocks out an infection while a weak one allows it to linger, leading to prolonged disease or even death.
Now, researchers at Tulane University are looking at an entirely different system—the body's ability to use nutrients at a cellular level — to predict disease response and severity.
Passionate About Advancing Health? Join the CNPRC Team!
Undergrad & Graduate Training
Residency In Primate Medicine
Job & Postdoc Opportunities
Recent CNPRC Publications
Rhesus monkey sociality is stable across time and linked to variation in the initiation but not receipt of prosocial behavior.
Silicone Oil-Induced Glaucomatous Neurodegeneration in Rhesus Macaques.
Dam-Infant Rhesus Macaque Pairs to Dissect Age-Dependent Responses to SARS-CoV-2 Infection.
Infant rhesus macaques immunized against SARS-CoV-2 are protected against heterologous virus challenge one year later.
Delineation of biomarkers and molecular pathways of residual effects of fluoxetine treatment in juvenile rhesus monkeys by proteomic profiling.
Neuroinflammatory transcriptional programs induced in rhesus pre-frontal cortex white matter during acute SHIV infection.
Female social structure influences, and is influenced by, male introduction and integration success among captive rhesus macaques (Macaca mulatta).
Formal Comment on "Mitigation of endemic GI-tract pathogen-mediated inflammation through development of multimodal treatment regimen and its impact on SIV acquisition in rhesus macaques"
Normal Corneal Thickness and Endothelial Cell Density in Rhesus Macaques (Macaca mulatta).
Thanks for reading! Click here to view previous newsletters.
Share to Facebook Share to Twitter Forward email
cnprc.ucdavis.edu


text:
package com.microsoft.azure.management.iothub.v2018_12_01_preview.implementation;

import com.microsoft.azure.management.iothub.v2018_12_01_preview.Name;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * User subscription quota response.
 */
public class UserSubscriptionQuotaInner {
    /**
     * IotHub type id.
     */
    @JsonProperty(value = "id")
    private String id;

    /**
     * Response type.
     */
    @JsonProperty(value = "type")
    private String type;

    /**
     * Unit of IotHub type.
     */
    @JsonProperty(value = "unit")
    private String unit;

    /**
     * Current number of IotHub type.
     */
    @JsonProperty(value = "currentValue")
    private Integer currentValue;

    /**
     * Numerical limit on IotHub type.
     */
    @JsonProperty(value = "limit")
    private Integer limit;

    /**
     * IotHub type.
     */
    @JsonProperty(value = "name")
    private Name name;

    /**
     * Get iotHub type id.
     *
     * @return the id value
     */
    public String id() {
        return this.id;
    }

    /**
     * Set iotHub type id.
     *
     * @param id the id value to set
     * @return the UserSubscriptionQuotaInner object itself.
     */
    public UserSubscriptionQuotaInner withId(String id) {
        this.id = id;
        return this;
    }

    /**
     * Get response type.
     *
     * @return the type value
     */
    public String type() {
        return this.type;
    }

    /**
     * Set response type.
     *
     * @param type the type value to set
     * @return the UserSubscriptionQuotaInner object itself.
     */
    public UserSubscriptionQuotaInner withType(String type) {
        this.type = type;
        return this;
    }

    /**
     * Get unit of IotHub type.
     *
     * @return the unit value
     */
    public String unit() {
        return this.unit;
    }

    /**
     * Set unit of IotHub type.
     *
     * @param unit the unit value to set
     * @return the UserSubscriptionQuotaInner object itself.
     */
    public UserSubscriptionQuotaInner withUnit(String unit) {
        this.unit = unit;
        return this;
    }

    /**
     * Get current number of IotHub type.
     *
     * @return the currentValue value
     */
    public Integer currentValue() {
        return this.currentValue;
    }

    /**
     * Set current number of IotHub type.
     *
     * @param currentValue the currentValue value to set
     * @return the UserSubscriptionQuotaInner object itself.
     */
    public UserSubscriptionQuotaInner withCurrentValue(Integer currentValue) {
        this.currentValue = currentValue;
        return this;
    }

    /**
     * Get numerical limit on IotHub type.
     *
     * @return the limit value
     */
    public Integer limit() {
        return this.limit;
    }

    /**
     * Set numerical limit on IotHub type.
     *
     * @param limit the limit value to set
     * @return the UserSubscriptionQuotaInner object itself.
     */
    public UserSubscriptionQuotaInner withLimit(Integer limit) {
        this.limit = limit;
        return this;
    }

    /**
     * Get iotHub type.
     *
     * @return the name value
     */
    public Name name() {
        return this.name;
    }

    /**
     * Set iotHub type.
     *
     * @param name the name value to set
     * @return the UserSubscriptionQuotaInner object itself.
     */
    public UserSubscriptionQuotaInner withName(Name name) {
        this.name = name;
        return this;
    }

}

redpajama_set_name: RedPajamaGithub


text:
El Jamaica Savings Bank fue un banco constituido en 1866 en la sección de Jamaica del distrito de Queens en la ciudad de Nueva York. Tenía cuatro sucursales en Queens antes de ser adquirida por North Fork Bank en 1999, que a su vez fue adquirida por Capital One Bank en 2008.

El edificio original del banco fue construido entre 1897 y 1898 en estilo Beaux-Arts . Es un esbelto edificio de ladrillo de cuatro pisos con una fachada de piedra caliza . Presenta una planta baja profundamente rústica con ventanas protegidas por elegantes rejas de metal. La fachada está enmarcada por pilastras de dos pisos y cubierta con elaboradas ménsulas talladas, guirnaldas y otros elementos.

Historia

Incorporación

Jamaica Savings BankFue constituido el 20 de abril de 1866 por 19 líderes empresariales locales, incluidos John Alsop King, gobernador de Nueva York; Morris Fosdick y el coronel Aaron A. Degrauw, quienes se reunieron en el Ayuntamiento de Jamaica en un esfuerzo por "poner en común sus recursos locales con el fin de proteger sus ahorros y financiar el desarrollo futuro" del área de Jamaica. El banco abrió oficialmente al público el 14 de julio de 1866, en 161-02 Jamaica Avenue  —un año después de la guerra civil— y operaba desde la oficina del secretario del condado de Queens con 15 clientes depositando un total de $2,675.00. Para complementar la comunidad en constante expansión de Jamaica, los fideicomisarios del banco contrataron al estudio de arquitectura de Hough and Deuell para construir la nueva sede del banco de estilo Beaux-Arts que se convirtió en el edificio insignia del Jamaica Savings Bank en 1898. "Este edificio transmitía el tipo de monumentalidad que a menudo se asocia con clubes sociales privados e instituciones cívicas".

Desarrollo
Con la llegada del ferrocarril y otros sistemas de transporte, Jamaica se convirtió rápidamente en el centro económico y comercial del condado de Queens a principios del siglo XX. Para satisfacer las necesidades económicas de la población en rápido crecimiento de Jamaica, el presidente del Banco de Ahorros de Jamaica, George S. Downing, consideró que era necesaria la creación de más sucursales bancarias. En diciembre de 1934, el Queensboro Savings Bank (ubicado en 90-55 Sutphin Boulevard) se fusionó con el Jamaica Savings Bank. Como resultado, el Banco de Ahorros de Queensboro se conoció en adelante como el Banco de Ahorros de Jamaica; el banco con la dirección de Jamaica Avenue se convirtió en la oficina principal de la empresa y la dirección de Sutphin Boulevard sirvió como sucursal. Todos los empleados del Banco de Ahorros de Queensboro conservaron sus puestos, pero luego se los consideró empleados del Banco de Ahorros de Jamaica.

En 1934, Jamaica Savings Bank tenía un total de 50.614 cuentas y figuraba en el puesto 57 entre las 100 cajas de ahorro más grandes de los Estados Unidos. Sus directivos en ese momento eran George S. Downing, presidente; el juez de la Corte Suprema Leander B. Faber, Robert W. Higbie y George K. Meynen, vicepresidentes; Charles R. Doughty, tesorero; G. Warren Smith, secretario y Richard W. Reeves, subsecretario.

El 27 de agosto de 1938, George S. Downing anunció que la construcción de la segunda sucursal estaba en marcha y se esperaba que estuviera terminada el 1 de febrero de 1939. Downing afirmó que "la decisión de construir el edificio se había precipitado por el rápido crecimiento del área de Jamaica" y que la " extensión de la línea de metro de la Octava Avenida a Jamaica había dado como resultado un 'crecimiento fenomenal de apartamentos' en esa sección".  La sucursal de Sutphin Boulevard del Jamaica Savings Bank se inauguró oficialmente el 22 de abril de 1939 y fue diseñada por el arquitecto Morrell Smith de 475 Fifth Avenue y el constructor/contratista general Theodore L. Rubsamen and Company of Jamaica. Este edificio art déco único presentaba llamativas características decorativas; su característica más notable es el águila americana tallada en bajorrelieve y colocada sobre la entrada. "Puertas ornamentales de bronce fundido adornan la entrada que se abre a un vestíbulo semicircular revestido con mármol negro y dorado. Mobiliario en nogal americano, lámparas de bronce... y alfombras y cortinas de diseño y tonalidades armoniosas completan el interior.

Finales del siglo XX
La moderna sucursal Jamaica Savings Bank de 1964 está en la esquina de la calle 161 en el centro de Jamaica, justo enfrente de su predecesor victoriano. Posee una fachada modernista azul acero con una pared curva de vidrio veneciano azul. La entrada cóncava continúa con los acentos y la Cámara de Comercio de Queens le otorgó un premio arquitectónico anual para edificios comerciales por innovación. El premio cita los materiales ignífugos de ladrillo esmaltado gris, la incorporación de columnas de acero inoxidable y los paneles exteriores de mosaico azul. El interior del edificio tenía un mural interior envolvente 162 pies x 11 pies que representan temas de la Jamaica histórica que incluyeron al Capitán Kidd, la tribu de nativos americanos Muscogee y el General de la Guerra Revolucionaria Nathaniel Woodhull. La cuarta sucursal se construyó durante 1966-1968 en 56th Avenue y Queens Boulevard en Elmhurst, junto al Queens Place Mall. La Comisión de Preservación de Monumentos Históricos de la Ciudad de Nueva York designó el edificio como un punto de referencia el 28 de junio de 2005 (número de designación LP-2173), pero el consejo en pleno rechazó la designación el 20 de octubre de 2005.

Legado
Duró casi un siglo hasta que fue adquirido por North Fork Bank en 1999, que a su vez fue adquirido por Capital One Bank en 2008.  La sucursal de Sutphin Boulevard del edificio Jamaica Savings Bank es una sucursal de Capital One Bank. El edificio original del Jamaica Savings Bank se incluyó en el Registro Nacional de Lugares Históricos en 1983,  y en un Monumento Histórico de la Ciudad de Nueva York en 2008.  El edificio de la segunda sucursal en Sutphin Boulevard se dedicó como un hito de la ciudad de Nueva York en 2010.  El tercer edificio ha cerrado y una empresa de zapatillas reside dentro, el mural ya no es visible. El edificio Queens Boulevard con un techo a dos aguas alargado, construido entre 1966 y 1968, alberga una sucursal de Bank of America.

Referencias

Registro Nacional de Lugares Históricos de Queens
Jamaica (Queens)
Arquitectura Beaux-Arts en Nueva York
Wikipedia:Artículos con coordenadas en Wikidata

redpajama_set_name: RedPajamaWikipedia


Designed to inspire curiosity, creativity, and invention through connected play and coding, Sphero's SPRK+ is far more than a robot. Use it along with the Lightning Lab app on your iPhone or iPad to easily learn programming, complete hands-on activities, and share your creations with the community.
Navigate a maze. Program a painting. Mimic the solar system. The only limit is your imagination. SPRK+ and Lightning Lab allow you to collaborate with users everywhere to reshape the world of education and empower anyone to program.
Sphero Edu is your hub to create, contribute, and learn with Sphero robots - it replaces and builds on SPRK Lightning Lab. Go beyond code by incorporating unique STEAM activities to complete with your bot.


The Jets have largely avoided the locker room problems that plagued the team last season, but some of them still apparently have a problem with showing up on time.
Jets linebacker Darron Lee was inactive on Sunday because he showed up late to a team practice, and defensive end Muhammad Wilkerson was benched for a quarter for showing up late for a meeting, a team source confirmed. Both are automatic punishments on head coach Todd Bowles' list of team rules.
Lee was late to the Jets' team walkthrough on Saturday, the day before the Jets' impressive 38-31 win over the Kansas City Chiefs. It is the first known incident for Lee, a 23-year-old out of Ohio State who was the Jets' first-round pick last year.
It was far from the first time for Wilkinson, though. In fact, it's the third straight year that the veteran has been benched for being late to a team meeting. He sat almost the entire first quarter, coming in only for the final play, after showing up late on Saturday.
Bowles declined to give any details about either punishment after the game, saying only that they were "coaching decisions" and that the two incidents were not related.
"We have rules," Bowles said after the game. "We make rules. We have coaching decisions. We move on."
Bowles said that he expects Lee will be active next week in Denver when the Jets face the Broncos, and he expects both Lee and Wilkerson will start.


text:
*HOW TO ATTEND AFCC*
AFCC 2021
AFCC Key Visual
AFCC Over the Years
AFCC 2021 Programmes
Country of Focus
Writers & Illustrators
Teachers & Parents
CMT Programmes
Public Programmes
Book Illustrators Gallery
Book Talks and Poem Recital
GIF and Comic Cover Challenge
Festival Bookstore
Scholastic Asian Book Award 2023
Hedwig Anuar Children's Book Award 2022
AFCC 2022 Call for Papers
Book Illustrators Gallery 2022
AFCC Concierge
SBC Books
Printed from https://afcc.com.sg/2021/page/scholastic-asian-book-award-2023 on 20 Jan 2022
Home › Submissions
Call for Submissions :
30 May 2021 - 31 October 2022
The submission deadline for the Scholastic Asian Book Award (SABA) has been extended to 31 October 2022.
The winner announcement and award ceremony for SABA will now take place during AFCC in May 2023.
Submit your manuscript for a chance to be selected as the winner for SABA 2023, which comes with a cash prize of S$10,000. The winning manuscript will also be considered for publication by Scholastic Asia.
The Scholastic Asian Book Award (SABA) is the joint initiative of Scholastic Asia and Singapore Book Council (SBC).
SABA recognises children's writers of Asian origin who are taking the experiences of life, spirit, and thinking in different parts of Asia to the world at large. The award also aims to promote the understanding of the Asian experience and its expression in innovative and creative forms.
THE OBJECTIVES OF THE SABA ARE AS FOLLOWS:
To recognise excellence in fiction in Asian stories for children.
To showcase the diversity of literary talent within Asia.
To encourage and inspire more books and stories with Asian content.
NO. OF ENTRIES
MEDIA PROMOTION
CONDITIONS OF ENTRY
Entries will be accepted from writers of Asian descent, living in Asia, who are 18 years of age and above.
For the purposes of this award, Asia comprise the following: Afghanistan, Armenia, Azerbaijan, Bahrain, Bangladesh, Brunei, Bhutan, Cambodia, China, Cyprus, Gerogia, India, Indonesia, Iran, Iraq, Israel, Japan, Jordan, Kazakhstan, Korea, Kuwait, Kyrgyzstan, Laos, Lebanon, Malaysia, Maldives, Mongolia, Myanmar, Nepal, Oman, Pakistan, Palestine, Papua New Guinea, Philippines, Qatar, Russia, Saudi Arabia, Singapore, Sri Lanka, Syria, Taiwan, Tajikistan, Timor-Leste, Thailand, Turkey, Turkmenistan, UAE, Uzbekistan, Vietnam, Yemen.
The author must not be a salaried employee of, or a family member of a salaried employee of, either the organiser, the Singapore Book Council, or the sponsor, Scholastic Corporation, or any of their subsidiaries.
Works created as assignments or coursework for an educational institution, or for academic assessment purposes will not be considered.
The manuscript must be unpublished or uncontracted to a publisher until the prize is announced.
All submissions must be in English.
Submissions may be in the form of a chapter book or novel with 6,000 words or more, or a short story collection (comprising a minimum of six (6) stories), with a total minimum of 6,000 words.
Previously published authors may also submit their unpublished manuscripts.
The story must be set in Asia.
The work must be an original piece, or the translation of an original work.
Entries should not be accompanied by illustrations.
On the top right-hand corner of the cover page, please specify the word count of the entire manuscript
The title of the entry should be in the middle of the cover page. The beginning of the manuscript should start on a new page.
Use Times New Roman font, size 12, double-spaced.
Margins should be one-inch all around.
Entries are to be submitted via the online application form.
The best entry will be awarded the Scholastic Asian Book Award, and win a prize of SGD 10,000, along with a plaque and certificate.
The winning manuscript, as well as the shortlisted manuscripts, will be considered by Scholastic Asia for publication.
In the event of the winning entry having two or more creators, the prize will be shared among the creators.
The first and second runner-ups will be offered editorial advice by Scholastic Asia for their manuscripts.
The judges reserve the right to not award the prize should the entries fail, in the judges' opinion, to meet the required standard. Judges could also decide not to award the prize to consecutive winners.
Scholastic Asia reserves the first right of refusal for publication of the award-winning manuscript, and the first and second runner-ups.
The closing date for submissions for the 2023 SABA is on 31 October 2022, 5pm (SGT).
The results will be announced at the 2023 Asian Festival of Children's Content.
Limited to only one (1) submission per applicant.
SBC will check details concerning the eligibility of the author(s) and the manuscript submitted. Only manuscripts of authors who meet the criteria will be accepted and sent to the judges.
An independent panel of three judges, who are experts in the field of children's books will select the winner from the manuscripts submitted by SBC.
The judges' decision is final, and no appeals or correspondence will be entertained at any point.
The organisers will announce a shortlist of the works considered for the Scholastic Asian Book Award.
Shortlisted applicants are strongly encouraged to attend the award ceremony at the 2023 Asian Festival of Children's Content.
The award will be presented at a prize-giving ceremony during the Asian Festival of Children's Content, to be held in May 2023.
The award details will be separately and officially announced to regional and international media and via digital channels.
The details of the award will also be disseminated to interested people and organisations.
Applicants can submit their entries via the online submission form.
Each entry must include the following:
A recent profile photo for each creator working on the manuscript (1 MB, JPG format)
A short biography of each creator, in not more than 100 words per bio. In the event that the submission is for a translated work, the bio of both the original author and translator must be submitted.
A summary of the manuscript, of not more than 100 words.
The full text manuscript (in DOC format)
Entries can be submitted by either the author or translator. In the case of a translation, the translator must indicate that the author (or his/her estate) is aware of the fact that a translation of the original work is being submitted for the award.
All entries must be submitted via the online submission form here.
If you do not receive confirmation of your submission, please contact [email protected]
Entries that fail to comply with any of the above rules and conditions of entry will be disqualified.
SABA Submission Form
© 2022 Singapore Book Council. Contact Us | Previous Festivals
Website last updated on 14 Jan 2022. The festival organisers reserve the right to change speakers, events, session times, dates, and/or other details when necessary.


text:
Topalov beats Ivanchuk, point clear as Bu loses to Svidler
Veselin Topalov defeated Vassily Ivanchuk at the Pearl Spring tournament today, and with just two more rounds to go the Bulgarian is suddenly very close to tournament victory. One point behind are Bu Xiangzhi, who lost to Peter Svidler, and Levon Aronian, who drew with Movsesian.
The 1st Pearl Spring Tournament takes place December 11- 21 in Nanjing, China. Topalov ( 2791), Ivanchuk (2786), Aronian (2757), Movsesian (2732) Svidler (2727) Bu Xiangzhi (2714) play a double round-robin. Live games start daily at 15:00 local time which is early morning for Western countries (08:00 CET, 02:00 EST).
All of a sudden Veselin Topalov is very close to another tournament victory, after he won the Bilbao Grand Slam Final earlier this year. There he beat Ivanchuk in the decisive round using 1.d4, and today he won again, this time with 1.e4.
Ivanchuk went for the solid but passive Four Knights Sicilian, and his new move gave White easy play. Black miraculously survived the attack, but only to find himself in a lost ending which was finished in great style by Topalov.
The other leader, Bu Xiangzhi, suffered his first loss after blundering in the endgame. Svidler, who probably missed a win earlier in the game, was slightly better but the position was probably a draw. However, losing a vital tempo, Bu found himself in a lost bishop ending.
Movesian easily drew Aronian thanks to a good piece of preparation in the Slav.
And so Topalov is a point clear, with two rounds to go. His Black game against Svidler tomorrow is crucial; if he doesn't lose, the tournament is virtually in the pocket.
Games of the 8th round:
[TABLE=526] [TABLE=538]
Veselin Topalov: close to tournament victory
Tournament website
http://www.64ge.net/
Gujuan Tzu's Chessnews Blog
TWIC's games in PGN


text:
Win and offers
Living North Loves Local
Win and offers (0)
The latest stories, straight to your inbox
By signing up to receive our newsletter, you accept our Privacy policy and Terms and Conditions. We will never share any of your personal data and you can unsubscribe at any time.
Be inspired every day with Living North
Subscribe today and get every issue delivered direct to your door
> Things to do
> Staying in
> TV Guide: New SAS, The Traitors US and What to Watch This Week
TV Guide: New SAS, The Traitors US and What to Watch This Week
New series, a sitcom to make you laugh out loud, and SAS is back
This is everything you'll want to watch this week.
-Monday 23rd January-
SAS: Who Dares Wins, 9pm, Channel 4
Taking inspiration from the jungle phase of SAS selection, the first episode of this year's SAS: Who Dares Wins sees the 20 candidates challenged to control their fear with an exercise carried out 50 feet above the ground, before taking on a waterfall abseil. We're rooting for Faye and Charlotte from Leeds and Jordan from Newcastle.
-Tuesday 24th January-
The Family Pile, 9.30pm, ITV1
This new sitcom will bring you the joy we all need right now. Clearing out their dad's shed, Nicole and Ursula uncover his guilty secret. Meanwhile, Gaynor and Greg are on the run from sea fowl, and Connor pays tribute to his grandad. There's only one episode to catch up on – start at 9pm and make the laughs last for an hour.
Read More: Behind the Scenes of Robson Green's New BBC Show with Local Famous Faces
-Wednesday 25th January-
Sort Your Life Out with Stacey Solomon, 9pm, BBC One
Stacey and her team help the Harris-Hawley family transform their home by getting rid of all their unnecessary clutter. The family go through their most treasured items and reflect on the tough times ahead of their wedding, which is just one week away. Stacey might inspire you to consider a clear-out too.
-Thursday 26th January-
Grayson Perry's Full English, 9pm, Channel 4
In this new series, Grayson Perry travels around England to uncover what Englishness means today. He begins in the Kent port of Dover, where he meets a man who patrols the English Channel, before meeting musicians Pearl Lowe and Danny Goffey for a nostalgic look at England's past.
Read More: 23 Things to Look Forward to in the North East This Year
-Friday 27th January-
The Snow Girl, Netflix
When a little girl goes missing during a parade in Málaga, a journalist becomes determined to help her parents find her. Coming to Netflix this Friday, we've got high expectations for this thriller based on Javier Castillo's novel.
-Saturday 28th January-
Michael McIntyre's Big Show, 8pm, BBC One
Michael McIntyre hosts an evening of entertainment at the London Palladium. This time, Jonathan Ross will be handing over his phone for Michael to send a text to all of his contacts and Chris and Rosie Ramsey take part in the Midnight Gameshow.
Read More: What We Watched Last Week
-Sunday 29th January-
Nicola Adams: Me and IVF, 8pm, ITVBe
Follow Nicola's journey from IVF to motherhood, from the very first scans right up until birth. This film captures the most intimate moments of the couple's journey and it's sure to be an emotional watch.
-Catch Up On-
The Traitors US, BBC iPlayer
If you've watched the UK version of this twisted gameshow, you'll love this US take. A mix of famous faces and everyday contestants play the ultimate murder mystery game, to build a prize fund worth up to $250,000. It's hosted by award-winning actor Alan Cumming at the same ancient Scottish castle which was used in the UK series. We managed to binge-watch this series in a day (but it did take more than 10 hours!). We're eagerly awaiting the arrival of the Australia series in the UK (come on BBC!?).
23 Things to Look Forward to in Yorkshire and Beyond in 2023
Seven Ways to Keep Busy This Weekend
What to Do to Beat The January Blues
See Beverley's Gothic Minster and Explore the Town's Foodie Outlets


It is not uncommon to hear employer of record services equated with staffing services. Although the two are mutually beneficial, an employer of record is a separate entity from a staffing agency, each with distinct functions and responsibilities.
A collaborative relationship exists between an employer of record and its client, which can be a business or a staffing agency. While an employee works for the client, the employer of record assumes the role of employer for tax purposes. The employer of record handles all administrative functions, such as payroll processing, tax withholding and filing, and recordkeeping. The employer of record also conducts pre-employment screening such as background checks and drug testing, in addition to human resources functions such as administering benefits, termination of employees and all other worker issues. On the other hand, a staffing agency recruits candidates to meet the temporary workforce needs of clients.
For the client company, the benefits of outsourcing employer of record services are numerous. By delegating its human resources and payroll functions, the client company saves both time and money. Bringing new talent aboard is no longer a struggle for businesses. Onboarding is quick and easy. Staffing agencies who partner with employers of record will acquire the backgrounds necessary to function as an employer. The employer of record gives the client peace of mind, knowing that these ongoing duties are being handled by experienced professionals.
The purpose of each entity create separate duties and liabilities. The day-to-day operations remain under the control of the client company while the behind-the-scenes duties are handled by the employer of record. The client manages workers and is responsible for maintaining workplace safety and compliance. The employer of record handles the behind-the-scenes operations and assumes liabilities for these operations, as well, including legal compliance related to payroll, taxes and employee benefits. This alleviates a company's human resources department from the headache of staying updated on constantly changing local, state and federal laws.
Although the services provided are quite different, the symbiotic relationship between an employer of record and staffing agency make this a mutually successful partnership. NexusCW is ready to bring this success to your company. Contact us today!


It's been a year and a half since my last interview with writer John Booth. Much has changed in John's life since then and we sat down once again to see what he has been up to.
You run a business in addition to being a writer? What sort of business?
I am a consultant engineer, which explains nothing. Over the years my kids have struggled to understand what I do, and now they are grown up they still have little idea. Once upon a time I used to design the mathematics that became the software that directed guns to shoot down missiles. Then I designed the whole system. Then I became design authority for the systems that told various systems how to operate together. That was a long time ago. Now I am a systems of systems integration expert with a background in risk analysis, performance analysis, systems design, capability management and a few other designs and managements. If you have a systems problem, and want to solve it, then maybe you should hire – the B Team. Except that there is only one of me.
Do you ever leverage your business principles in writing and publishing?
Oh, you want an explanation? Writing a book is not dissimilar to designing a system. There is a problem, there are capabilities, there are rules/laws that constrain the world, the characters act according to their nature and somehow they struggle to reach a fun conclusion. On the publishing front, Kindle is run by Excel and I have written much in Excel, the book ranking uses control theory principles and I've had a lot of pleasure emulating it.
You write in series. Let me know if I miss anything but there are: World of Jalon, Wizards, Magic, Hellogon, Inspector Monde and Spellbinder universes. How do you keep them all straight?
There are a few more than that, but they haven't all seen the light of day. Jalon and Wizards are good examples of what I like to do. All my books start with an idea, a concept, sometimes just a vision of something that sets the scene. Then I drop some characters into it and give them a good poke to see what they will do. I build the world as I go and these days, I build an information document to keep track. When I first wrote, I didn't do that and I kept forgetting character names and their physical characteristics. I spend more time searching the manuscript than I did writing the stories.
Jalon started as a series of poems that lasted 40,000 words. Going back and checking for consistency was taking longer than the writing, so I invented an information document that I update as I write. Because the Jalon stories mention events that traverse 3,000 years I also have an Excel timeline for that one. The later Spellbinder books have a similar problem as I try to figure out what each of the dozen main characters are up to. That's like choreography.
Wizards started as short stories, written as an interlude between novels. I had to do a lot of work to create the information file when I turned the short stories into a novel. It is a point of honor that I never change any fact once I've written it and I've had to be extremely ingenious to make some stories work out. I never write down much about the main characters as I tend to remember them. But things like, 'What street did I say they were born on?' that's a big problem.
Considering you have created a kind of John Booth Universe, do you suppose any of your characters will ever meet?
Oh yes, some of these worlds are very close and it would be easy to make them part of a bigger, fatter universe. But I think I would only do that if I ran out of ideas.
What are you reading these days and what fascinates you?
The last few years I read mainly what I write, young adult and fantasy fiction. I just read the latest and last Artemis Fowl book and I shall miss him. I read Terry Pratchett and David Weber (though Weber is pure SF). I used to read a lot of science fiction but I rarely get into it these days. I love books that challenge my expectations. I don't read as much as I should, perhaps that's because I haven't found that much that engrosses me these days.
Two sentences: one describing your physical state, one describing your mental state.
I am much less fit than I want to be, but as fit as I can be bothered to be.
I have little left to prove and there are too few mountains on the horizon.
John's books are available on Amazon.com - I am looking forward to seeing new additions to the list on a regular basis.


Microsoft Rewards is now available in 21 countries worldwide including Belgium, the Netherlands, Spain, Hong Kong, Japan and more.
schwit1 (797399) writes Louis Del Monte estimates that machine intelligence will exceed the world's combined human intelligence by 2045. ..."By the end of this century most of the human race will have become cyborgs. The allure will be immortality.
There are plenty of apps for identifying music while you're listening to it, but you might not know that the same functionality is built into Google Now as well—it's just one of the many features available inside Google's digital assistant that aren't immediately obvious to the casual user.


Updated throughout 3 bedroom rancher. Home features hardwood flooring throughout. Newer updated kitchen. New central a/c and heater less then 1 year ago . Hot water heater 1 week ago! Finished basement and 3 seasons porch. All systems new! Come take a look today.


text:
package com.siyeh.ig.migration;

import com.intellij.codeInsight.NullableNotNullManager;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.ui.DocumentAdapter;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseInspection;
import com.siyeh.ig.BaseInspectionVisitor;
import com.siyeh.ig.InspectionGadgetsFix;
import com.siyeh.ig.psiutils.ControlFlowUtils;
import com.siyeh.ig.psiutils.EquivalenceChecker;
import com.siyeh.ig.psiutils.ParenthesesUtils;
import com.siyeh.ig.psiutils.SwitchUtils;
import com.siyeh.ig.psiutils.SwitchUtils.IfStatementBranch;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.text.Document;
import java.awt.*;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

public class IfCanBeSwitchInspection extends BaseInspection {

  @SuppressWarnings({"PublicField"})
  public int minimumBranches = 3;

  @SuppressWarnings({"PublicField"})
  public boolean suggestIntSwitches = false;

  @SuppressWarnings({"PublicField"})
  public boolean suggestEnumSwitches = false;

  @Override
  public boolean isEnabledByDefault() {
    return true;
  }

  @Nls
  @NotNull
  @Override
  public String getDisplayName() {
    return InspectionGadgetsBundle.message("if.can.be.switch.display.name");
  }

  @NotNull
  @Override
  protected String buildErrorString(Object... infos) {
    return InspectionGadgetsBundle.message("if.can.be.switch.problem.descriptor");
  }

  @Override
  protected InspectionGadgetsFix buildFix(Object... infos) {
    return new IfCanBeSwitchFix(minimumBranches);
  }

  @Override
  public JComponent createOptionsPanel() {
    final JPanel panel = new JPanel(new GridBagLayout());
    final JLabel label = new JLabel(InspectionGadgetsBundle.message("if.can.be.switch.minimum.branch.option"));
    final NumberFormat formatter = NumberFormat.getIntegerInstance();
    formatter.setParseIntegerOnly(true);
    final JFormattedTextField valueField = new JFormattedTextField(formatter);
    valueField.setValue(Integer.valueOf(minimumBranches));
    valueField.setColumns(2);
    final Document document = valueField.getDocument();
    document.addDocumentListener(new DocumentAdapter() {
      @Override
      public void textChanged(DocumentEvent e) {
        try {
          valueField.commitEdit();
          minimumBranches =
            ((Number)valueField.getValue()).intValue();
        }
        catch (ParseException e1) {
          // No luck this time
        }
      }
    });
    final GridBagConstraints constraints = new GridBagConstraints();
    constraints.gridx = 0;
    constraints.gridy = 0;
    constraints.insets.bottom = 4;
    constraints.weightx = 0.0;
    constraints.anchor = GridBagConstraints.BASELINE_LEADING;
    constraints.fill = GridBagConstraints.NONE;
    constraints.insets.right = 10;
    panel.add(label, constraints);
    constraints.gridx = 1;
    constraints.gridy = 0;
    constraints.weightx = 1.0;
    constraints.insets.right = 0;
    panel.add(valueField, constraints);
    constraints.gridx = 0;
    constraints.gridy = 1;
    constraints.gridwidth = 2;
    final JCheckBox checkBox1 = new JCheckBox(InspectionGadgetsBundle.message("if.can.be.switch.int.option"), suggestIntSwitches);
    final ButtonModel model1 = checkBox1.getModel();
    model1.addChangeListener(new ChangeListener() {
      @Override
      public void stateChanged(ChangeEvent e) {
        suggestIntSwitches = model1.isSelected();
      }
    });
    panel.add(checkBox1, constraints);
    constraints.gridy = 2;
    constraints.weighty = 1.0;
    final JCheckBox checkBox2 = new JCheckBox(InspectionGadgetsBundle.message("if.can.be.switch.enum.option"), suggestEnumSwitches);
    final ButtonModel model2 = checkBox2.getModel();
    model2.addChangeListener(new ChangeListener() {
      @Override
      public void stateChanged(ChangeEvent e) {
        suggestEnumSwitches = model2.isSelected();
      }
    });
    panel.add(checkBox2, constraints);
    return panel;
  }

  private static class IfCanBeSwitchFix extends InspectionGadgetsFix {
    private final int myMinimumBranches;

    public IfCanBeSwitchFix(int minimumBranches) {
      myMinimumBranches = minimumBranches;
    }

    @Override
    @NotNull
    public String getName() {
      return InspectionGadgetsBundle.message("if.can.be.switch.quickfix");
    }

    @Override
    protected void doFix(Project project, ProblemDescriptor descriptor) {
      final PsiElement element = descriptor.getPsiElement().getParent();
      if (!(element instanceof PsiIfStatement)) {
        return;
      }
      PsiIfStatement ifStatement = (PsiIfStatement)element;
      boolean breaksNeedRelabeled = false;
      PsiStatement breakTarget = null;
      String labelString = "";
      if (ControlFlowUtils.statementContainsNakedBreak(ifStatement)) {
        breakTarget = PsiTreeUtil.getParentOfType(ifStatement, PsiLoopStatement.class, PsiSwitchStatement.class);
        if (breakTarget != null) {
          final PsiElement parent = breakTarget.getParent();
          if (parent instanceof PsiLabeledStatement) {
            final PsiLabeledStatement labeledStatement = (PsiLabeledStatement)parent;
            labelString = labeledStatement.getLabelIdentifier().getText();
            breakTarget = labeledStatement;
            breaksNeedRelabeled = true;
          }
          else {
            labelString = SwitchUtils.findUniqueLabelName(ifStatement, "label");
            breaksNeedRelabeled = true;
          }
        }
      }
      final PsiIfStatement statementToReplace = ifStatement;
      final PsiExpression switchExpression = SwitchUtils.getSwitchExpression(ifStatement, myMinimumBranches);
      if (switchExpression == null) {
        return;
      }
      final List<IfStatementBranch> branches = new ArrayList<IfStatementBranch>(20);
      while (true) {
        final PsiExpression condition = ifStatement.getCondition();
        final PsiStatement thenBranch = ifStatement.getThenBranch();
        final IfStatementBranch ifBranch = new IfStatementBranch(thenBranch, false);
        extractCaseExpressions(condition, switchExpression, ifBranch);
        if (!branches.isEmpty()) {
          extractIfComments(ifStatement, ifBranch);
        }
        extractStatementComments(thenBranch, ifBranch);
        branches.add(ifBranch);
        final PsiStatement elseBranch = ifStatement.getElseBranch();
        if (elseBranch instanceof PsiIfStatement) {
          ifStatement = (PsiIfStatement)elseBranch;
        }
        else if (elseBranch == null) {
          break;
        }
        else {
          final IfStatementBranch elseIfBranch = new IfStatementBranch(elseBranch, true);
          final PsiKeyword elseKeyword = ifStatement.getElseElement();
          extractIfComments(elseKeyword, elseIfBranch);
          extractStatementComments(elseBranch, elseIfBranch);
          branches.add(elseIfBranch);
          break;
        }
      }

      @NonNls final StringBuilder switchStatementText = new StringBuilder();
      switchStatementText.append("switch(").append(switchExpression.getText()).append("){");
      final PsiType type = switchExpression.getType();
      final boolean castToInt = type != null && type.equalsToText(CommonClassNames.JAVA_LANG_INTEGER);
      for (IfStatementBranch branch : branches) {
        boolean hasConflicts = false;
        for (IfStatementBranch testBranch : branches) {
          if (branch == testBranch) {
            continue;
          }
          if (branch.topLevelDeclarationsConflictWith(testBranch)) {
            hasConflicts = true;
          }
        }
        dumpBranch(branch, castToInt, hasConflicts, breaksNeedRelabeled, labelString, switchStatementText);
      }
      switchStatementText.append('}');
      final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(element.getProject());
      final PsiElementFactory factory = psiFacade.getElementFactory();
      if (breaksNeedRelabeled) {
        final StringBuilder out = new StringBuilder();
        if (!(breakTarget instanceof PsiLabeledStatement)) {
          out.append(labelString).append(':');
        }
        termReplace(breakTarget, statementToReplace, switchStatementText, out);
        final String newStatementText = out.toString();
        final PsiStatement newStatement = factory.createStatementFromText(newStatementText, element);
        breakTarget.replace(newStatement);
      }
      else {
        final PsiStatement newStatement = factory.createStatementFromText(switchStatementText.toString(), element);
        statementToReplace.replace(newStatement);
      }
    }

    @Nullable
    public static <T extends PsiElement> T getPrevSiblingOfType(@Nullable PsiElement element, @NotNull Class<T> aClass,
                                                                @NotNull Class<? extends PsiElement>... stopAt) {
      if (element == null) {
        return null;
      }
      PsiElement sibling = element.getPrevSibling();
      while (sibling != null && !aClass.isInstance(sibling)) {
        for (Class<? extends PsiElement> stopClass : stopAt) {
          if (stopClass.isInstance(sibling)) {
            return null;
          }
        }
        sibling = sibling.getPrevSibling();
      }
      return (T)sibling;
    }

    private static void extractIfComments(PsiElement element, IfStatementBranch out) {
      PsiComment comment = getPrevSiblingOfType(element, PsiComment.class, PsiStatement.class);
      while (comment != null) {
        final PsiElement sibling = comment.getPrevSibling();
        final String commentText;
        if (sibling instanceof PsiWhiteSpace) {
          final String whiteSpaceText = sibling.getText();
          if (whiteSpaceText.startsWith("\n")) {
            commentText = whiteSpaceText.substring(1) + comment.getText();
          }
          else {
            commentText = comment.getText();
          }
        }
        else {
          commentText = comment.getText();
        }
        out.addComment(commentText);
        comment = getPrevSiblingOfType(comment, PsiComment.class, PsiStatement.class);
      }
    }

    private static void extractStatementComments(PsiElement element, IfStatementBranch out) {
      PsiComment comment = getPrevSiblingOfType(element, PsiComment.class, PsiStatement.class, PsiKeyword.class);
      while (comment != null) {
        final PsiElement sibling = comment.getPrevSibling();
        final String commentText;
        if (sibling instanceof PsiWhiteSpace) {
          final String whiteSpaceText = sibling.getText();
          if (whiteSpaceText.startsWith("\n")) {
            commentText = whiteSpaceText.substring(1) + comment.getText();
          }
          else {
            commentText = comment.getText();
          }
        }
        else {
          commentText = comment.getText();
        }
        out.addStatementComment(commentText);
        comment = getPrevSiblingOfType(comment, PsiComment.class, PsiStatement.class, PsiKeyword.class);
      }
    }

    private static void termReplace(PsiElement target, PsiElement replace, StringBuilder stringToReplaceWith, StringBuilder out) {
      if (target.equals(replace)) {
        out.append(stringToReplaceWith);
      }
      else if (target.getChildren().length == 0) {
        out.append(target.getText());
      }
      else {
        final PsiElement[] children = target.getChildren();
        for (final PsiElement child : children) {
          termReplace(child, replace, stringToReplaceWith, out);
        }
      }
    }

    private static void extractCaseExpressions(PsiExpression expression, PsiExpression switchExpression, IfStatementBranch branch) {
      if (expression instanceof PsiMethodCallExpression) {
        final PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)expression;
        final PsiExpressionList argumentList = methodCallExpression.getArgumentList();
        final PsiExpression[] arguments = argumentList.getExpressions();
        final PsiExpression argument = arguments[0];
        final PsiReferenceExpression methodExpression = methodCallExpression.getMethodExpression();
        final PsiExpression qualifierExpression = methodExpression.getQualifierExpression();
        if (EquivalenceChecker.expressionsAreEquivalent(switchExpression, argument)) {
          branch.addCaseExpression(qualifierExpression);
        }
        else {
          branch.addCaseExpression(argument);
        }
      }
      else if (expression instanceof PsiPolyadicExpression) {
        final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)expression;
        final PsiExpression[] operands = polyadicExpression.getOperands();
        final IElementType tokenType = polyadicExpression.getOperationTokenType();
        if (JavaTokenType.OROR.equals(tokenType)) {
          for (PsiExpression operand : operands) {
            extractCaseExpressions(operand, switchExpression, branch);
          }
        }
        else if (operands.length == 2) {
          final PsiExpression lhs = operands[0];
          final PsiExpression rhs = operands[1];
          if (EquivalenceChecker.expressionsAreEquivalent(switchExpression, rhs)) {
            branch.addCaseExpression(lhs);
          }
          else {
            branch.addCaseExpression(rhs);
          }
        }
      }
      else if (expression instanceof PsiParenthesizedExpression) {
        final PsiParenthesizedExpression parenthesizedExpression = (PsiParenthesizedExpression)expression;
        final PsiExpression contents = parenthesizedExpression.getExpression();
        extractCaseExpressions(contents, switchExpression, branch);
      }
    }

    private static void dumpBranch(IfStatementBranch branch, boolean castToInt, boolean wrap, boolean renameBreaks, String breakLabelName,
                                   @NonNls StringBuilder switchStatementText) {
      dumpComments(branch.getComments(), switchStatementText);
      if (branch.isElse()) {
        switchStatementText.append("default: ");
      }
      else {
        for (PsiExpression caseExpression : branch.getCaseExpressions()) {
          switchStatementText.append("case ").append(getCaseLabelText(caseExpression, castToInt)).append(": ");
        }
      }
      dumpComments(branch.getStatementComments(), switchStatementText);
      dumpBody(branch.getStatement(), wrap, renameBreaks, breakLabelName, switchStatementText);
    }

    @NonNls
    private static String getCaseLabelText(PsiExpression expression, boolean castToInt) {
      if (expression instanceof PsiReferenceExpression) {
        final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)expression;
        final PsiElement target = referenceExpression.resolve();
        if (target instanceof PsiEnumConstant) {
          final PsiEnumConstant enumConstant = (PsiEnumConstant)target;
          return enumConstant.getName();
        }
      }
      if (castToInt) {
        final PsiType type = expression.getType();
        if (!PsiType.INT.equals(type)) {
          /*
         because
         Integer a = 1;
         switch (a) {
             case (byte)7:
         }
         does not compile with javac (but does with Eclipse)
          */
          return "(int)" + expression.getText();
        }
      }
      return expression.getText();
    }

    private static void dumpComments(List<String> comments, StringBuilder switchStatementText) {
      if (comments.isEmpty()) {
        return;
      }
      switchStatementText.append('\n');
      for (String comment : comments) {
        switchStatementText.append(comment).append('\n');
      }
    }

    private static void dumpBody(PsiStatement bodyStatement, boolean wrap, boolean renameBreaks, String breakLabelName,
                                 @NonNls StringBuilder switchStatementText) {
      if (wrap) {
        switchStatementText.append('{');
      }
      if (bodyStatement instanceof PsiBlockStatement) {
        final PsiCodeBlock codeBlock = ((PsiBlockStatement)bodyStatement).getCodeBlock();
        final PsiElement[] children = codeBlock.getChildren();
        //skip the first and last members, to unwrap the block
        for (int i = 1; i < children.length - 1; i++) {
          final PsiElement child = children[i];
          appendElement(child, renameBreaks, breakLabelName, switchStatementText);
        }
      }
      else {
        appendElement(bodyStatement, renameBreaks, breakLabelName, switchStatementText);
      }
      if (ControlFlowUtils.statementMayCompleteNormally(bodyStatement)) {
        switchStatementText.append("break;");
      }
      if (wrap) {
        switchStatementText.append('}');
      }
    }

    private static void appendElement(PsiElement element, boolean renameBreakElements, String breakLabelString,
                                      @NonNls StringBuilder switchStatementText) {
      final String text = element.getText();
      if (!renameBreakElements) {
        switchStatementText.append(text);
      }
      else if (element instanceof PsiBreakStatement) {
        final PsiBreakStatement breakStatement = (PsiBreakStatement)element;
        final PsiIdentifier identifier = breakStatement.getLabelIdentifier();
        if (identifier == null) {
          switchStatementText.append("break ").append(breakLabelString).append(';');
        }
        else {
          switchStatementText.append(text);
        }
      }
      else if (element instanceof PsiBlockStatement || element instanceof PsiCodeBlock || element instanceof PsiIfStatement) {
        final PsiElement[] children = element.getChildren();
        for (final PsiElement child : children) {
          appendElement(child, renameBreakElements, breakLabelString, switchStatementText);
        }
      }
      else {
        switchStatementText.append(text);
      }
      final PsiElement lastChild = element.getLastChild();
      if (isEndOfLineComment(lastChild)) {
        switchStatementText.append('\n');
      }
    }

    private static boolean isEndOfLineComment(PsiElement element) {
      if (!(element instanceof PsiComment)) {
        return false;
      }
      final PsiComment comment = (PsiComment)element;
      final IElementType tokenType = comment.getTokenType();
      return JavaTokenType.END_OF_LINE_COMMENT.equals(tokenType);
    }
  }

  @Override
  public BaseInspectionVisitor buildVisitor() {
    return new IfCanBeSwitchVisitor();
  }

  private class IfCanBeSwitchVisitor extends BaseInspectionVisitor {

    @Override
    public void visitIfStatement(PsiIfStatement statement) {
      super.visitIfStatement(statement);
      final PsiElement parent = statement.getParent();
      if (parent instanceof PsiIfStatement) {
        return;
      }
      final PsiExpression switchExpression = SwitchUtils.getSwitchExpression(statement, minimumBranches);
      if (switchExpression == null) {
        return;
      }
      final PsiExpression unwrappedExpression = ParenthesesUtils.stripParentheses(switchExpression);
      if (unwrappedExpression instanceof PsiReferenceExpression) {
        final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)unwrappedExpression;
        final PsiElement target = referenceExpression.resolve();
        if (target instanceof PsiModifierListOwner && NullableNotNullManager.isNullable((PsiModifierListOwner)target)) {
          return;
        }
      }
      final PsiType type = switchExpression.getType();
      if (!suggestIntSwitches) {
        if (type instanceof PsiClassType) {
          if (type.equalsToText(CommonClassNames.JAVA_LANG_INTEGER) ||
              type.equalsToText(CommonClassNames.JAVA_LANG_SHORT) ||
              type.equalsToText(CommonClassNames.JAVA_LANG_BYTE) ||
              type.equalsToText(CommonClassNames.JAVA_LANG_CHARACTER)) {
            return;
          }
        }
        else if (PsiType.INT.equals(type) || PsiType.SHORT.equals(type) || PsiType.BYTE.equals(type) || PsiType.CHAR.equals(type)) {
          return;
        }
      }
      if (!suggestEnumSwitches && type instanceof PsiClassType) {
        final PsiClassType classType = (PsiClassType)type;
        final PsiClass aClass = classType.resolve();
        if (aClass == null || aClass.isEnum()) {
          return;
        }
      }
      registerStatementError(statement, switchExpression);
    }
  }
}


We will be happy to provide any necessary vaccinations upon your arrival at the Bed 'n Biscuit. We strive to provide the Best Care possible for our patients so we do not just "give shots." We also offer customized vaccine protocol based on the patients individual needs. A wellness exam is included along with the needed vaccinations. Our Animal Healthcare Team is here to provide any needed medical services while your pet is with us; anything from a dental cleaning to treatment of chronic ear issues.
Grooms are by appointment only!


XXXTentacion reportedly drafted which he signed at the end of 2017, barely seven months before he got shot in Florida outside a motorcycle dealership.
The Blast obtained court records that show the rapper's mother filed the probate case for his estate earlier this week on June 25, and the filing includes an 11-page will that was executed on November 17, 2017. She has also requested to be the administrator of his estate.
It is unclear at this month what the will says, however a section is said to be devoted to beneficiaries of his estate. The Blast adds that when the rapper died, he left behind a pregnant girlfriend, but no one knows at this point if the unborn child is named in the will.
This news comes hours after thousands of his fans and family and friends gathered at the BB&T Center in Sunrise, Florida, for a final open-casket public memorial for the artist. Plus, the official video of his hit song, SAD!, which peaked at number 1 on the Billboard Hot 100 Chart, was released yesterday and it gathered over 23 million views in less than 13 hours.


Basic Event : your information tool for your event !
The editorial with the logo, the date, the description, the interactive floor plan to reach the event and the organiser's contact details.
The speakers and the exhibitors : each one has a profile page and participants can see all of them in a directory.
On their smartphone, your participants have an access to all of these information.
Public that is to say that it will be accessible to everyone with the « code » (name of the event reachable on the event app) of your event.
Private (if registration is activated) : your participants will have an access to your event with the « code » that you'd have chosen. Then, they'll have to add their e-mail adress and their password they chose for the registration. Only registered people will have an access to your event.


Here are your September Challenges!
Try to do these every day this month! You'll see and feel some amazing changes! Whether you are a current client, a Savage Wellness Center member, a past client or even a friend of a friend, these challenges are for you! Every month I'll give you a set of challenges to help you create healthier habits! Keep track and post your progress on social media - or really just post you doing anything healthy and awesome - hashtag #besavagewell #swellaugustchallenge and tag me (@savagewellness on Instagram or Savage Wellness or Shannon Shearn on Facebook) and be entered into our monthly raffle for some awesome prizes!
Pick your poison! Ok, so no poison here and always remember: There are no bad foods! BUT, this month let's identify one unhealthy nutrition habit and try to tackle it! Maybe you feel like you overdo it with the sugar after dinner. Or you could ease up on your evening cocktails just a smidge? Maybe it's that you skip meals or snacks and end up chowing down on your next meal and going a bit overboard. Maybe you have a few habits you'd like to address! This month I want you to choose ONE. Focus on getting enough consistent nutrition throughout the day so you don't binge at night. Or dial in your sugar intake by allowing yourself one treat once a day. Or maybe when you get stressed you turn to food for comfort or a reward - if that's the case, take this month to find a non food related reward or treat... Let us know what you're working on and post on your page for accountability, or ask for help by emailing me or posting in my private S.Well Moms group for ideas!
10 Alternating Lunges, 20 counter push ups and 30 squats a day. GO! Find a time each day to get in a strength set - something that works for you and you can create a routine around! If you don't like the circuit above, create your own with your own favorite exercises. You will be surprised at how strong you feel even if that is all you do for a month! I have one client who does a little circuit each time she gets up from her desk to go to the bathroom and another who does a little strength workout during the 2 minutes her kiddos brush their teeth. Find a time of day you can make a rule to get it in and see how you feel in a month! Post videos of you getting in your daily circuit and tag me PLEASE! I love this one!
Help! We all need it and it's really hard to ask for it. This month I want you to help someone once a day. Branch out and help a stranger or celebrate your daily efforts helping your friends and family (yes, this is an amazing thing you do. It's not your duty, you are a good person for doing all you do). Every time you help someone, you make the world a better place. Even if it's your own kid. There are plenty of people out there who don't even do that. So get out there and smile for someone who looks like they could use one, or give a hand crossing the street or carrying groceries. Sometimes we don't want to offend people by assuming they need help. Sometimes someone isn't ready to accept they need help. But it is never rude to offer it even if they don't take it. So let that mama at the grocery store who's kid is melting down know what a great job she is doing. That's a huge help (I've been there!). If you have kids, you are constantly helping someone or a few someones! So make note of it and celebrate it!


text:
Jamie Logan
Jamie is one of the two founding members of DETER. Having co-founded the band alongside Jonathan in college, they both contribute heavily to the songwriting process of the band.
Jamie is always writing new lyrics for upcoming releases and is always striving to give the best performance he can with the band.
His musical influences include PVRIS, Casey, Acres, Movements, Paramore, The Story So Far, Rarity and Jaws
Jonathan Follan
Jonathan "Jonny" Follan is one of the main musical driving forces behind DETER shaping the bands sound sonically with his post hardcore riffs and chord progressions, as he shares songwriting duties with vocalist Jamie (whom he co-founded DETER with).
Jonny also dabbles in shitposting and is an active contributor to DJETER.
His musical influences are Casey, Vein, Deftones, Counterparts, My Bloody Valentine
Shaun Ritchie
Shaun Ritchie joined DETER in 2019, shortly after the band released their debut album 'Wither & Fade'. Classically trained on guitar, he adds additional textures and leads to the band's sound blending both ambience and emotional intensity in his lead lines.
His musical influences include Dance Gavin Dance, Animals As Leaders, Beartooth and Metallica
Dylan McVey
Dylan is the latest addition to DETER having joined in March 2020. He will have been in the band for a year before he gets finally his chance to share the stage with his fellow band mates. He has spent his time contributing to the bands fan group by making various shitposts for the band's online fan community 'DJETER'.
Statistically speaking, he is also the tiny man in the band.
His musical influences include Avenged Sevenfold, Trivium, System of a Down, Alice in Chains, Linkin Park, Slipknot, Nirvana, Bullet For My Valentine and Killswitch Engage
About: Band Members
DETER are a 4-piece Melodic Post-Hardcore band from Glasgow, Scotland. Consisting of Frontman Jamie Logan, Guitarists Jonathan Follan and Sean Ritchie and Bassist Dylan McVey, DETER create melancholic atmosphere reminiscent of the likes of Casey, Acres and Movements. Following on from stand-alone single 'Iniquity' produced by Kieran Smith of To Kill Achilles DETER cemented their line-up with follow up single Underneath.
About: Bio


Delray Villas is a community of single family with one attached garage and one story attached villas with a one car garage. Located on Lake Ida and El Clair Ranch Road. Prices are in the low $100,000s to high $100,000s.
Amenities are an active clubhouse with live shows, pool, fitness center, card rooms and clubs of all kinds.


There are plenty of business growth areas, and one of the most vibrant has to be business intelligence, also known as BI. In just 2016 alone, BI is expected to grow by over 5 percent.
If you're paying attention to the growth of technology shouldn't be surprised by the concurrent growth of BI. The more data we generate, the more need we have to manage that information—and to do that, you need software.
But how do you pick that software? First, you have to analyze the available platforms. Then you must establish your goals and figure out how that new data can integrate with your current business systems. To do the latter, you must figure out who will use the BI information internally—and then you have to train them.
Like most things related to data, BI software will continue to change—stand-alone functions, affordability for example. To learn more about the present and the future state of BI, use this graphic.


text:
Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route
Dhananjay, Satyendra Singh, J. Nagaraju, S. B. Krupanidhi
Sol-gel route was employed to grow polycrystalline thin films of Li-doped ZnO thin films (Zn1-xLixO, x=0.15). Polycrystalline films were obtained at a growth temperature of 400-500 °C. Ferroelectricity in Zn0.85Li0.15O was verified by examining the temperature variation of the real and imaginary parts of dielectric constant, and from the C-V measurements. The phase transition temperature was found to be 330 K. The room-temperature dielectric constant and dissipation factor were 15.5 and 0.09 respectively, at a frequency of 100 kHz. The films exhibited well-defined hysteresis loop, and the values of spontaneous polarization (Ps) and coercive field were 0.15μC/cm2 and 20 kV/cm, respectively, confirming the presence of ferroelectricity.
Oxide films
Sol-gels
Hysteresis loops
Superconducting transition temperature
Dhananjay, Singh, S., Nagaraju, J., & Krupanidhi, S. B. (2007). Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route. Applied Physics A: Materials Science and Processing, 88(2), 421-424. https://doi.org/10.1007/s00339-007-4002-0
Dhananjay ; Singh, Satyendra ; Nagaraju, J. ; Krupanidhi, S. B. / Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route. In: Applied Physics A: Materials Science and Processing. 2007 ; Vol. 88, No. 2. pp. 421-424.
@article{b1c39bb6e1544aedb439afff252cd670,
title = "Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route",
abstract = "Sol-gel route was employed to grow polycrystalline thin films of Li-doped ZnO thin films (Zn1-xLixO, x=0.15). Polycrystalline films were obtained at a growth temperature of 400-500 °C. Ferroelectricity in Zn0.85Li0.15O was verified by examining the temperature variation of the real and imaginary parts of dielectric constant, and from the C-V measurements. The phase transition temperature was found to be 330 K. The room-temperature dielectric constant and dissipation factor were 15.5 and 0.09 respectively, at a frequency of 100 kHz. The films exhibited well-defined hysteresis loop, and the values of spontaneous polarization (Ps) and coercive field were 0.15μC/cm2 and 20 kV/cm, respectively, confirming the presence of ferroelectricity.",
author = "Dhananjay and Satyendra Singh and J. Nagaraju and Krupanidhi, {S. B.}",
journal = "Applied Physics",
publisher = "Springer Heidelberg",
Dhananjay, Singh, S, Nagaraju, J & Krupanidhi, SB 2007, 'Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route', Applied Physics A: Materials Science and Processing, vol. 88, no. 2, pp. 421-424. https://doi.org/10.1007/s00339-007-4002-0
Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route. / Dhananjay; Singh, Satyendra; Nagaraju, J.; Krupanidhi, S. B.
In: Applied Physics A: Materials Science and Processing, Vol. 88, No. 2, 01.08.2007, p. 421-424.
T1 - Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route
AU - Dhananjay, null
AU - Singh, Satyendra
AU - Nagaraju, J.
AU - Krupanidhi, S. B.
N2 - Sol-gel route was employed to grow polycrystalline thin films of Li-doped ZnO thin films (Zn1-xLixO, x=0.15). Polycrystalline films were obtained at a growth temperature of 400-500 °C. Ferroelectricity in Zn0.85Li0.15O was verified by examining the temperature variation of the real and imaginary parts of dielectric constant, and from the C-V measurements. The phase transition temperature was found to be 330 K. The room-temperature dielectric constant and dissipation factor were 15.5 and 0.09 respectively, at a frequency of 100 kHz. The films exhibited well-defined hysteresis loop, and the values of spontaneous polarization (Ps) and coercive field were 0.15μC/cm2 and 20 kV/cm, respectively, confirming the presence of ferroelectricity.
AB - Sol-gel route was employed to grow polycrystalline thin films of Li-doped ZnO thin films (Zn1-xLixO, x=0.15). Polycrystalline films were obtained at a growth temperature of 400-500 °C. Ferroelectricity in Zn0.85Li0.15O was verified by examining the temperature variation of the real and imaginary parts of dielectric constant, and from the C-V measurements. The phase transition temperature was found to be 330 K. The room-temperature dielectric constant and dissipation factor were 15.5 and 0.09 respectively, at a frequency of 100 kHz. The films exhibited well-defined hysteresis loop, and the values of spontaneous polarization (Ps) and coercive field were 0.15μC/cm2 and 20 kV/cm, respectively, confirming the presence of ferroelectricity.
JO - Applied Physics
JF - Applied Physics
Dhananjay, Singh S, Nagaraju J, Krupanidhi SB. Dielectric anomaly in Li-doped zinc oxide thin films grown by sol-gel route. Applied Physics A: Materials Science and Processing. 2007 Aug 1;88(2):421-424. https://doi.org/10.1007/s00339-007-4002-0