This entry was posted in Batteries, Teardowns, Uncategorized and tagged 0x36720414, 0xffffffff, battery fuel gauge, battery gas gauge, bq 7541, bq27541, bq27541 iphone, bq7541, disassemble, disassembly, full access, iphone, iphone 4, iphone 4 battery pinout, iphone 4s, iphone 4s battery pinout, iphone battery, iphone battery pinout, iphone battery teardown, teardown, unseal, unseal key by ginbot86. Bookmark the permalink.
hello, what do you think about put 2 batteries in parallel into an iphone 4s? do you think that the bq27541 it has to be reprogramed? i mean to allow more (the double) current charging capability?
If you mean putting two iPhone 4 cells in parallel with one fuel gauge, you will certainly need to have a means of reprogramming the bq27541 to recognize the capacity of the new battery. Although it can increase your battery capacity, the fuel gauge would likely prevent you from seeing the sort of performance gains that you are expecting from doubling up on battery capacity. Also, it probably won't allow you to halve charging time or double the charging current; if anything, it would just double the amount of time that your phone would need to fully charge.
Hello, I have a question regarding this board inside the the 4S battery, When a mesure the voltage directly on the battery contacts i find 4.3v but nothing 0v between -Grey and +Red ! Idis you think is a dead fuse cause ? I see on the top a CMS look like a resistor and on the back side much more components but I don't know what is the protection ones ! Please can you tell me some indication ???
Hello, great work. I was trying to use laptop battery cell with the protection circuit of the iPhone 4s cause its battery is almost dead (it wasn't original), but the phone didn't work. What happens if I disconnect the battery from the circuit? and is it possible to use a good battery with the protection circuit? Do I have to reprogram it? thanks in advance.
If you disconnect the battery, you might need to re-activate the protection circuitry. Briefly short the Pack- and Cell- terminals together, and it should reset the protection circuit. You can use another cell, but it will not operate properly without being reprogrammed with TI's software. I have thought of making my own tool so that a $50-200 tool wouldn't need to be used, but the complexities of TI's Impedance Track algorithm would prevent me from doing that easily.
I would like to share my experience with everyone which might help.
I did replace iPhone 4s battery with a laptop battery and thanks to your advice, it worked. By the way we would love to see your work in video, If you have a YouTube channel or something like that please share it with us.
The Pack and Cell terminals refer to the contacts on the battery's circuit board. The Cell terminals are directly connected to the Li-ion cell itself (and are located directly on the PCB itself), and the Pack terminals are on the connector that plugs into the phone's motherboard.
Measure the voltage across the Pack+/- pins. If you don't see the battery voltage on them, briefly short the Pack- and Cell- terminals with a small piece of wire. It is possible that the protection circuit was activated, but didn't automatically reset itself. I find that the TP40xx charger ICs might not always be able to "wake" a Li-ion protection circuit. The protection that the TP4058 offers is only for the charger, not the battery itself. Although you can charge (not discharge) the cell directly and bypass the protection, it puts you at risk of a fire should something go wrong. Also, if the protection circuit refuses to function even if the cell itself is fully charged, then the battery pack is unsafe to use until the protection circuit (or the whole battery pack) is replaced.
Hello Jason, Congratulations for your job on iPhone 4/4S battery. I would like to know if the APN is really stored in the flash memory of the BQ27541. Normally it should be but I do not know where.
I've been doing some quick tests on my collection of iPhone batteries, and none of them store the APN in the Data Flash (I presume you mean the ones like 616-0512 for the iPhone 4 battery?). They do contain serial numbers, however.
When you change the original battery of an iPhone 4S with a battery that has an APN older than the one of the original battery (for example you change a 4S battery with APN : 616-0582 by a new battery with APN : 616-0579) you will have an error #29 when you will boot the iPhone and it will be impossible to restore the iPhone on iTunes. Only solution to restore will be to come back to original battery.
So clearly IOs operating system is checking the version of the battery. For me it was the APN but maybe this is a serial number… I have made some reading of the Bq27541 using an evaluation board EV2300 from TI and I cannot see where the APN or Serial number is stored. Do you have an idea where it could be stored ?
The serial numbers are stored in the System Data section of the Data Flash. Under Manufacturer Info, Block A is some sort of 7-byte serial number (like 4D E0 FD 3F 10 42 48), and Block B is the ASCII serial number that iOS uses (like ST135113240UFT1420), as far as I know. The iPhone 5 has another sort of part number(?) in Block C (like 069782306). The iPhone 6 and newer has a different serial numbering system, as they include some sort of "system pairing" feature that I am not very familiar with at the moment.
Do you have any idea to make the relation ship between Serial number and APN ?
On an original iPhone 4S battery serial number is in hexadecimal : 89 81 2D 3F 8F 42 48. APN number is 616-0581. Device name is bq27541.
On a "probably non-original" iPhone 4S Battery, I did not succeed to read the serial number…. I read the device name and it is SH36600. I guess my problem to read the serial number comes from the fact that the chip is not a BQ/TI chip but an equivalent. The footprint/casing of the IC is the same as a BQ/TI 27541. Any idea of what manufacturer is behind this reference SH36600 ?
As far as I know, the APN is fixed, and only differs between cell manufacturers. As for the battery you mentioned, you said you have the EV2300 on hand. Do you have any screenshots of the TI software that shows the data you're reading from the battery?
Do you have an email address to send you my screen shot ? I have more than 10 to send you.. by email it will be more convenient.. possible ?
I can be reached at ginbot86@gmail.com. We can continue our discussion by email after that.
Any ideas what the error code -4 means? I assume the iPhone was unable to update to the firmware of the gas guage?
Unfortunately, I do not know the answer to that. My focus has been the batteries themselves as I do not own an iOS device myself. I'd be surprised if the phone updated the gas gauge's firmware as it would take over 10 minutes to do over the HDQ interface.
Pingback: Charging, Batteries, HDQ/SWI - iPhones/iPads How does it work?
Man you're a life saver! nice tutorial — The restarting of protection board works! Now the only problem is how to wire the damn connector lol (iphone 5 batt doesn't have expose terminals).
I've yet to discern how to recover the connections for iPhone 5 and later batteries since the flexible cable is built into the same circuit board as the protection/gauge. It's really annoying!


text:
Hertfordshire and Bedfordshire police agree further merger
THE police forces covering Hertfordshire and Bedfordshire have agreed to merge three more units. The dog sections, professional standards departments and scientific services will be combined and cover both counties from April. The move will save more than
THE police forces covering Hertfordshire and Bedfordshire have agreed to merge three more units.
The dog sections, professional standards departments and scientific services will be combined and cover both counties from April.
The move will save more than �1m a year, which will be re-invested into frontline policing.
Herts and Beds already share a major crime unit, which was launched in autumn 2007.
A proposal to set up a joint firearms support unit has also been given the go-ahead by the two police authorities. That could be set up in July.

redpajama_set_name: RedPajamaCommonCrawl


Please find us on our facebook page, on the Just Eat App and our website for more information and to view our menu.
Bruree Hut is located in Bruree, Co. Limerick. This wonderful Indian takeaway serves a wide range of classic and modern Indian dishes.
We recommend you sample the delicious Lamb Karahi, which includes cooking in cream and coconuts and mixed fruits.
Order directly via Just-Eat and check out the reviews to see who's the tastiest!


We thinks what clients think, the urgency of urgency to act within the interests of a consumer position of theory, allowing for superior high quality, decreased processing costs, costs are additional reasonable, won the new and old customers the support and affirmation for T30 Torx Bolt , t30 torx bolt , t40 torx bolt , We have constructed a reputable name among many purchasers. Quality&customer initially are normally our constant pursuit. We spare no endeavours to help make better items. Sit up for long-term cooperation and mutual advantages!
"We stick to the principle of ""quality first, service first, continuous improvement and innovation to meet the customers"" for the management and ""zero defect, zero complaints"" as the quality objective. To perfect our service, we provide the products with the good quality at the reasonable price for T30 Torx Bolt , t30 torx bolt , t40 torx bolt , We have customers from more than 20 countries and our reputation has been recognized by our esteemed customers. Never-ending improvement and striving for 0% deficiency are our two main quality policies. Should you need anything don't hesitate to contact us.


text:
Ten Years of Must Reads
Our editors' picks from the past decade: Noam Chomsky, Arundhati Roy, Robin Kelley, and more. Plus, find out which was voted as our readers' favorite.
A lot can change in ten years. A decade ago, Boston Review had just transitioned from being a broadsheet to a glossy, and next month we will be celebrating the thirteenth issue in our new book format. We've also eliminated all ads, added a brand new Arts in Society section, revamped our website, and converted to being a membership organization.
We still have the same commitment to free and open access, intellectual rigor, and engaged debate—via our trademark forums. So as we head into our forty-fifth year, we want to celebrate with a look back at some of our favorites of the past decade. From Noam Chomsky on the responsibility of intellectuals after 9/11, to our forum on why empathy can be a bad thing, the following were all ambitious efforts and help chart a decade of thinking. Today they represent key entries in the Boston Review canon.
We also asked our members to vote for their favorite essay of the past ten years. Many thanks to all who took part! Scroll down to find out who they chose as their winner...
—Rosie Gillies
Our Members' Favorite
What Did Cedric Robinson Mean by Racial Capitalism?
by Robin D. G. Kelley
In this key essay from 2017, Boston Review contributing editor Robin D. G. Kelley explores the work of Cedric Robinson, and his belief that capitalism and racism did not break from the old order but rather evolved from it to produce a modern world system of "racial capitalism."
The essay served as an introduction for Race, Capitalism, Justice, our very first redesigned issue from January 2017 (and the first to sell out!) and helped pave the way for Boston Review's reputation as a publication dedicated to unpicking racial capitalism. It couldn't be a more fitting winner!
Twelve More Must Reads
The Checkpoint
by Oded Na'aman
"At the checkpoint, omnipotence is the power to create orders, not merely to enforce them." An IDF veteran reflects on whether clearheaded judgment is possible under a military occupation.
The President's House Is Empty
by Bonnie Honig
"The White House is a public thing to be used by the president. But Trump and his family chose to go private. And in so doing, they incurred costs that they then passed on to the public."
The Erotics of Mentorship
by Marta Figlerowicz and Ayesha Ramachandran
"Intellectual magnetism often shades into erotic attraction. Such attachments are not reducible to predatory behavior and, at their best, bring out our best selves."
The Defeat of Reason
by Tim Maudlin
Reestablishing the authority of reason and evidence is the most difficult of all tasks. How do you convince a whole culture that it is deluded?
Standardized Testing Can Be Good—But Only If We Put Students First
by Lelac Almagor
"By testing kids individually, we would reframe testing as a source of information rather than evaluation."
Against Empathy
a forum with Paul Bloom, Elizabeth Bruenig, Peter Singer, Leslie Jamison, and more.
"Most people see the benefits of empathy as too obvious to require justification. This is a mistake."
#Milosexual and the Aesthetics of Fascism
by Daniel Penny
"Milo is singular: an ultra right-wing pundit with a high-femme persona who is embraced by a political bloc contemptuous of homosexuals."
The Mythical Whiteness of Trump Country
by Elizabeth Catte
The logic of J. D. Vance's Hillbilly Elegy is rooted in an enduring and dangerous myth about race in Appalachia.
The Responsibility of Intellectuals, Redux
by Noam Chomsky
If the responsibility of intellectuals is to speak about crimes in which we are implicated, how should we speak of 9/11?
Black Panther Is Not the Movie We Deserve
by Christopher Lebron
A movie unique for its black star power depends on a shocking devaluation of black American men.
'Rescuing Economics from Neoliberalism
by Dani Rodrik
"The looseness of the term neoliberalism means that criticism of it often misses the mark—and risks throwing out some of its useful ideas."
an interview with Arundhati Roy
"India, where farm laborers commit suicide, and where it is safer to be a cow than it is to be a woman, is still being celebrated as one of the fastest growing economies in the world."
Our Top Essays of 2019
From Walt Whitman to Arundhati Roy, here are the essays that were read the most over the past twelve months.
Boston Review, Rosie Gillies
Our Most-Loved Essays of 2018
A countdown of the top ten.
Rosie Gillies, Boston Review
10 Essays You Might Have Missed
Take a second look at some pieces that might have passed you by in 2018.
More In Reading Lists
Killing the Commons
The Legality and Reality of Torture
"Listen to the Science"
Matt Lord, Boston Review
Essential Reads on White Supremacy
Is Populism a Problem?


text:
Q: Google Play Service Testing I've got a question,
I want to test my app with Play Services, do I have to promote my apk from Alpha to Production?
It currently crashes everytime it tries to connect to the play services.

A: Nope you don't even have to have it in alpha testing - you just have to make sure you have a game services linked to your app. You actually don't even need to upload an apk or anything for it to work
https://developers.google.com/games/services/console/enabling

redpajama_set_name: RedPajamaStackExchange


Ray-Ban RB3528 is a Full Rim frame for Men, which is made of Metal.
These Ray-Ban RB3528 Sunglasses flatter people with the following facial features: Long Nose.
Ideal for usage with: Fashion, Driving, Everyday Driving.
Ray-Ban RB3528 Sunglasses come with a cleaning cloth and protective carrying case.


staggered deck boards deck board patterns deck board layout board deck photo of art deck design united states deck deck board staggered deck board patterns.
light bulb pipe newest light bulb shape design glass water pipe bong smoke tobacco weed hookah smoking light bulb to pipe instructions.
marvin window windows marvin windows and doors nj.
yard machines snow blower reviews yard machine snowblower yard machine yard machine snowblower parts yard machine snowblower inch parts yard machines snow blowers reviews.
floating acrylic wall frame best frames images on acrylic at to wall change the color and even etch letters acrylic wall mount poster frames floating acrylic wall frame 27x39.
white queen duvet cover black and white bedding set feather duvet cover queen king size full twin double bed sheets bedspreads quilt linen cotton plume in bedding sets from home white queen duvet cove.
gold starburst wall decor black starburst mirror dorm wall decor outside wall decor elephant wall decor oversized sunburst mirror gold starburst decorative wall sculpture.
twin headboard ideas modern twin headboard ideas twin upholstered headboard diy.
coffee shop furniture photo of wide spaces between restaurant furniture coffee shop furniture design.


"Cuban Contemporary is a hybrid of North American Modern technique, European ballet, African traditions and popular influences. It is a unique blend – like our nation itself. The long isolation and the political impact on culture lead to very creative forms of art, with dance as its major expression. We are masters of improvisation, using our bodies, all we have, to express ourselves. A strong emphasis lies on the technical skills, defined body lines and rhythmic complexity. Cuban Contemporary offers a lot to explore for every dancer!"
Read an interview with Yusimi Moya Rodriguez about the art of dancing published by the Spanish magazine Afrofeminas http://afrofeminas.com.


2016 comes with its new trends and approach for color backsplash. We have some best of photographs for your awesome insight, look at the photo, the above mentioned are stunning galleries. Hopefully useful. Laid back carroll gardens townhouse has historic charm crayon box cool, Stone countertops get work done but color welcome well here crimson pebble resin backsplash next floor bedrooms candy hued tangerine cyan bonus room perfect home office dream closet also.
You must click the picture to see the large or full size image. If you think this collection is useful to you, or maybe your friends you must click like/share button, so more people can get this information. Here there are, you can see one of our color backsplash gallery, there are many picture that you can surf, don't forget to see them too.
All these colours convey comfort and peace. These colours all the time bring peace and consolation. These colours are present in nature so why not incorporate them. Now, add paintings or photos that are seaside associated with matching towels, accessories and possibly a strong coloured shower curtain. Then, where the two colors meet, add an armchair railing. Other colors like gentle tan or brown could be added to the bathroom too. If you like a spa feeling, that can be integrated by painting the walls a pastel blue or purple. The very first thing to do is paint the walls an ocean blue or sea foam green color. If you would like, the highest portion of the walls may be ocean blue and the underside portion will be sea foam inexperienced. If you would like you may place a very good overview of his workmanship on-line by means of your Google account, it can help his web site rankings and also different potential customers looking for reliable and effective craftsmen.
The bathroom is a superb place to start spicing up or remodeling. The bedroom is another nice room to spice up or transform. Other than your bedroom's designs and colours, it is also important that you purchase mattress sheets and covers that might coincide properly with the kind and quality of your new room. We are often requested to provide decent quality, arduous sporting and attractively finished bathrooms for "buy to let" clients, young households and first time residence buyers on a limited budget. Because of this if your room is pretty much girly, you must also purchase a girly trying mattress sheet and canopy. In case your bedroom used to have prints and designs on the walls, and you're bored with these types, you possibly can simply go for simple looking designs or plain prints. In case you are currently thinking of the best way to create a brand new look to your bedroom, you may want to contemplate trying out all of the design and magnificence choices that you have from books as well as online web sites.
Which means that if your rooms was in pink because that's your favorite shade, ask yourself on what your favourite color is now and would possibly need to use that as your bedroom's new color scheme. That is very true in case you had a long day at work or simply need to get away from all of the stress. That is true particularly with home decor gadgets made to appear like the actual thing. All the homeowner needs to do is look though home decor magazines for ideas. That at all times finishes the look at makes the room look extra beachy. Should you happen to be sharing your room with another person, like your sister or accomplice in life, it can be advisable to take note of how they also like your room to look like. Doing this could offer you an concept on what and how you could truly make your bedroom look distinctive and thrilling.
This fashion, you don't essentially have to worry or spend in your room's wall and could transfer forward to different vital parts of your bedroom. All it takes is imagination and the willpower to see your bathroom the way in which you've gotten always envisioned it. If the shower curtain is strong, the bathroom equipment have more of an opportunity to be changed out more often. Now, add accessories like a water fountain, bamboo plant, candles and statuettes. Now, when adding window coverings, add a puffy cream colored valance window remedy with a matching cream colored roller shade. Another more essential thing you need to consider in fact is whether or not or not your bedroom is your individual private area. A very powerful thing in the case of choosing out your bedroom design is to contemplate your precise tastes and preference.
In the event you cherished this article along with you desire to be given more info regarding amen wardy home store generously stop by our web site.
Below are 9 top images from 23 best pictures collection of color backsplash photo in high resolution. Click the image for larger image size and more details.


QUALCO Collections & Recoveries is a debt management, collection and recoveries platform designed for businesses in finance, insurance agencies and utility companies. Features include agency management, compliance management, contact management, automated notices, in-house collections and more.
QUALCO's NPL management application helps businesses to create collection curves, establish portfolio-specific strategies and review assets before sharing portfolios with internal teams. The analytics application combines performance monitoring with descriptive and predictive analysis.
Additionally, QUALCO provides users with debt collection and debt recovery tools that enable them to manage debt portfolios and arrears with strategies built on analytics and data-driven pointers. The solution also features a loan management module.
QUALCO offers a perpetual license for a one-time fee that includes support via phone, email and online product guides.
We are using SOR version, which is a system that does the basic.
The import files with many extra fields. Easy to use for non experienced analysts, because it has specific flow in parameterization of segments and assignments.
It's not really flexible. UX is poor. The system does not have the ability to have parallel assignments, inhouse and outsourced. 1 day delay of external assignments. I believe that should invest more in R&D.
We establish this software in 2007 in NBG. I work in Business Analysis where we cooperate with business Units for possible changes / improvements, using new modules, reporting etc.
User friendly, easy connected with dialer for the collection center.
Time of Batch, high cost in some cases and big time of implementations.
Extended functionality, lots of features, can cover almost any need of a potential user. Excellent customer support.
Time and hardware consuming EOD flows for large portfolios.


text:
SyFy's 'Being Human' Coming Soon
13 Comments on SyFy's 'Being Human' Coming Soon
The BBC's dramedy "Being Human," about a ghost, a werewolf, and a vampire sharing a flat, is so popular in the UK that is has been ripped off and turned into an American remake. Fans of the original, which is currently in its third season, aren't too pleased about SyFy remaking it, but it has been done and the new show is set to premiere January 17.
"Being Human is a re-imagining of the acclaimed BBC original series that follows three 20-something roommates: A ghost, a vampire and a werewolf who are struggling to keep their dark secrets from the world, while also helping each other navigate the complexities of living double lives.
"Being Human is a smart, contemporary, young and imaginative series that reflects Syfy's new brand positioning. We are very excited to adapt this for an American audience and bring it into Syfy's family of programming," said Dave Howe, President, Syfy.
The series will star Sam Witwer (Smallville, Battlestar Galactica), Meaghan Rath (The Assistants), Sam Huntington (Cavemen, Superman Returns) and Mark Pellegrino (Lost, Supernatural).
Rounding out the creative team is Adam Kane (The Mentalist, Heroes) as director and co-executive producer, with executive producer Michael Prupas (The Kennedys, Pillars of the Earth) alongside husband and wife executive producers/writers Jeremy Carver (Supernatural) and Anna Fricke (Men in Trees, Everwood).
Muse Entertainment will be producing 13 compelling 1-hour episodes for Syfy."
The folks from io9.com have already checked out three unfinished episodes and from their review, the new show doesn't sound too bad.
"All in all, there were enough homages to the original to make me feel like they were respecting the source material, and enough deviations to add a little spice. Witwer has proven that not only is he a sexy piece of sweater meat, he's also a great actor. The chemistry between Witwer and Huntington should sell just about anyone on this series, and hopefully in the future, the trio of ghost, vampire and werewolf will gel even more. I liked what I saw, a lot. And I intend to watch the hell out of this show."
Check out the SyFy's Being Human promo below:
Let us know in a comment below what you think of the remake. Are you a fan of the original, do you plan on watching the new show?
Tags Being Human, Being Human remake, Being Human SyFy, werewolf show
← Film Flashback: The Curse of the Werewolf → The Fallen Blade by Jon Courtenay Grimwood
13 replies on "SyFy's 'Being Human' Coming Soon"
Silver Foxsays:
I've checked out episodes of BBC's Being Human and there's something about British acting and script writing that I find off and don't like. I think my lack of enjoyment came from joining the series so late and trying to follow it. There are good elements though, many of them.
As for SyFy's remake… I'll be giving the show a chance.
Morbidementiasays:
I love the BBC series. Its extremely dark, very mature and well acted. Russel Tovey is absolutely amazing as George, the werewolf.
Its hard for me to imagine that the SyFy version won't be a horribly watered down for American consumption. Here's hoping that shows like Breaking Bad, Sons of Anarchy and Walking Dead have paved the way for the SyFy version to be brave and not sell out and totally suck. I'm pretty skeptical, though. Still, I will try to give it a fair chance. I would really like for it to work out, I'm always stoked to see horror on TV.
Kuroksays:
Argh!, Always doing the same.
Copying the stories of movies of other country and doing by "US" way.
With Little Brittain also they did the same. "Little Britain "USA""
Well I imagine that the SyFy will adapt for american audience, as they say, for people more "&/%&#" like American audience. ¿what are they thinking about US people?? the only thing they matter is about gain more and more audience, as less the audience think or know about other culture, better for them.
The original are quite good.
Very nice, original, mature and dark story, about the starrings trying to live as a normal people. people with a Job, and a mature life.
I dont like the americans remakes of things that I have already seen the original.
The worst remake for me is the remake of the Japanese original movie "The Ring" "(ringu)" After that, The remake of Spanish original movie "Abre los Ojos" The american remake "Vanilla sky"
And the last I know is about swedish original movie "let the right one in". argh…
Sorry. If you are adult and mature I recommend you to see the original of BBC.
Isabellesays:
I love being human it's the only show I like. I even right songs about it.
I've seen Walking Dead from the list you mentioned there. Yes, that series is good. But yeah, there's been several SyFy shows that felt like they didn't go all out and were too… "let's play it safe."
If it's going to be an American Remake it needs to be good. Otherwise I'll stick with the original regardless of my feelings towards British Scripting and Acting.
Wolfkinsays:
I'm a big fan of the BBC series and I look forward to Syfy's take. I'm not expecting much, But Sam Witwer is a big draw for me. I'm giving the Americanized version its fair chance.
Mee :3says:
I've been watching Being Human since the pilot back in 2008 – and I think it's pointless remaking it.
Everything's perfect just the way it is. The effects are AMAZING for a TV show's budget, the script has just the right amounts of darkness, gore, happy bits, funny bits and sad bits.
I love the cast to bits as well – they're amazingly genuine and friendly (yes, I have met them. At the Comic Con in London)
The guy who is playing Josh in the USA version will have to get ready for some tough competition – No one can play a Being Human werewolf better than Russell Tovey and Sinead Keenan!! ;D
I've heard that when American's remake things, it's just the same but with more sex, drugs and beautiful women.
If the new Being Human is anything like that…NONE of the fans will be happy. SyFy will destroy it.
I'm loyal to the BBC series. And I always will be.
Sorr,y SyFy.
:D x
Reneesays:
Americanized "Being Human"!!! Is nothing sacred anymore? Apparently NOT. Part of the attraction of the BBC series is the old world charm that only Britain can supply. I am a fan of the original and always will be.British humor lends itself well to this subject matter. It is a nice melding of drama and humor to keep the audience engaged. The actors are perfect and why would you mess with perfection.Not everything American is better. Syfy should have just imported it. This is like dressing Santa Claus in green. Sorry Syfy, I also won't be watching.
Xarixiansays:
Hmm … can't say I'm too impressed by that promo. It looks a bit limp and stylised. Then again, that could just be the promo trying to get as wide an audience as possible.
'Adapted for American audiences'? Like they couldn't possibly understand the English version. "Oh, they have accents! Quick, turn off the T.V!"
I dunno. I love the show because of the humour, and I just can't imagine how the new series would capture that as well. It works because it's British.
I'll give it a chance, maybe watch the first couple of episodes, but I sincerely doubt it could live up to my love for the original series. Although I've heard it has Mark Pellegrino in it, and some good writers, so maybe …
Remakes just piss me off because I want there to be a sharing of culture. I love American shows like Supernatural and the first series of Heroes and Lost, and I just wish they'd show our shows over there instead of remaking them. It's not like they're not good, and I'm pretty sure that if we can understand American shows, they can understand ours. I don't get why it has to be 'adapted'- our cultures are not so vastly different.
Not saying it'll be bad or anything, it just disappoints me when these things happen. It's cheaper for them this way, I suppose :/
Alexis Morgansays:
I've watched every episode of the Britsh version and really enjoyed both seasons. I love the cast, especially the vampire. To me, he does a great job of showing both his vulnerable side, but then turning dark in an instant. I'll probably check out the new version anyway at least once.
I love being human I hope they never stop the good job there doing. I hope they make the episodes on DVD.
Being human is the best in the world I give it 5stars and two thumbs up.
If you ware like you under stand why I like being human. It is the only show that I can relate to in the hole world. some times I don't fit in so I just sit a lone and I can hear the people saying things hind my back like I'm a freak or a monster. when will I fit in. :(
Destruction: Wolfsbane


Minoo's Laser and Beauty in the iconic Manchester Unity Building on Melbourne's Collins Street, is an intelligent beauty salon offering advanced cosmetic beauty treatments. An industry leader, Minoo Pirouzgar has been proudly providing professional beauty treatments for over forty years. Working through London and Europe, Minoo opened her exclusive Australian clinic in 1986 for a clientele who demands the very best in customer service and beauty therapies. Minoo's Laser and Beauty offers a variety of skin, body, laser hair removal, and intelligent beauty therapy services. From chemical skin peels, dermapen cryo, microdermabrasion, and manual lymphatic drainage, there is a service to meet your every beauty need. You want to look your best, so why not go to the best? The combination of experience and exclusivity at Minoo's Laser and Beauty will get you the results you want for the body you deserve. Call in today to find out how.
Minoo's Laser and Beauty has no reviews so far.


Curvy fashion, plus size brands and designer of plus size fashion: There are quite a few online shops, that offer exclusively plus size fashion for plusperfect girls or expanded their existing product selection to bigger sizes.
Our plus size shopping guide helps you to get an overview. It'll help you to find the perfect online shop where you can find styles that match your tastes and your budget.
Have fun browsing through the online shops!
bon prix – it's me!
sheego – Zieh dein Glück an!
British online shop for curvy fashion. Also shoes with wider fits.


Big Brand Pulverizer Grinder Mini Raymond Stone Mining Grinding Mill .. dry mine laboratory wet stone grinder factory price for gold copper iron chromite ore grinding .. Quality Guaranteed Mini grinding plant 200 mesh ball grinder . YGM series grinder mill,China hot sale mini cement production line with ISO certificate.
Zhengzhou General Mining Machinery Co., Ltd., Experts in Manufacturing and . Ball Mill Series. professional Mining Flotation Machine wiht best quality.
Slag Powder, Slag Powder Suppliers and Manufacturers at Alibaba .
About 7% of these are refractory, 7% are mine mill, and 3% are slag. A wide variety of slag powder . Tags: Iron Powder Mill Scale . Slag Tube Mill . Ball Valve Grinding Machine. YGM Series Slag Powder Three Roll Mill. US $5899 12599 / Set.
Zenith Grinder Mill Machine,Grinding Mill With Ce , Find Complete Details about Zenith . Mill With Ce,Grinding Mill,Grinder Mill,Mill Machine from Mine Mill Supplier or . which is designed to substitute for ball mill, Raymond mill, vertical mill etc. .. from YGM series to MTM trapezoid mill with improved single machine yields.
Iron oxide mill feed gas desulfurizer . Henan Hongji Mine Machinery Co., Ltd. .. High Quality Ceramic Balls for Catalyst Support Media ( Sic / Zro2 / Al2O3) . YGM Series Talc powder raymond mill , Gypsum powder raymond mill.
stone, Mining,Quarry,chemical industry and Construction . Zenith's B series VSI sand making machine is distinctive on account of its . roller crusher, roller ball mill, becoming the mainstream equipments in sand making business. . Its product is cubic, and the density of piling up is high and the iron pollution is low.6.
grinding ball mill .. Rock phosphate, Kalium ore application carbon black grinding mill for Vietnam .. Cheap price YGM series carbon black grinding mill machine . Wheel grinding mixer for coal charcoal coke iron or other material powder.
Cheap price YGM series carbon black grinding mill machine. Add to Compare .. Guilin Hongcheng Mining Equipment Manufacture Co., Ltd. .. High Efficiency carbon black ball grinder machine with ISO certificate . Wheel grinding mixer for coal charcoal coke iron or other material powder grinding mill machine with.
A wide variety of sand grinder options are available to you, such as ball mill, raymond mill. . SK series Vertical Sand Grinding Mill/Sand Grinder .. mining machine YGM limestone grinding mill silica sand grinding mill glass grinder for sale .. Sea Sand Iron Dry Ball Grinder / Dry Ball Grinding Mill / Ore Beneficiation.
The Machines classification: ball mill. Application: Ore. Color: Iron Grey .. from YGM series to MTM trapezoid mill with improved single machine yields. As the.
Barite Activated Carbon Iron Ore Rod Milling Machine . Ball coal mill equipment barite milling machine . High efficiency YGM series barite milling machine.
ball mill prices .. Best Factory Price Raymond Grinding Mill YGM 85 . Shandong Xinhai Mining Technology & Equipment Inc. . Tags: 4r Series Raymond Mill . 5r 4119 High Capacity Raymond Mill Price . Iron Ore Raymond Mill . 4R Series Raymond Mill manufacturer price For Limestone, Calcite, Barite, Dolomite etc.
raymond grinding mill plant/carbon black processing machine for sale. US $20000 40000 / Set . Add to Compare. Tags: Carbonate Ball Mill . Carborundum Grinding Ball Mill Iron ore Raymond mill/Iron ore grinding mill/Raymond grinding machine . ACM Series Mill Air Classifier Mill Machinery carbon black mill.
S series cone crusher uses dry oil seal or water seal, so that dust and other . And that ensures lubrication oil clean, extending service life of the sliding bearing and thrust ball bearing, making the . Hammer Mill · Suspend belt type iron remover . of mining crusher, industrial grinding mills, and beneficiation equipments.
China Complete YGM High Pressure Fine Grinding Mill / Slag Grinding Mill / Grain Grinder. Add to Compare .. Iron ore grinding ball mill/ iron slag grinding mill.
YGM Series high pressure ultrafine lime powder making machine chinese supplier lime grinding machine, iron powder making machine . Qingdao Cement Lime Rock Soil Machine Gold Ore Grinding Slag Micronizer Ball Mill.
iron oxide prices . Sodium Alpha Calcined Alumina Coarse Powder for High Purity Filler Ball Haicheng Shengyueruiheng Mining Industry Co., Ltd. Add to Favorites. YGM Series Calcium oxide raymond mill , Sodium potassium feldspar.
Raymond Vertical Grinding Mill, Wholesale Various High Quality Raymond Vertical Grinding Mill Products from Global Raymond Vertical . grinding ball mill YGM Series Raymond mill for ultrafine iron ore,limestone,cement grinding.
Buy 4r 3216 Highly Fine Powder Processing Raymond Mill/ Grinding .
Buy 4r 3216 Highly Fine Powder Processing Raymond Mill/ Grinding Mill , Find . From Mine Mill Supplier,Raymond Mill Machine Price from Mine Mill Supplier or . YGM Series . R pendulum grinder, high pressure grinding mill, ball mill, coarse grinding mill, and tiny . b) Metallurgy materials: manganese ore, iron ore.etc.
2016 hot sale YGM high pressure suspension grinder mill series. Add to Compare .. Iron Ore Grinding Mill High Pressure Medium Speed Grinder from china.


text:
COP 24 looks to cut host's coal use
Over the next fortnight, leaders will gather in Poland to try to establish a set of rules to follow as they implement the Paris climate agreement targets and discuss ramping up goals. They also need to agree who is going to pay for the changes.
The International Congress Centre in Katowice is next to the Coal History Museum as a reminder of Poland's continued reliance on the environmentally ruinous fossil fuel.
The COP24 climate conference is taking place in Silesia, which has about 90,000 coalminers, around half of the EU's coal workforce.
Poland's Prime Minister Mateusz Morawiecki called coal "our black gold" and last week Greenpeace activists climbed a 180-metre chimney at a power station in Belchatow (pictured) in central Poland to protest against Polish coal policies ahead of the climate talks.
Poland is the biggest producer of hard coal in the EU and coal power provides around 80 per cent of Polish electricity, compared to around 30 per cent across International Energy Agency members.
But coal accounts for almost half of the world's energy-related carbon-dioxide emissions.
The EU has pledged to cut greenhouse emissions by at least 40 per cent compared to 1990 levels by 2030, and last week unveiled a target to be net zero by 2050.
Poland's carbon emissions per capita are slightly above the EU average, but its emissions per GDP are the third-highest in the bloc.
Marek Wąsiński of the Polish Institute of International Affairs said attitudes were changing in the Central European country. He said: "Like other EU countries, Poland is also moving away from coal. It's not a revolution, it's a slow evolution of the energy sector."
Although it provides less than 10 per cent of its energy supplies, Poland has around 6 gigawatts of wind power capacity, making it a leading EU supplier.
Construction of the Baltic Pipe Project is set to start in 2020, supplying Norwegian gas although methane leakage can limit the climate benefits offered by natural gas.
Michał Kurtyka, the Polish environment minister, said the country inherited a legacy of coal from the Soviet occupation but had since managed to successfully transition its economy.
"In 1990 the Polish energy mix was 96-per-cent coal," he said. "There was a very high share of employment in coal and very big industrial production, the result of this communist conviction that only through industrialisation could the Soviet bloc compete with western economies.
"When we entered into the transformation phase, this idea of transition of employment and changing industrial structure in many industrial regions, but starting with Silesia, was a very big challenge, but it's working very well right now," Kurtyka added.
"Katowice is an example of the transformation. It's a green city, 40 per cent of the city is covered with parks, and quite a substantial part of production and employment is going to IT, business centres, value-added services and new industries," said Kurtyka, who is also chairing the COP 24 event.
Belchatow. Picture credit: Wikimedia
coal COP24 Mateusz Morawiecki Michal Kurtyka Paris climate agreement Poland


text:
describe('FeatureManagerService', function() {
  var featureMgrService;
  var mapService;
  var serverService;
  var configService;
  var exclusiveModeService;
  var translateService;
  var q;
  var defer;
  var rootScope;
  var httpBackend;
  var dialogService;
  var window;

  //include the whole application to initialize all services and modules
  beforeEach(module('MapLoom'));

  beforeEach(inject(function (_featureManagerService_, _mapService_, _serverService_, _exclusiveModeService_, _configService_, _dialogService_,$translate, $httpBackend, $q, $rootScope, $window) {
    featureMgrService = _featureManagerService_;
    mapService = _mapService_;
    serverService = _serverService_;
    configService = _configService_;
    translateService = $translate;
    exclusiveModeService = _exclusiveModeService_;
    dialogService = _dialogService_;
    httpBackend = $httpBackend;
    q = $q;
    rootScope = $rootScope;
    window = $window;
  }));

  describe('show', function() {
    beforeEach(function() {
      //spyOn(rootScope, '$broadcast');
      defer = q.defer();
      defer.resolve();
      mapService.loadLayers();
      rootScope.$apply();
      spyOn(mapService, 'addToEditLayer');
      spyOn(featureMgrService, 'getSelectedItemLayer').and.returnValue({layer:mapService.map.getLayers().array_[0]});
      spyOn(featureMgrService, 'getSelectedItemMediaByProp');
    });

    it('should set state_ to \'layer\' and selectedItem_ should be set to the object passed as the parameter, if object has a defined property called features', function() {
      //set a features property on pre-existing layer
      mapService.map.getLayers().array_[0].features = 1;
      featureMgrService.show(mapService.map.getLayers().array_[0]);
      expect(featureMgrService.getState()).toBe('layer');
      expect(mapService.map.getLayers().array_[0]).toBe(featureMgrService.getSelectedItem());
    });

    it('should set state_ to \'feature\' and selectedItem_ should be set to the object passed as the parameter, if object has defined properties called features, properties, and geometry', function () {
      //cook up some data to make sure we can get through all function calls
      mapService.map.getLayers().array_[0].features = 1;
      mapService.map.getLayers().array_[0].properties = 1;
      mapService.map.getLayers().array_[0].geometry = 1;
      mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();

      var feature = new ol.Feature({
        geometry: new ol.geom.Circle([45,45], 10),
        labelPoint: new ol.geom.Point([90, 45]),
        name: 'My Polygon'
      });

      mapService.editLayer.getSource().featuresCollection_.push(feature);

      //call the actual method we are testing
      featureMgrService.show(mapService.map.getLayers().array_[0]);

      //run through assertions for dealing with a feature
      expect(featureMgrService.getState()).toBe('feature');
      expect(mapService.map.getLayers().array_[0]).toBe(featureMgrService.getSelectedItem());
      expect(featureMgrService.getSelectedItemLayer).toHaveBeenCalled();
      expect(mapService.addToEditLayer).toHaveBeenCalled();
      expect(featureMgrService.getSelectedItemMediaByProp).toHaveBeenCalled();
    });

    it('should set state_ to \'layers\' and selectedItem_ should be set to the object passed as the parameter, if the object is an array and elements have a defined property called features', function() {
      mapService.map.getLayers().array_[0].features = 1;
      featureMgrService.show(mapService.map.getLayers().array_);
      expect(featureMgrService.getState()).toBe('layers');
      expect(mapService.map.getLayers().array_).toBe(featureMgrService.getSelectedItem());
      expect(featureMgrService.getSelectedItemLayer).not.toHaveBeenCalled();
    });

    it('should not add anything to the edit layer if there is no geometry defined in the object that is passed as a parameter', function () {
      //cook up some data to make sure we can get through all function calls
      mapService.map.getLayers().array_[0].features = 1;
      mapService.map.getLayers().array_[0].properties = 1;
      mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();

      var feature = new ol.Feature({
        geometry: new ol.geom.Circle([45,45], 10),
        labelPoint: new ol.geom.Point([90, 45]),
        name: 'My Polygon'
      });

      mapService.editLayer.getSource().featuresCollection_.push(feature);

      //call the actual method we are testing
      featureMgrService.show(mapService.map.getLayers().array_[0]);

      //run through assertions for dealing with a feature
      expect(featureMgrService.getState()).toBe('feature');
      expect(mapService.map.getLayers().array_[0]).toBe(featureMgrService.getSelectedItem());
      expect(featureMgrService.getSelectedItemLayer).toHaveBeenCalled();
      expect(mapService.addToEditLayer).not.toHaveBeenCalled();
      expect(featureMgrService.getSelectedItemMediaByProp).toHaveBeenCalled();
    });
  });

  describe('hide', function() {
    beforeEach(function() {
      spyOn(mapService, 'clearEditLayer');
    });

    it('should reset private variables and call clearEditLayer', function() {
      featureMgrService.hide();
      expect(featureMgrService.getSelectedItem()).toBe(null);
      expect(featureMgrService.getState()).toBe(null);
      expect(featureMgrService.getSelectedItemLayer()).toBe(null);
      expect(featureMgrService.getSelectedItemProperties()).toBe(null);
      expect(featureMgrService.getSelectedItemMedia()).toBe(null);
      expect(mapService.clearEditLayer).toHaveBeenCalled();
    });
  });

  describe('startFeatureInsert', function() {
    beforeEach(function() {
      spyOn(featureMgrService, 'hide');
      spyOn(exclusiveModeService, 'startExclusiveMode');
      defer = q.defer();
      defer.resolve();
      mapService.loadLayers();
      rootScope.$apply();
      mapService.map.getLayers().getArray()[0].values_.metadata.schema = {geom: {_name:'geom', _type:'gml:PointPropertyType' } };
    });

    it('shoud call hide on the current layer', function() {
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect(featureMgrService.hide).toHaveBeenCalled();
    });

    it('should disable double-click zoom interaction on the map since the user is about to draw', function() {
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect(mapService.map.interactions_.array_[1].values_.active).toBe(false);
    });

    it('should start exclusive mode and set exclusiveModeService.addMode to true', function() {
      //expect(mapService.editLayer.getSource().getFeatures().length).toBe(0);
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect(exclusiveModeService.startExclusiveMode).toHaveBeenCalled();
      expect(exclusiveModeService.addMode).toBe(true);
    });

    it('should set the internal selected layer to the layer provided as a parameter', function() {
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect(featureMgrService.getSelectedLayer()).toBe(mapService.map.getLayers().getArray()[0]);
    });

    it('shoud add the edit layer to the map for editing', function() {
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      var found = false;
      for(var i = 0; i < mapService.map.getLayers().getArray().length; i++) {
        if(mapService.editLayer == mapService.map.getLayers().getArray()[i]) {
          found = true;
        }
      }
      expect(found).toBe(true);
    });

    it('should call mapService.addDraw if the layer geometry is homogenous', function() {
      spyOn(mapService,'addDraw');
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect(mapService.addDraw).toHaveBeenCalled();
    });

    it('should show a dialog with different geometry types to draw if the layer geometry is NOT homogenous', function() {
      spyOn($.fn,'modal');
      mapService.map.getLayers().getArray()[0].values_.metadata.schema = {geom: {_name:'geom', _type:'gml:GeometryPropertyType' } };
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect($.fn.modal).toHaveBeenCalled();
    });

    it('should broadcast to other components that startFeatureInsert has been called', function() {
      spyOn(rootScope, '$broadcast');
      featureMgrService.startFeatureInsert(mapService.map.getLayers().getArray()[0]);
      expect(rootScope.$broadcast).toHaveBeenCalledWith('startFeatureInsert');
    });
  });

  describe('endFeatureInsert', function() {
    beforeEach(function() {
      defer = q.defer();
      defer.resolve();
      mapService.loadLayers();
      rootScope.$apply();
    });

    it('should re-enable double-click zoom interaction on the map', function() {
      featureMgrService.endFeatureInsert();
      expect(mapService.map.interactions_.array_[1].values_.active).toBe(true);
    });

    describe('(save = true)', function() {
      beforeEach(function() {
        //spy on this service to stub the call without the actual implementation being called
        spyOn(mapService, 'addToEditLayer');
        //spyOn so we can return the value we want
        spyOn(featureMgrService, 'getSelectedItemLayer').and.returnValue({layer:mapService.map.getLayers().array_[0]});

        //fudge some data for the various calls so we can make it all the way through,
        //note that the value of geometry coordinates in the following line affects test outcomes
        //also note that selectedItem_ (in the service) will be mapService.map.getLayers().array_[0]
        mapService.map.getLayers().array_[0].properties = 1;
        mapService.map.getLayers().array_[0].geometry = {coordinates:[55,55]};
        mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();

        var feature1 = new ol.Feature({
          geometry: new ol.geom.Point([90, 45]),
          labelPoint: new ol.geom.Point([90, 45]),
          name: 'My Polygon'
        });
        mapService.editLayer.getSource().featuresCollection_.push(feature1);

        var feature = new ol.Feature({
          geometry: new ol.geom.Point([90, 45]),
          labelPoint: new ol.geom.Point([90, 45]),
          name: 'My Polygon'

        });
        mapService.editLayer.getSource().addFeature(feature);

        //call show to initialize some internal private vars to the service
        featureMgrService.show(mapService.map.getLayers().array_[0]);
      });

      describe('coordinates of the feature (selectedItem_) are identical to the one\'s provided to the method', function() {
        it('should add the geometry of the feature to the map\'s edit layer', function () {
          //todo mock this in the object itself and remove the method from the feature service
          //something like this - mapService.map.getLayers().array_[0].values_.metadata.schema = [{0: 'evento'}, {0: 'situacion_crit'}];
          var props = [{0: 'evento'}, {0: 'situacion_crit'}];
          featureMgrService.setSelectedItemProperties(props);
          featureMgrService.endFeatureInsert(true, props, [55, 55]);

          expect(mapService.addToEditLayer).toHaveBeenCalled();
          expect(mapService.addToEditLayer.calls.mostRecent().args[0]).toBe(mapService.map.getLayers().array_[0].geometry);
          expect(mapService.addToEditLayer.calls.count()).toBe(2);
        });

        it('should issue a WFS post message with the updated attribute and geometry data', function() {

          //add some data to ensure http request indludes the values
          mapService.map.getLayers().array_[0].values_.metadata.nativeName = 'freedom';
          mapService.map.getLayers().array_[0].values_.metadata.name = 'map:sixpoint';

          //intercept the http request and hold onto the url and data for validity checks below
          var wfsURL;
          var wfsData;
          httpBackend.when('POST').respond(function(method, url, data, headers, params){
            wfsData = data;
            wfsURL = url;
            return {'status': 200};
          });

          var props = [{0: 'evento'}, {0: 'situacion_crit'}];
          featureMgrService.setSelectedItemProperties(props);
          featureMgrService.endFeatureInsert(true, props, [55, 55]);
          httpBackend.flush();
          httpBackend.expectPOST();

          expect(wfsURL.indexOf('wfs')).not.toBe(-1);
          expect(wfsData.indexOf('wfs')).not.toBe(-1);
          expect(wfsData.indexOf('Insert')).not.toBe(-1);
          expect(wfsData.indexOf('sixpoint')).not.toBe(-1);
          expect(wfsData.indexOf('freedom')).not.toBe(-1);
        });
      });

      describe('coordinates of the feature (selectedItem_) are NOT identical to the one\'s provided to the method', function() {
        var origGeomCoords;
        var newGeomCoords;
        beforeEach(function() {
          origGeomCoords = mapService.editLayer.getSource().getFeatures()[0].getGeometry().getCoordinates();
          spyOn(mapService.map.getView(),'setCenter');

          //todo mock this in the object itself and remove the method from the feature service
          //something like this - mapService.map.getLayers().array_[0].values_.metadata.schema = [{0: 'evento'}, {0: 'situacion_crit'}];
          var props = [{0: 'evento'}, {0: 'situacion_crit'}];
          featureMgrService.setSelectedItemProperties(props);

          //call the actual method to test
          featureMgrService.endFeatureInsert(true, props, [0, 0]);
          //keep track of the coordinates to see if the method made any changes to them
          newGeomCoords = mapService.editLayer.getSource().getFeatures()[0].getGeometry().getCoordinates();
        });

        it('should NOT add the geometry of the feature to the map\'s edit layer', function () {
          expect(mapService.addToEditLayer.calls.count()).toBe(1);
        });

        it('should update the feature in the edit layer i.e. transform it by the new coordinates',function() {
          expect(newGeomCoords).not.toBe(origGeomCoords);
        });

        it('should pan the map to the new feature position', function() {
          expect(mapService.map.getView().setCenter).toHaveBeenCalledWith(newGeomCoords);
        });
      });
    });

    describe('(save = false)', function() {
      beforeEach(function() {
         //spy on this service to stub the call without the actual implementation being called
        spyOn(mapService, 'addToEditLayer');
        //spyOn so we can return the value we want
        spyOn(featureMgrService, 'getSelectedItemLayer').and.returnValue({layer:mapService.map.getLayers().array_[0]});

        //fudge some data for the various calls so we can make it all the way through,
        //also note that selectedItem_ (in the service) will be mapService.map.getLayers().array_[0]
        mapService.map.getLayers().array_[0].properties = 1;
        mapService.map.getLayers().array_[0].geometry = {coordinates:[55,55]};
        mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();

        var feature1 = new ol.Feature({
          geometry: new ol.geom.Point([90, 45]),
          labelPoint: new ol.geom.Point([90, 45]),
          name: 'My Polygon'
        });
        mapService.editLayer.getSource().featuresCollection_.push(feature1);

        var feature = new ol.Feature({
          geometry: new ol.geom.Point([90, 45]),
          labelPoint: new ol.geom.Point([90, 45]),
          name: 'My Polygon'

        });
        mapService.editLayer.getSource().addFeature(feature);

        //call show to initialize some internal private vars to the service
        featureMgrService.show(mapService.map.getLayers().array_[0]);
      });

      it('should just call hide() on the service and stop displaying the pop-up', function() {
        spyOn(featureMgrService, 'hide');
        featureMgrService.endFeatureInsert(false, null, [55, 55]);
        expect(featureMgrService.hide).toHaveBeenCalled();
      });
    });

  });
  describe('startGeometryEditing', function() {
    beforeEach(function() {
      spyOn(rootScope, '$broadcast');
      spyOn(mapService,'addSelect');
      spyOn(mapService, 'addModify');
      spyOn(mapService,'selectFeature');
      spyOn(exclusiveModeService,'startExclusiveMode');

      mapService.map.layers = null;
      defer = q.defer();
      defer.resolve();
      mapService.loadLayers();
      rootScope.$apply();

      //fudge some data for the various calls so we can make it all the way through,
      mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();
      var feature = new ol.Feature({
        geometry: new ol.geom.MultiPoint([[90, 45], [120,120]]),
        labelPoint: new ol.geom.Point([90, 45]),
        name: 'My Polygon'
      });
      mapService.editLayer.getSource().featuresCollection_.push(feature);
    });

    it('should broadcast to other components that startGeometryEditing has been called', function() {
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'point'};
      featureMgrService.startGeometryEditing();
      expect(rootScope.$broadcast).toHaveBeenCalledWith('startGeometryEdit');
    });

    it('should clear the edit layer and split the geometry into separate features for editing, if the geometry is \'multi\' type', function() {
      //get the array of coordinates for the multi type;
      var multiCoords = mapService.editLayer.getSource().getFeatures()[0].getGeometry().getCoordinates();
      var numCoords = multiCoords.length;
      multiCoords =[multiCoords[numCoords-1]];
      spyOn(window, 'transformGeometry');
      spyOn(mapService.editLayer.getSource(), 'clear');
      spyOn(mapService.editLayer.getSource(), 'addFeature');
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'Multi'};

      //call the actual method
      featureMgrService.startGeometryEditing();

      expect(mapService.editLayer.getSource().clear).toHaveBeenCalled();
      expect(window.transformGeometry.calls.mostRecent().args[0].type).toBe('Multi');
      expect(window.transformGeometry.calls.mostRecent().args[0].coordinates).toEqual(multiCoords);
      expect(mapService.editLayer.getSource().addFeature).toHaveBeenCalled();
      expect(mapService.editLayer.getSource().addFeature.calls.count()).toBe(numCoords);
    });

    it('should clear the edit layer and split the geometry into separate features for editing, if the geometry is \'collection\' type', function() {
      //clear the edit layer ourselves and add a new feature comprised of multiple geometry (3 points)
      mapService.editLayer.getSource().featuresCollection_.clear();
      var featureNew = new ol.Feature({
        geometry: new ol.geom.GeometryCollection([new ol.geom.Point([90, 90]),new ol.geom.Point([66, 66]), new ol.geom.Point([45, 45])]),
        labelPoint: new ol.geom.Point([90, 45]),
        name: 'My Polygon'
      });
      mapService.editLayer.getSource().featuresCollection_.push(featureNew);

      spyOn(window, 'transformGeometry');
      spyOn(mapService.editLayer.getSource(), 'clear');
      spyOn(mapService.editLayer.getSource(), 'addFeature');
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'geometrycollection'};

      //call the actual method
      featureMgrService.startGeometryEditing();

      expect(mapService.editLayer.getSource().clear).toHaveBeenCalled();
      expect(window.transformGeometry.calls.mostRecent().args[0].type).toBe('Point');
      expect(window.transformGeometry.calls.mostRecent().args[0].coordinates).toEqual([45, 45]);
      expect(mapService.editLayer.getSource().addFeature).toHaveBeenCalled();

      //expect the number of calls to be 3 because we are dealing with 3 points
      expect(mapService.editLayer.getSource().addFeature.calls.count()).toBe(3);
    });

    it('should start the exclusive mode with \'editing_geometry\' as the main parameter', function() {
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'point'};
      featureMgrService.startGeometryEditing();
      expect(exclusiveModeService.startExclusiveMode.calls.mostRecent().args[0]).toBe(translateService.instant('editing_geometry'));
    });

    it('should call mapService.addSelect', function() {
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'point'};
      featureMgrService.startGeometryEditing();
      expect(mapService.addSelect).toHaveBeenCalled();
    });

    it('should call mapService.addModify', function() {
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'point'};
      featureMgrService.startGeometryEditing();
      expect(mapService.addModify).toHaveBeenCalled();
    });

    it('should call mapService.selectFeature', function() {
      featureMgrService.getSelectedItem().geometry = {coordinates:[55,55], type:'point'};
      featureMgrService.startGeometryEditing();
      expect(mapService.selectFeature).toHaveBeenCalled();
    });
  });
  describe('endGeometryEditing', function() {
    beforeEach(function() {
      spyOn(rootScope, '$broadcast');
      spyOn(window,'transformGeometry').and.callThrough();
      spyOn(mapService.editLayer.getSource(),'addFeature');

      mapService.map.layers = null;
      defer = q.defer();
      defer.resolve();
      mapService.loadLayers();
      rootScope.$apply();

      //fudge some data for the various calls so we can make it all the way through,
      mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();
      var feature = new ol.Feature({
        geometry: new ol.geom.MultiPoint([[90, 45], [120,120]]),
        labelPoint: new ol.geom.Point([90, 45]),
        name: 'My Polygon'
      });
      mapService.editLayer.getSource().featuresCollection_.push(feature);
    });
    describe('(save = true)', function() {
      describe('selectedItem_ geoemtry is a \'multi\' type such as ol.geom.MultiPoint etc', function() {
        beforeEach(function() {
          //trick the selectedItem_ into thinking it is a 'multi' type
          featureMgrService.getSelectedItem().geometry = {type:'MultiPoint'};

          //add 3 separate features to the edit layer that will be merged together
          mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();
          for(var i = 0; i < 3; i++)
          {
            var feature = new ol.Feature({
              geometry: new ol.geom.MultiPoint([[i*10, i*10]]),
              name: 'MyPoint'+i
            });
            mapService.editLayer.getSource().featuresCollection_.push(feature);
          }
          //call the actual method
          featureMgrService.endGeometryEditing(true);
        });

        it('should merge the separate coordinates/features from mapService.editLayer into one feature/geometry', function() {
          //make sure the merged coordinates match the separate ones we added earlier
          var mergedCoords = mapService.editLayer.getSource().addFeature.calls.mostRecent().args[0].getGeometry().getCoordinates();
          expect(mergedCoords[0]).toEqual([0,0]);
          expect(mergedCoords[1]).toEqual([10,10]);
          expect(mergedCoords[2]).toEqual([20,20]);
        });

        it('should call the global method transformGeometry with the separate coordinates to be merged', function() {
           //ensure transformGeometry was called with the correct parameters matching the data we cooked up
          var mergedCoords = mapService.editLayer.getSource().addFeature.calls.mostRecent().args[0].getGeometry().getCoordinates();
          expect(window.transformGeometry.calls.mostRecent().args[0].type).toBe('MultiPoint');
          expect(window.transformGeometry.calls.mostRecent().args[0].coordinates).toEqual(mergedCoords);
        });

        it('should issue a WFS post message with the \'update\' parameter and updated feature', function () {
          var wfsData, wfsURL;
          httpBackend.when('POST').respond(function(method, url, data, headers, params){
            wfsData = data;
            wfsURL = url;
            return {'status': 200};
          });
          httpBackend.flush();

          httpBackend.expectPOST();

          //ensure all of our cooked up coordinates made it into the xml data
          expect(wfsData.indexOf('0,0')).not.toBe(-1);
          expect(wfsData.indexOf('10,10')).not.toBe(-1);
          expect(wfsData.indexOf('20,20')).not.toBe(-1);

          //ensure that the feature type makes it into the xml as well
          expect(wfsData.indexOf('MultiPoint')).not.toBe(-1);
        });
      });

      describe('selectedItem_ geoemtry is a \'collection\' type (ol.geom.GeometryCollection)', function() {
        beforeEach(function() {
          //trick the selectedItem_ into thinking it is a 'geometrycollection' type
          featureMgrService.getSelectedItem().geometry = {type: 'GeometryCollection'};

          //add 3 separate features to the edit layer that will be merged together
          mapService.editLayer.getSource().featuresCollection_ = new ol.Collection();
          for (var i = 0; i < 3; i++) {
            var feature = new ol.Feature({
              geometry: new ol.geom.Point([i * 10, i * 10]),
              name: 'MyPoint' + i
            });
            mapService.editLayer.getSource().featuresCollection_.push(feature);
          }
          //call the actual method
          featureMgrService.endGeometryEditing(true);
        });

        it('should merge the separate geometries into a single feature, if the selectedItem type is a geometry \'collection\'', function () {
          //make sure the merged geometry coordinates match the coords from the separate features/geoms
          var mergedGeoms = mapService.editLayer.getSource().addFeature.calls.mostRecent().args[0].getGeometry().getGeometries();
          expect(mergedGeoms[0].getCoordinates()).toEqual([0, 0]);
          expect(mergedGeoms[1].getCoordinates()).toEqual([10, 10]);
          expect(mergedGeoms[2].getCoordinates()).toEqual([20, 20]);
        });

        it('should call the global method transformGeometry with the separate geometries passed in the \'coordinates\' property', function() {
           //ensure transformGeometry was called with the correct parameters matching the data we cooked up
          expect(window.transformGeometry.calls.mostRecent().args[0].type).toBe('multigeometry');

          var mergedGeoms = mapService.editLayer.getSource().addFeature.calls.mostRecent().args[0].getGeometry().getGeometries();
          //note that the coordinates property passed to the method is actually an ol.geometry object
          expect(window.transformGeometry.calls.mostRecent().args[0].coordinates[0].getCoordinates()).toEqual(mergedGeoms[0].getCoordinates());
          expect(window.transformGeometry.calls.mostRecent().args[0].coordinates[1].getCoordinates()).toEqual(mergedGeoms[1].getCoordinates());
          expect(window.transformGeometry.calls.mostRecent().args[0].coordinates[2].getCoordinates()).toEqual(mergedGeoms[2].getCoordinates());
        });

        it('should issue a WFS post message with the \'update\' parameter and updated feature', function () {
          var wfsData, wfsURL;
          httpBackend.when('POST').respond(function(method, url, data, headers, params){
            wfsData = data;
            wfsURL = url;
            return {'status': 200};
          });
          httpBackend.flush();

          httpBackend.expectPOST();

          //ensure all of our cooked up coordinates made it into the xml data
          expect(wfsData.indexOf('0,0')).not.toBe(-1);
          expect(wfsData.indexOf('10,10')).not.toBe(-1);
          expect(wfsData.indexOf('20,20')).not.toBe(-1);

          //ensure that the feature type makes it into the xml as well
          expect(wfsData.indexOf('MultiGeometry')).not.toBe(-1);
        });
      });
    });

    describe('(save = false)', function() {
      beforeEach(function() {
        spyOn(mapService, 'clearEditLayer');
        spyOn(mapService, 'addToEditLayer');

        //call the actual method
        featureMgrService.endGeometryEditing(false);
      });

      it('should clear mapService.editLayer', function() {
        expect(mapService.clearEditLayer).toHaveBeenCalled();
      });

      it('should add the selectedItem_ geometry back to the mapService.editLayer', function() {
        expect(mapService.addToEditLayer).toHaveBeenCalled();
        expect(mapService.addToEditLayer.calls.mostRecent().args[0]).toBe(featureMgrService.getSelectedItem().geometry);
      });

      it('should NOT issue a WFS post message', function() {
        httpBackend.verifyNoOutstandingRequest();
      });
    });
  });
});

redpajama_set_name: RedPajamaGithub


text:
Q: How to detect "different object types" in JavaScript? (array vs Json vs Date etc...) For the purpose of creating a condition while recursively iterating over a JSON object, I'm trying to find a clean way to differentiate different object types.
Consider this:
var aJSON     = {"foo" : 1, "bar" : 2};
var anArray   = [1,2,3,4,5];
var aDate     = new Date('2013-03-10T02:00:00Z');
var anISODate = user.timesTheyLoggedIn[0] // comes from MongoDB

console.log(typeof aJSON);     // object
console.log(typeof anArray);   // object
console.log(typeof aDate);     // object
console.log(typeof anISODate); // object

All types of objects are 'objects' with no more info.
For now, my use case only requires detecting an ISODate object, so I'm taking advantage of ISODate objects having a resetTime function to differentiate them from others, like so:
if (typeof(val) === "object" && val.resetTime === undefined) { //do stuff...

But there must be a cleaner, better way to detect what kind of object an object is, a val.isArray() kinda thing...
How would do it?
PS: "different object types" is in quotes because there really is only one object type in JS, right?

A: If they are a class, like Date, you can use instanceof like so:
(new Date() instanceof Date)

Which evaluates to true.
The same can be applied to arrays as long as you don't use iframes:
([] instanceof Array)

But you have to find your own way for types that aren't classes.
If you don't have to stick to plain JavaScript, you could switch to Typescript, where you can also describe types.

A: You can use obj.constructor.name:

var tst = 1 > 0;
var num = 3.141592;
var obj = {a:1};
var arr = [1,2];
var dat = new Date();
var xhr = new XMLHttpRequest();

console.log(tst.constructor.name);
console.log(num.constructor.name);
console.log(obj.constructor.name);
console.log(arr.constructor.name);
console.log(dat.constructor.name);
console.log(xhr.constructor.name);

I'm not sure how well this will work with e.g. the Mongo type. Please try and let us know!


Drug addiction is a very harrowing disease that requires help and attention. Individuals who live in the Denton area and suffer from alcohol or drug addiction should contact us immediately The damage that can be done both psychologically and physically can be great. The risks of physical harm is great amongst drug users. It is vital that a person who realizes that they have a drug problem get help as soon as possible. It is important to face one's addiction. We can assist you in your fight to get clean if you live in the Denton, Maryland area. Call us using the number at the top of this page.
Those with an alcohol addiction would be wise to seek treatment. If you live in Denton, we can help. There are even more people that suffer from alcoholism then drug addiction. Alcohol addiction should be taken very seriously. Admitting that a problem exists and then getting help is quite brave. Alcohol rehabilitation is one of the best ways to treat an addiction. We will be able to help individuals that live in the Denton, MD area. Call us today!.
If you live in Denton, and would like a holistic approach to rehab, we can help. Holistic treatment is concerned with healing the entire person. This is also an individualized approach. A generalized plan doesn't always work. Instead, each person needs a specialized plan. Contact our office if you need help with a drug or alcohol addiction and live in the Denton, Maryland area.
For those in Denton interested in an effective and holistic approach to rehab, DrugStrategies.org can get help. We will work tirelessly to come up with a plan that fits your particular needs. Professional, educated and well trained, all adjectives that describe our staff. Our business is helping you get free of alcohol and/or drug abuse. We can help you beat your alcohol and/or drug addiction. If you live in Denton, Maryland, please call us.


One thing which followed globalization is high employee turnover or job hopping. But transfer of one's PF Account from one employer to another was not smooth as switching jobs. But that is all gone now with the Country's largest retirement fund manager, more popularly known as EPFO (Employees Provident Fund Organization) set to start e-transfers of PF Accounts. Under the electronic transfer of PF Accounts while reducing the paper work it will drastically reduce the time.
One thing which followed globalization is high employee turnover or job hopping. But transfer of one's PF Account from one employer to another was not smooth as switching jobs. But that is all gone now with the Country's largest retirement fund manager, more popularly known as EPFO (Employees Provident Fund Organization) set to start e-transfers of PF Accounts. Under the electronic transfer of PF Accounts while reducing the paper work it will drastically reduce the time. Central PF Commissioner Samirendra Chatterjee said, ""We are working on a new software wherein a person on starting a new job can transfer her or his funds from the PF account in just about 15 days. It would work on the same lines as the online settlement of claims through the National Electronic Fund Transfer system."
Under the current system of transfer of PF accounts, one has to follow a time consuming 47 step process and against a 30 days wait, one has to wait for a much longer time, though there is provision to check the status of PF Account. Employees now in a new job fill an application form for a new PF account, along with a copy of 'Form 13' to transfer their PF money from their previous account to the new one. The employer submits this form to the regional PF office, which contacts the previous PF office and transfers the funds. However under the software, which will be operational by year end, allow all Regional PF Offices to electronically transmit details of employees accounts and balances on it. "We will soon start real-time testing of the software in our offices," Chatterjee said.
It has been decided by The Central Board of Trustees of the EPFO to stop paying interest on inoperative accounts from April 2011. Resultantly, the EPFO expects about half of these accounts to be closed, with subscribers either withdrawing their PF money or transferring it to new accounts.


text:
Bugnate is een plaats (frazione) in de Italiaanse gemeente Gozzano.

Plaats in Novara

redpajama_set_name: RedPajamaWikipedia


Join the St. Margaret Mary Men's League on the FIRST Sunday of every month for donuts and coffee in the church hall after the 8:30 and 10 AM Masses. It is a good place to spend some time with fellow parishioners and welcome new ones!
Our parish nurse is also there after the 8:30 Mass to take your blood pressure and answer any health related questions you may have.
Free will offering accepted. Hope to see you there!


Andrew Jackson used to be the 7th president of the us. often called "Old Hickory," he was once the 1st President who championed the rights of the 'common man'. initially from the frontier, he was once identified for being tough in speech and mannerisms and his fierce mood. After making his identify as a common combating the Creek Indians within the conflict of Horseshoe Bend and the British within the conflict of latest Orleans, he entered politics, leading to the production of the trendy Democratic get together. even if, Jackson is better recognized at the present time for the tough stand he took on Indian removing.
In this concise account, John Belohlavek recounts what made Jackson this type of magnetic and arguable determine in his personal time. keeping apart fact from legend, Andrew Jackson: precept and Prejudice indicates how deeply Andrew Jackson's activities and guidelines as president have affected the trendy United States.
Andrew Carnegie is remembered as one of many world's nice philanthropists. As a boy, he witnessed the benevolence of a businessman who lent his own booklet assortment to laborer's apprentices. That early adventure encouraged Carnegie to create the "Free to the folks" Carnegie Library in 1895 in Pittsburgh, Pennsylvania.
Winner of theВ Gulf South ancient Association's Michael Thomas publication Award. In trying to find Freedom after the Civil warfare: Klansman, Carpetbagger, Scalawag, and Freedman, G. Ward Hubbs makes use of a stark and iconic political comic strip to light up postwar conflicts over the which means of freedom within the American South.
 service provider John Banister (1707–1767) of Newport, Rhode Island, wore many hats: exporter, importer, wholesaler, store, money-lender, extender of credits and insurer, proprietor and clothing store of boating vessels, and send builder for the slave alternate. His lately chanced on accounting documents show his position in reworking colonial alternate in mid–18th century the United States.
Public historians operating at museums and historical websites serious about the Civil warfare period are tasked with analyzing a interval of background that is still deeply arguable. Many viewers have robust connections to old websites reminiscent of battlefields and artifacts in addition to harbor robust convictions in regards to the explanation for the struggle, its effects and the significance of slavery.


Google has many special features to help you find exactly what you' re looking for. Handphone java games download for nokia.
Explore a selection of Android applications that you can use to make your Android phone tablet, auto console , including webpages, videos , television one- of- arch the world' s information, wearable, images more.
Download Game Guardian No Root APK to alter, cheat and hack your Android games and apps and on. Get Into Action With Android Apps, iOS Games and More.
Waptrick Downloads. Download best quality mp3 music, android games and free videos from ick for Waptrick videos, Waptrick mp3 songs, Waptrick games and get the latest and the best mobile lah satu faktor dalam dunia percintaan adalah mengobral kata kata romantis buat pacar.
Tidak dipungkiri cara begini sangat efektif untuk merayu si dia, bikin dia klepek- klepek tersambar buaian kata penuh gombalan yang diluncurkan.
Feb 11, · Welcome to gsm- forum, here you find all infos about android, windows mobiles, iphones, flashing, repair, unlocking, root, development software, firmwares. The first commercially available device that could be properly referred to as a " smartphone" began as a prototype called " Angler" developed by Frank Canova in 1992 while at IBM and demonstrated in November of that year at the COMDEX computer industry trade show. A refined version was marketed to consumers in 1994 by BellSouth under the name Simon Personal early stages, every mobile phone company had its own user interface, which can be considered as " closed" operating system, since there was a minimal e on, get appy.


text:
Home Books Fleischer's Sonography in Obstetrics and Gynecology: Textbook and Teaching Cases, 8e
Chapter 27: Invasive Diagnosis of the Fetus
Invasive Diagnosis of the Fetus. In: Fleischer AC, Abramowicz JS, Gonçalves LF, Manning FA, Monteagudo A, Timor IE, Toy EC. Fleischer A.C., & Abramowicz J.S., & Gonçalves L.F., & Manning F.A., & Monteagudo A, & Timor I.E., & Toy E.C.(Eds.),Eds. Arthur C. Fleischer, et al.eds. Fleischer's Sonography in Obstetrics and Gynecology: Textbook and Teaching Cases, 8e. McGraw Hill; 2017. Accessed January 29, 2023. https://obgyn.mhmedical.com/content.aspx?bookid=2231&sectionid=172967293
Invasive diagnosis of the fetus. Fleischer AC, Abramowicz JS, Gonçalves LF, Manning FA, Monteagudo A, Timor IE, Toy EC. Fleischer A.C., & Abramowicz J.S., & Gonçalves L.F., & Manning F.A., & Monteagudo A, & Timor I.E., & Toy E.C.(Eds.),Eds. Arthur C. Fleischer, et al. (2017). Fleischer's Sonography in Obstetrics and Gynecology: Textbook and Teaching Cases, 8e. McGraw Hill. https://obgyn.mhmedical.com/content.aspx?bookid=2231&sectionid=172967293
"Invasive Diagnosis of the Fetus." Fleischer's Sonography in Obstetrics and Gynecology: Textbook and Teaching Cases, 8e Fleischer AC, Abramowicz JS, Gonçalves LF, Manning FA, Monteagudo A, Timor IE, Toy EC. Fleischer A.C., & Abramowicz J.S., & Gonçalves L.F., & Manning F.A., & Monteagudo A, & Timor I.E., & Toy E.C.(Eds.),Eds. Arthur C. Fleischer, et al. McGraw Hill, 2017, https://obgyn.mhmedical.com/content.aspx?bookid=2231&sectionid=172967293.
PART 1: CHORIONIC VILLUS SAMPLING
PART 2: AMNIOCENTESIS
PART 3: FETAL BLOOD SAMPLING
Chorionic villus sampling (CVS): an invasive procedure performed for first-trimester prenatal diagnosis. CVS is typically performed between 70 and 91 days after the LMP. In the procedure, tissue is withdrawn from the villi (vascular fingers) of the chorion, a part of the placenta, and examined.
Chorion frondosum: the cellular, outermost extraembryonic membrane composed of trophoblastic cells that develops villi and forms the fetal component of the placenta.
Fluorescent in situ hybridization (FISH): rapid method of assessing targeted chromosomal abnormalities such as trisomy 21, 18, or 13.
First-trimester screening: a method of screening for chromosomal abnormalities in the first trimester using two biochemical tests, PAPP-A and hCG, as well as sonographic nuchal translucency measurement.
Sonographically guided chorionic villus sampling (CVS) has been available in the United States since the early 1980s and has offered couples at genetic risk an early and rapid prenatal diagnosis.1 The procedure, which can be performed as early as 10 weeks of menstrual age, provides preliminary cytogenetic results within 48 hours and final culture results within 7 days. In contrast, genetic amniocentesis is not routinely performed until approximately 16 weeks of menstrual age with an additional 7 to 10 days required to culture the amniotic fluid cells. Fluorescent in situ hybridization (FISH) can be used for both techniques. Thus, the pregnancy is nearly half completed before a definitive diagnosis can be established with amniocentesis. If a significant fetal abnormality is identified, the prospective parents must make a difficult choice of whether to continue or terminate the pregnancy. Postponing this decision until the midtrimester is extremely difficult because fetal movement has been perceived and significant bonding between the parent and fetus has occurred. In addition, the pregnancy is public knowledge, thereby precluding an element of privacy in decision making. If termination is chosen, maternal risks are greater than in the first trimester, with maternal mortality being up to 5 times higher.2
Despite the advantages of CVS, the procedure has struggled to become universally accepted. This has been due predominantly to a perception that the sampling and laboratory procedures are more complex than amniocentesis. In addition, there have been concerns that the procedure may induce fetal limb defects. Recently, however, enthusiasm for CVS has been renewed. First, contemporaneous studies have demonstrated the accuracy of the laboratory results, the reliability of the sampling, and the safety of the procedure if performed after 10 weeks of gestation by experienced operators. Second, studies have established the superior safety to CVS over first trimester amniocentesis.3-5 Additionally, over the last decade, the complication rates of CVS and midtrimester amniocentesis are comparable due to the reduction of CVS problems.6 Third, the recent success of first trimester screening for fetal chromosomal abnormalities provides an impetus for a first trimester diagnostic procedure for fetal karyotype.7
CONCEPTS AND INDICATIONS FOR CHORIONIC VILLUS ...